Re: [RFC 0/8] Optional ZONE_DMA

Robert Hancock
2006-07-08T17:59:39Z

Christoph Lameter wrote:
> Optional ZONE_DMA
>
> ZONE_DMA is usually used for ISA DMA devices. Typically modern hardware
> does not have any of these anymore. We frequently do not need
> the zone anymore.
>
> This patch allows to make the configuration of the kernel for
> ZONE_DMA dependend on the user choosing to support ISA DMA.
> If ISA DMA is not supported then i386 systems f.e. can be
> configured using a single ZONE_NORMAL. The overhead of maintaining
> multiple zones and balancing page use between the different
> zone is then gone. My i386 system now runs with a single zone.
>
> On x86_64 systems also usually we do not need ZONE_DMA since there
> are barely any ISA DMA devices around (or are you still using a floppy?).
> So for most cases the zone can be dropped. Also if the x86_64 systems
> has less than 4G RAM or DMA controllers that actually can do 64 bit
> then we also do not need ZONE_DMA32. My x86_64 system has 1G of
> memory therefore I can run with a single zone.

Keep in mind that:

-LPC devices like the floppy controller, maybe enhanced parallel, etc.
may have 24-bit DMA restrictions even if there is no physical ISA bus.

-Even in totally ISA and LPC-free systems, some PCI devices (like those
that were a quick hack of an ISA device onto PCI) still have 24-bit
address restrictions. There are other devices that have sub-32-bit DMA
capabilities, like Broadcom wireless chips that only address 31 bits
(although I think they are fixing this in the driver). Without the DMA
zone there is no way to ensure that these requests can be satisfied.

So I don't think it is safe to make this conditional on ISA or even the
ISA DMA API. Only if all devices on the system have addressing
capability of a full 32 bits (or at least of all installed RAM) can this
zone be removed.

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/