2002 Linux Symposium
navigation



related

contact:

Integrating DMA into the generic device model

James Bottomley

DMA (Direct Memory Access) is a requirement for almost all device drivers nowadays. On the x86 platform, this is easy: All devices can see (and address) all physical memory. The architecture is "coherent", so updates by devices straight to memory are correctly visible to the CPU without having to worry about caching effects.

As Linux has evolved and been ported to a diverse variety of architectures, this transparent approach to DMA no longer works.

In the first half of this paper we will introduce all of the problems that can affect driver writers including: cache coherency, compiler ordering optimizations, processor speculation, IO-MMUs and PCI posting.

We will then introduce the new generic device based DMA API, describe its advantages (for both the driver writer and the arch maintainer). We will illustrate some of the advanced features of the API by reference to driver problems on the PA-RISC platform

2004
© 1999-2003 Linux Symposium.  All Rights Reserved.