19.2 How PCI Direct DMA Works Prior to OpenVMS V7.2 On all PCI based machines, the direct DMA window begins at (usually) 1Gb in PCI space, and covers physical memory beginning at 0 for 1Gb : Memory: PCI __________-\ 0 | | \ | | | | \ | | | | \ | | | | \---------------- |------ |1Gb (IOC$K_DIRECT_DMA_BASE) 1Gb |------- |-\ | | \ | | \ | | \ | | \ | | IOC$K_DIRECT_DMA_SIZE . | | \ | | / . | | \---------------- |_______|2Gb-1 . Typically drivers compare their buffer addresses against the length of the window returned by calling ioc$node_data with the ioc$k_direct_dma_size function code. This assumes that the window on the memory side starts at zero. Another pop- ular method for determining whether map registers are necessary involves looking at mmg$gl_maxpfn. This is also not likely to work correctly in OpenVMS Version 7.2-EFT3. For a much better picture and explanation See the Writing OpenVMS Device Alpha Drivers in C book.