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

From: Roland Dreier (
Date: Mon Jun 10 2002 - 23:04:30 EST

>>>>> "David" == David S Miller <> writes:

    David> Wait a second, forget all of this cache alignment crap. If
    David> we can avoid drivers seeing it, we should by all means
    David> necessary.

    David> We should just tell people to use PCI pools and be done
    David> with it. That way all the complexity about buffer
    David> alignment and all this other crapola lives strictly inside
    David> of the PCI pool code.

That's fine but there are drivers (USB, etc) doing

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

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

Do they have to change to

        struct something {
                int field1;
                char *dma_buffer;
                int field2;

        struct something *dev = kmalloc(sizeof *dev, GFP_KERNEL);
        dev->dma_buffer = kmalloc(SMALLER_THAN_CACHE_LINE, GFP_KERNEL);

(This is always safe because as you said kmalloc can never return a
slab that's not safe for DMA) I don't see how PCI pools help here.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Jun 15 2002 - 22:00:20 EST