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

From: Benjamin Herrenschmidt
Date: Fri Dec 29 2006 - 16:53:44 EST



> Bisecting has identified this commit:
>
> commit 9b7d9c096dd4e4baacc21b2588662bbb56f36c4e
> Author: Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx>
> 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@xxxxxxxxxxxxxxxxx>
>
>
> 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.


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