Re: 2.6.33-mmotm0304 - lockdep warning in ACPI code

From: Greg KH
Date: Thu Mar 18 2010 - 16:42:44 EST


On Thu, Mar 18, 2010 at 01:36:58PM -0700, Andrew Morton wrote:
> On Tue, 09 Mar 2010 03:46:10 -0500
> Valdis.Kletnieks@xxxxxx wrote:
>
> > Seen in my dmesg. Appears to have started in 2.6.33-rc7-mmotm0210, I can't
> > remember if I reported it before or not...
> >
> > [ 0.212297] ACPI: Using IOAPIC for interrupt routing
> > [ 0.340075]
> > [ 0.340076] =============================================
> > [ 0.340241] [ INFO: possible recursive locking detected ]
> > [ 0.340330] 2.6.33-mmotm0304 #5
> > [ 0.340415] ---------------------------------------------
> > [ 0.340504] swapper/1 is trying to acquire lock:
> > [ 0.340591] (&dev->mutex){+.+...}, at: [<ffffffff812fddfd>] __driver_attach+0x47/0x80
> > [ 0.340926]
> > [ 0.340927] but task is already holding lock:
> > [ 0.340999] (&dev->mutex){+.+...}, at: [<ffffffff812fddef>] __driver_attach+0x39/0x80
> > [ 0.340999]
> > [ 0.340999] other info that might help us debug this:
> > [ 0.340999] 1 lock held by swapper/1:
> > [ 0.340999] #0: (&dev->mutex){+.+...}, at: [<ffffffff812fddef>] __driver_attach+0x39/0x80
> > [ 0.340999]
> > [ 0.340999] stack backtrace:
> > [ 0.340999] Pid: 1, comm: swapper Not tainted 2.6.33-mmotm0304 #5
> > [ 0.340999] Call Trace:
> > [ 0.340999] [<ffffffff810645e7>] __lock_acquire+0xc74/0xceb
> > [ 0.340999] [<ffffffff81062a4f>] ? mark_lock+0x2d/0x22c
> > [ 0.340999] [<ffffffff812fddfd>] ? __driver_attach+0x47/0x80
> > [ 0.340999] [<ffffffff81064753>] lock_acquire+0xf5/0x112
> > [ 0.340999] [<ffffffff812fddfd>] ? __driver_attach+0x47/0x80
> > [ 0.340999] [<ffffffff81062ca0>] ? mark_held_locks+0x52/0x70
> > [ 0.340999] [<ffffffff81581bb5>] __mutex_lock_common+0x5c/0x5aa
> > [ 0.340999] [<ffffffff812fddfd>] ? __driver_attach+0x47/0x80
> > [ 0.340999] [<ffffffff81571004>] ? klist_next+0x24/0xd7
> > [ 0.340999] [<ffffffff812fddfd>] ? __driver_attach+0x47/0x80
> > [ 0.340999] [<ffffffff812fddb6>] ? __driver_attach+0x0/0x80
> > [ 0.340999] [<ffffffff815821a9>] mutex_lock_nested+0x34/0x39
> > [ 0.340999] [<ffffffff812fddfd>] __driver_attach+0x47/0x80
> > [ 0.340999] [<ffffffff812fddb6>] ? __driver_attach+0x0/0x80
> > [ 0.340999] [<ffffffff812fddb6>] ? __driver_attach+0x0/0x80
> > [ 0.340999] [<ffffffff812fd31f>] bus_for_each_dev+0x54/0x89
> > [ 0.340999] [<ffffffff812fdb66>] driver_attach+0x19/0x1b
> > [ 0.340999] [<ffffffff812fd7b1>] bus_add_driver+0xb4/0x203
> > [ 0.340999] [<ffffffff812fe10f>] driver_register+0xb8/0x129
> > [ 0.340999] [<ffffffff8123af12>] acpi_bus_register_driver+0x3e/0x40
> > [ 0.340999] [<ffffffff81b4aaa4>] acpi_ec_init+0x37/0x55
> > [ 0.340999] [<ffffffff81b4a920>] acpi_init+0x101/0x116
> > [ 0.340999] [<ffffffff81b4a81f>] ? acpi_init+0x0/0x116
> > [ 0.340999] [<ffffffff810001ef>] do_one_initcall+0x59/0x14e
> > [ 0.340999] [<ffffffff81b2c687>] kernel_init+0x14d/0x1d7
> > [ 0.340999] [<ffffffff810033d4>] kernel_thread_helper+0x4/0x10
> > [ 0.340999] [<ffffffff81584040>] ? restore_args+0x0/0x30
> > [ 0.340999] [<ffffffff81b2c53a>] ? kernel_init+0x0/0x1d7
> > [ 0.340999] [<ffffffff810033d0>] ? kernel_thread_helper+0x0/0x10
> > [ 0.341046] ACPI: EC: GPE = 0x11, I/O: command/status = 0x934, data = 0x930
> >
>
> <looks at mainline's 8e9394ce2412254ec69fd2a4f3e44a66eade2297>
>
> In the future, we are going to be changing the lock type for struct
> device (once we get the lockdep infrastructure properly worked out)
>
> <looks at linux-next's "drivers/base: Convert dev->sem to mutex">
>
> Seems that the latter patch (from Greg and Thomas) went and did the
> mutex conversion before "we got the lockdep infrastructure properly
> worked out".

Peter and Thomas have a lockdep patch that resolves this, I thought it
was going in through one of their trees, but in talking with them
yesterday, I was wrong. I will be adding the patch to my tree, right
before the "convert to mutex" patch, so this will not show up in the
future.

thanks,

greg k-h
--
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/