Hi Joerg and Ohad,

Ping ? I've discussed this with Ohad last week, and we agreed that there was 
indeed an issue with the IOMMU subsystem and/or the OMAP3 IOMMU driver. Could 
you please have a look at my explanation below ?

On Thursday 16 February 2012 07:46:58 Laurent Pinchart wrote:
> On Tuesday 14 February 2012 11:44:37 Joerg Roedel wrote:
> > On Mon, Feb 13, 2012 at 09:28:30AM +0800, James wrote:
> > > >> @@ -28,6 +28,7 @@ obj-$(CONFIG_XEN)           += xen/
> > > >> 
> > > >>  # regulators early, since some subsystems rely on them to initialize
> > > >>  obj-$(CONFIG_REGULATOR)              += regulator/
> > > >> 
> > > >> +obj-$(CONFIG_IOMMU_SUPPORT)  += iommu/
> > > >> 
> > > >>  # tty/ comes before char/ so that the VT console is the boot-time
> > > >>  # default.
> > > >> 
> > > >> @@ -125,7 +126,6 @@ obj-y                             += clk/
> > > >> 
> > > >>  obj-$(CONFIG_HWSPINLOCK)     += hwspinlock/
> > > >>  obj-$(CONFIG_NFC)            += nfc/
> > > >> 
> > > >> -obj-$(CONFIG_IOMMU_SUPPORT)  += iommu/
> > > >> 
> > > >>  # Virtualization drivers
> > > >>  obj-$(CONFIG_VIRT_DRIVERS)   += virt/
> > 
> > I don't see how this patch solves a problem like below.
> > 
> > > [    3.663269] Unable to handle kernel NULL pointer dereference at
> > > virtual
> > > address 00000058
> 
> [snip]
> 
> > > [<c03eeac4>] (klist_next+0x10/0xb4) from [<c024deb8>]
> > > (next_device+0x8/0x14)
> > > [<c024deb8>] (next_device+0x8/0x14) from [<c024df28>]
> > > (driver_find_device+0x64/0x7c)
> > > [<c024df28>] (driver_find_device+0x64/0x7c) from [<c02e9578>]
> > > (isp_probe+0x228/0xa34)
> 
> [snip]
> 
> > This looks more like data corruption or something. But this is definitly
> > not caused by some random order in the Makefile.
> > Please debug this issue down to the real cause. Bisecting may help here.
> 
> There's actually a line missing from the backtrace for some reason.
> 
> isp_probe() calls iommu_attach_device(), which ends up calling
> omap_iommu_attach(). That function then calls driver_find_device(), passing
> it omap_iommu_driver.driver as its first argument. However, as the OMAP3
> ISP driver is linked in the kernel before the OMAP3 IOMMU driver,
> omap_iommu_init() has not be called yet by this time.
> omap_iommu_driver.driver is thus uninitialized, and klist iteration oopses
> as the linked list head is NULL.

-- 
Regards,

Laurent Pinchart
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to