Table of Contents

Linux DMA

DMA Zone

Reference: http://www.makelinux.net/books/lkd2/ch11lev1sec2

Because of hardware limitations, the kernel cannot treat all pages as identical. Some pages, because of their physical address in memory, cannot be used for certain tasks. Because of this limitation, the kernel divides pages into different zones. The kernel uses the zones to group pages of similar properties. In particular, Linux has to deal with two shortcomings of hardware with respect to memory addressing:

Some hardware devices are capable of performing DMA (direct memory access) to only certain memory addresses.

Some architectures are capable of physically addressing larger amounts of memory than they can virtually address. Consequently, some memory is not permanently mapped into the kernel address space.

Because of these constraints, there are three memory zones in Linux:

These zones are defined in <linux/mmzone.h>.