Page 1 of 1

The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 9:45 am
by Isaac
How do modern Operating Systems get around the 16MB DMA limitation?

Re: The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 11:08 am
by Combuster
On the most recent systems: They don't use it. :wink:

On the somewhat less recent systems: They withhold RAM in the first 16MB until explicitly requested by a driver, or when RAM runs out and the driver should have already claimed what it needs.

Re: The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 11:13 am
by Isaac
So on what do they use instead?

Re: The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 11:35 am
by Combuster
DMA. :wink:

The 16MB limit is imposed by ISA devices, and ISA DMA you may actually encounter are the floppy drive and SoundBlasters.

The rest uses busmastering for DMA, which has no 16MB limit (though possibly a 32-bit one).

Re: The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 11:56 am
by Isaac
Is this other type of DMA controlled by the same DMA controllers? If it is, how can it be 32 bit?

Re: The 16 MB DMA limitation

Posted: Tue Jan 27, 2015 12:30 pm
by Marionumber1
Newer devices, including PCI ones, use bus-mastering DMA. It allows one device to temporarily take over the PCI bus and directly access system memory. Bus-mastering DMA supports 32-bit addresses, and I believe newer PCI controllers also support 64-bit addressing.