Hello,
I have some questions related to the use of PAE for access to memory beyond 4G
in 32-bit Windows drivers. I'm trying to understand how a PCI device which
supports dual address cycles works in conjunction with a device driver running
on a system with PAE enabled.
As I understand it any memory that the system provides can be either above or
below the 4G mark.
If a driver calls IoGetDmaAdapter with Dma32BitAddresses set to TRUE (and
Dma64bitAddresses set to FALSE), does this mean that when AllocateCommonBuffer
is called that it will only give memory which is physically below 4G? Or does
it mean that the memory can be anywhere, but the "logical" address it returns
will always be a 32-bit quantity? Or is there some other interpretation?
In my case, the device only wants to receive 32-bit host memory addresses
to access, but we do want the device to be able take advantage of the
upper memory, if possible.
Also, if for some reason we did want to restrict the memory for this device to
the lower 4G of memory, is there a way to specify it? We might want to
support some device types which can support DAC and some which do not in the
same driver at the same time.
Thanks,
Nathan