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

Roland Dreier
2002-06-11T04:39:31Z

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