powerpc: DMA coherent allocations broken for CONFIG_NOT_COHERENT_CACHE

Sean MacLennan smaclennan at pikatech.com
Thu May 28 13:34:51 EST 2009


On Mon, 25 May 2009 14:33:43 +1000
Benjamin Herrenschmidt <benh at kernel.crashing.org> wrote:

> This is going to .30 if nobody hollers. I've done some testing here
> and it seems to be fine, but more eyes at this stage are much welcome.

Sigh, I didn't get a chance to look at this until tonight. I use
__dma_alloc_coherent in one of the warp drivers because I don't have a
device to pass to dma_alloc_coherent. I was hoping to put it off until
the summer.

I assume I am scuppered without a device:

[  260.101751] coherent allocation too big (requested 0x5000 mask 0x0)
[  260.108054] pikadma: Unable to allocate SGL

This is with a NULL passed as the device. And it looks
like if the device is null, it just defaults to ISA_DMA_THRESHOLD,
which is 0 as shown above.

Is there a global platform device or something similar that I can
piggyback off of? There is no bus associated with this driver, so no
device.

Maybe set ISA_DMA_THRESHOLD somewhere? Some platforms seem to set it:

./platforms/52xx/efika.c:       ISA_DMA_THRESHOLD = ~0L;
./platforms/amigaone/setup.c:           ISA_DMA_THRESHOLD = 0x00ffffff;
./platforms/chrp/setup.c:       ISA_DMA_THRESHOLD = ~0L;
./platforms/powermac/setup.c:   ISA_DMA_THRESHOLD = ~0L;

So if anybody knows another way around this? The driver is basically
allocating a scatter gather list that is passed to a DMA engine in the
FPGA.

This isn't a showstopper.... we are not planning to move to 2.6.30 in
the near future.

Cheers,
   Sean



More information about the Linuxppc-dev mailing list