2.6.20-rc2: kernel BUG at include/asm/dma-mapping.h:110!

Benjamin Herrenschmidt benh at kernel.crashing.org
Sat Dec 30 08:52:51 EST 2006


> Bisecting has identified this commit:
> 
> commit 9b7d9c096dd4e4baacc21b2588662bbb56f36c4e
> Author: Stefan Richter <stefanr at s5r6.in-berlin.de>
> Date:   Wed Nov 22 21:44:34 2006 +0100
> 
>     ieee1394: sbp2: convert from PCI DMA to generic DMA
>     
>     API conversion without change in functionality
>     
>     Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
> 
> 
> I'm only seeing this on ppc64, ppc32 seems to be working fine.

The patch looks totally bogus to me. It's passing a random struct device
from the hbsp host data structure to the dma_map_* routines. which they
can't do anything about.

The dma_map_* routines only know about some bus types. That's always
been the case (that's why you also can't pass a usb device's struct
device to them for example). Mostly, PCI, possibly others depending on
the platform.

So if you are to pass a struct device pointer to dma_map_*, use the one
inside the pci_dev of the host. Or have the host driver provide you with
the struct device pointer (which is the one from the pci_dev * for PCI
implementations, and others give you what they are on, assuming the
platform can do dma-* on that device).

Ben.





More information about the Linuxppc-dev mailing list