Re: PCI DMA to small buffers on cache-incoherent arch

Roland Dreier (roland@topspin.com)
10 Jun 2002 21:39:27 -0700


struct something {
int field1;
char dma_buffer[SMALLER_THAN_CACHE_LINE];
int field2;
};

struct something *dev = kmalloc(sizeof *dev, GFP_KERNEL);

David> How about allocating struct something using pci_pool?

The problem is the driver can't safely touch field1 or field2 near the
DMA (it might pull the cache line back in too soon, or dirty the cache
line and have it written back on top of DMA'ed data)

Best,
Roland

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