19.3 How PCI Direct DMA Works in OpenVMS Version 7.2
Galaxy and memory hole considerations force us to possibly
change the placement of the Direct DMA window.
Memory: PCI
| |
| |
| |
IOC$K_DIRECT_DMA_BASE_PA:
__________-\
| | \ | |
| | \ | |
| | \ | |
| | \---------------- |------ |1Gb (IOC$K_DDMA_BASE_BA)
|------- |-\ | | \
| | \ | | \
| | \ | | IOC$K_DDMA_WIN_SIZE
| | \ | | /
| | \---------------- |_______|2Gb-1
It is unknown from the drivers perspective where in memory
the base of the Direct DMA window will be. Simply com-
paring a buffer address against the length of the window
will no longer be sufficient to determine if a buffer is within
the Direct DMA window. Also, comparing against mmg$gl_
maxpfn will no longer guarantee that all of pool is within the
window. The correct cell to check is mmg$gl_max_node_
pfn. Additionally, alignment concerns may require an slightly
different offset be incorporated into physical bus address
calculations.