[Nouveau] Questions about some PFB registers on NVAC cards

Robert Morell rmorell at nvidia.com
Wed Nov 26 10:52:33 PST 2014


On Wed, Oct 22, 2014 at 12:55:23AM +0200, pierre.morrow at free.fr wrote:
[...]
> After some investigation, I found that enabling bit 1 of register 100c14 fixes
> the issue on that card. Other NVAC cards are working great without that trick,
> and it seems they have that bit enabled by default. What is the role of that
> bit, and when should it be turned on?

Register 100c14 controls a feature of the integrated GPU's memory interface
called the "poller".  The pollers exist on MCP77/78 and MCP79/7A to ensure
that certain types of writes have flushed all the way to system memory.  (I
think this is needed to ensure proper ordering of memory transactions.)

There are actually three important bits in that register, which control three
pollers:

NV_PFB_NISO_POLLER_CFG                                                0x00100c14
NV_PFB_NISO_POLLER_CFG_DNISO_ENABLE                                          0:0
NV_PFB_NISO_POLLER_CFG_DNISO_ENABLE_DISABLED                          0x00000000
NV_PFB_NISO_POLLER_CFG_DNISO_ENABLE_ENABLED                           0x00000001
NV_PFB_NISO_POLLER_CFG_HOSTNB_ENABLE                                         1:1
NV_PFB_NISO_POLLER_CFG_HOSTNB_ENABLE_DISABLED                         0x00000000
NV_PFB_NISO_POLLER_CFG_HOSTNB_ENABLE_ENABLED                          0x00000001
NV_PFB_NISO_POLLER_CFG_FLUSH_ENABLE                                        16:16
NV_PFB_NISO_POLLER_CFG_FLUSH_ENABLE_DISABLED                          0x00000000
NV_PFB_NISO_POLLER_CFG_FLUSH_ENABLE_ENABLED                           0x00000001

> Before enabling 100c14's bit 1, the Nvidia driver writes some value into 100c1c.
> Leaving the default value, or writing some random value seemed to have no
> effect. What is this register used for?

100c1c is one of three registers which control the (upper bits of the 32-byte
aligned) memory locations that the pollers use:

#define NV_PFB_NISO_POLLER_DNISO_BASE_ADR                     0x00100C18
#define NV_PFB_NISO_POLLER_HOSTNB_BASE_ADR                    0x00100C1C
#define NV_PFB_NISO_FLUSH_CARVEOUT_ADR                        0x00100C24

Each of these should point to at least 32 bytes of otherwise-unused FB
memory, if the poller is enabled.

The proprietary driver enables all three pollers for GPUs that have them, when
memory is not local (i.e., when using a sysmem carveout rather than dedicated
video memory).

I'm not sure why this seems to only be necessary on some systems and not
others.

- Robert


More information about the Nouveau mailing list