Re: [RFC 0/8] Optional ZONE_DMA

From: Robert Hancock
Date: Sat Jul 08 2006 - 13:58:45 EST


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@xxxxxxxxxxxxx
Home Page: http://www.roberthancock.com/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/