19.4 IOC$NODE_DATA Changes to Support Non-zero
Direct DMA Windows
To alleviate this problem, new function codes have been added
to ioc$node_data. Here is a list of all the codes relating to
direct DMA, and a description of what the data means.
IOC$K_DIRECT_DMA_ This is the base address on the PCI
BASE side, or bus address. There is a syn-
onym for this function code called
IOC$K_DDMA_BASE_BA.
IOC$DIRECT_DMA_SIZE On non-Galaxy machines, this re-
turns the size of the direct DMA
window (in megabytes). On a system
where the direct DMA window does
not start at zero, the data returned
is zero, implying no direct DMA
windows exist.
IOC$K_DDMA_WIN_SIZE On all systems (as of x6jh) this will
always return the size of the direct
DMA window (in megabytes).
IOC$K_DIRECT_DMA_ This is the base physical address in
BASE_PA memory of the direct DMA window. It
is probably closely related to mmg$gl_
min_node_pfn, but may be slightly
different due to alignment concerns.
The address returned with the IOC$K_DIRECT_DMA_
BASE_PA code is necessary to compute the offset.(This usu-
ally used to be the 1Gb difference between the memory PA
and the bus address).The offset is defined as the signed dif-
ference between the base bus address and the base memory
address. This is now not necessarily 1Gb.