Re: PCI DMA into USER space

From: David Hinds (dhinds@valinux.com)
Date: Wed Jun 14 2000 - 15:46:46 EST


I don't quite understand all of this discussion: I think there is some
confusion about terminology.

I think of DMA as involving a "third party" DMA controller which,
independent of the CPU or target device, is copying data between
system memory and the target. For example, sound cards and the floppy
driver that use the 8237 DMA controller. PCI devices mostly don't use
DMA and I don't think most systems have PCI DMA controllers. Most PCI
devices either use memory mapped IO, or bus mastering operations.

I don't know if there is really any speed advantage to using memory
mapped IO or bus mastering operations; I think the only difference at
the bus level is which device is the initiator of the transaction.
There is of course a difference in host CPU utilization.

I know of lots of PCI cards that use shared memory IO for register
access but I think most are bus mastering for packet memory. The PCI
host bridge should always support prefetch and write posting for
system memory.

Russell King says "most shared PCI memory is not prefetchable"; that's
true only because it makes more sense to design devices to use bus
mastering for stuff that is prefetchable, to leave the CPU out of the
loop, not because one or the other gives better PCI bus throughput.

-- Dave Hinds

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



This archive was generated by hypermail 2b29 : Thu Jun 15 2000 - 21:00:33 EST