Hello,

I try to make e1000 work with my porting of DDE Linux26. After I tested the
code, it seems the variables in the transmission queue, which are access by the
device with DMA, are not changed by the device after a packet is transmitted.
antrik suggested that it might be related to cache coherency.

I googled it and found an article
http://kerneltrap.org/mailarchive/linux-kernel/2008/4/29/1657814, which clearly
states "DMA (with a few very special cases as
exception that are beyond the scope of this document) is cache coherent with
the CPU on a PC. PCI MMIO regions and other similar pieces of device memory
are NOT cache coherent." Later it states that "On PCs, if the BIOS is not too
buggy, the BIOS will set up the MTRRs such that all regular memory is cachable,
and that all MMIO space is set to uncachable".

So does the driver need to consider about cache coherency problems on PC when
interacting with the external device?

Zheng Da


Reply via email to