How PCI Direct-Mapped
DMA Works in Current Versions of OpenVMS
Galaxy
and memory-hole considerations force OpenVMS to change the placement
of the direct-mapped DMA window, as shown in
OpenVMS DMA.
Figure 2 OpenVMS DMA
It is unknown from the driver's perspective where in memory
the base of the direct-mapped DMA window will be. Simply comparing
a buffer address against the length of the window is not enough
to determine whether a buffer is within the direct-mapped DMA window.
Also, comparing against MMG$GL_MAXPFN will no longer guarantee that
all of the pool is within the window. The correct cell to check
is MMG$GL_MAX_NODE_PFN. Additionally, alignment concerns may require
that a slightly different offset be incorporated into physical bus address
calculations.