Re: Can we remove the Zone_DMA?

From: Joerg Roedel
Date: Sun Apr 04 2010 - 05:07:52 EST


On Sun, Apr 04, 2010 at 12:21:54PM +0800, tek-life wrote:
> Iâm a newbie on the linux kernel. Now I am reading the source code of
> Linux . I have a question in the following about ZONE_DMA.
>
>
> In Linux , The Memory is divided to three zone. They are ZONE_DMA
> ãZONE_NORMAL and ZONE_HIGHMEM. From the book of "Undstand the Linux
> kernel ", the ZONE_DMA has the effect that the Direct Memory Access
> (DMA) processors for old ISA buses have a strong limitation: they are
> able to address only the first 16 MB of RAM. SO ,we must set a zone
> for the DMA on ISA bus. And I suspect that the hardware has
> developed so quickly .And in this days the ISA has been weeded out.
> And so ,if we not defined the ZONE_DMA, is the system be effected? And
> why not remove ZONE_DMA from the kernel . If it cannât to do soïthe
> compatibility is the only reason?

There are a couple of reasons to keep ZONE_DMA. It is not used by ISA
device drivers exclusivly. Old style PCI devices may have small DMA
masks (so they could address between 16 MB and 4GB depending on the
device) too. Drivers for these devices often use ZONE_DMA as a fallback
if they can't allocate memory addressable by the device using
ZONE_NORMAL. So there is a use for ZONE_DMA with 32bit PCI too.
(And I also remember I have seen an AM2 board with an ISA slot for
embedded purposes too, so ISA is not completly dead)

Joerg

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