Re: [RFC 0/8] Optional ZONE_DMA

Andi Kleen
2006-07-10T00:04:39Z

> > 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:

Yes we can't really make it optional. There are reasons to use GFP_DMA
even without ISA. Also on x86-64 CONFIG_ISA is never set so it would
completely eliminate GFP_DMA, which we can't do.

That said however nearly users of GFP_DMA outside arch/* are wrong.
They should be all audited and convered to use the PCI DMA API instead.

> -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.

There are also devices with 31 or 30 bits that also fall back to GFP_DMA
and a couple of other cases.

-Andi