At Sat, 5 Jan 2013 13:13:27 +0100, Sedat Dilek wrote: > > Hi Jiri, > > ...known issue (see thread in [1]), please feel free to test patches > from Alan and Andrew (see [1], [2] and [3]) and report. > > Regards, > - Sedat - > > [1] http://marc.info/?t=135309396400003&r=1&w=2 > [2] http://ozlabs.org/~akpm/mmots/broken-out/fb-rework-locking-to-fix-lock-ordering-on-takeover.patch > [3] http://ozlabs.org/~akpm/mmots/broken-out/fb-rework-locking-to-fix-lock-ordering-on-takeover-fix.patch > [4] http://ozlabs.org/~akpm/mmots/broken-out/fb-rework-locking-to-fix-lock-ordering-on-takeover-fix-2.patch I've hit this bug and tried the patch [2] ([3] and [4] are gone). Unfortunately the deadlock is still reported, as seen below. A similar fix for fbcon_unbind(), splitting an unlocked version of unbind_con_driver() and call it? (BTW, the patch [2] contains strange characters in the comments, and has a few coding issues easily detected by checkpatch.pl.) thanks, Takashi === [ 3.228454] [drm] Initialized drm 1.1.0 20060810 [ 3.317144] [drm] radeon defaulting to kernel modesetting. [ 3.330546] [drm] radeon kernel modesetting enabled. [ 3.343942] checking generic (c0000000 1000000) vs hw (c0000000 10000000) [ 3.343946] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver [ 3.357376] [ 3.357377] ====================================================== [ 3.357378] [ INFO: possible circular locking dependency detected ] [ 3.357380] 3.8.0-rc3-test+ #82 Not tainted [ 3.357381] ------------------------------------------------------- [ 3.357383] udevd/137 is trying to acquire lock: [ 3.357394] (console_lock){+.+.+.}, at: [<ffffffff8140385f>] unbind_con_driver+0x3f/0x200 [ 3.357395] [ 3.357395] but task is already holding lock: [ 3.357402] ((fb_notifier_list).rwsem){.+.+.+}, at: [<ffffffff810799b1>] __blocking_notifier_call_chain+0x51/0xc0 [ 3.357403] [ 3.357403] which lock already depends on the new lock. [ 3.357403] [ 3.357404] [ 3.357404] the existing dependency chain (in reverse order) is: [ 3.357407] [ 3.357407] -> #1 ((fb_notifier_list).rwsem){.+.+.+}: [ 3.357411] [<ffffffff810b605a>] lock_acquire+0xaa/0x210 [ 3.357417] [<ffffffff81643dc2>] down_read+0x42/0x57 [ 3.357419] [<ffffffff810799b1>] __blocking_notifier_call_chain+0x51/0xc0 [ 3.357422] [<ffffffff81079a31>] blocking_notifier_call_chain+0x11/0x20 [ 3.357426] [<ffffffff8138cbe6>] fb_notifier_call_chain+0x16/0x20 [ 3.357428] [<ffffffff8138e302>] register_framebuffer+0x1c2/0x2f0 [ 3.357433] [<ffffffff81d1748e>] vesafb_probe+0x6e0/0x760 [ 3.357437] [<ffffffff8142afbe>] platform_drv_probe+0x3e/0x70 [ 3.357440] [<ffffffff81428d26>] driver_probe_device+0x86/0x390 [ 3.357442] [<ffffffff814290d3>] __driver_attach+0xa3/0xb0 [ 3.357445] [<ffffffff81426dbd>] bus_for_each_dev+0x4d/0x90 [ 3.357447] [<ffffffff814286a9>] driver_attach+0x19/0x20 [ 3.357450] [<ffffffff81428308>] bus_add_driver+0x1a8/0x290 [ 3.357452] [<ffffffff81429792>] driver_register+0x72/0x170 [ 3.357455] [<ffffffff8142a7e1>] platform_driver_register+0x41/0x50 [ 3.357458] [<ffffffff8142a806>] platform_driver_probe+0x16/0xa0 [ 3.357460] [<ffffffff81d16d6b>] vesafb_init+0x215/0x258 [ 3.357464] [<ffffffff810002e2>] do_one_initcall+0x122/0x180 [ 3.357468] [<ffffffff816258ec>] kernel_init+0x1fc/0x370 [ 3.357471] [<ffffffff8164e1fc>] ret_from_fork+0x7c/0xb0 [ 3.357474] [ 3.357474] -> #0 (console_lock){+.+.+.}: [ 3.357476] [<ffffffff810b5055>] __lock_acquire+0x1385/0x1cc0 [ 3.357478] [<ffffffff810b605a>] lock_acquire+0xaa/0x210 [ 3.357482] [<ffffffff81048fbf>] console_lock+0x6f/0x80 [ 3.357485] [<ffffffff8140385f>] unbind_con_driver+0x3f/0x200 [ 3.357489] [<ffffffff8139aeb7>] fbcon_event_notify+0x447/0x8b0 [ 3.357492] [<ffffffff8164a225>] notifier_call_chain+0x55/0x110 [ 3.357495] [<ffffffff810799c7>] __blocking_notifier_call_chain+0x67/0xc0 [ 3.357497] [<ffffffff81079a31>] blocking_notifier_call_chain+0x11/0x20 [ 3.357500] [<ffffffff8138cbe6>] fb_notifier_call_chain+0x16/0x20 [ 3.357502] [<ffffffff8138debb>] do_unregister_framebuffer+0x5b/0x110 [ 3.357505] [<ffffffff8138e108>] do_remove_conflicting_framebuffers+0x158/0x190 [ 3.357507] [<ffffffff8138e46a>] remove_conflicting_framebuffers+0x3a/0x60 [ 3.357532] [<ffffffffa00df16b>] radeon_pci_probe+0x8b/0xd0 [radeon] [ 3.357536] [<ffffffff8136d5a6>] local_pci_probe+0x46/0x80 [ 3.357539] [<ffffffff8136d7f1>] pci_device_probe+0x101/0x110 [ 3.357542] [<ffffffff81428d26>] driver_probe_device+0x86/0x390 [ 3.357544] [<ffffffff814290d3>] __driver_attach+0xa3/0xb0 [ 3.357547] [<ffffffff81426dbd>] bus_for_each_dev+0x4d/0x90 [ 3.357549] [<ffffffff814286a9>] driver_attach+0x19/0x20 [ 3.357552] [<ffffffff81428308>] bus_add_driver+0x1a8/0x290 [ 3.357554] [<ffffffff81429792>] driver_register+0x72/0x170 [ 3.357557] [<ffffffff8136c60f>] __pci_register_driver+0x5f/0x70 [ 3.357577] [<ffffffffa006ec3a>] drm_pci_init+0x11a/0x130 [drm] [ 3.357594] [<ffffffffa01c20ec>] radeon_init+0xec/0x1000 [radeon] [ 3.357597] [<ffffffff810002e2>] do_one_initcall+0x122/0x180 [ 3.357600] [<ffffffff810c4b53>] load_module+0x1043/0x1510 [ 3.357603] [<ffffffff810c50f7>] sys_init_module+0xd7/0x120 [ 3.357605] [<ffffffff8164e2ad>] system_call_fastpath+0x1a/0x1f [ 3.357606] [ 3.357606] other info that might help us debug this: [ 3.357606] [ 3.357607] Possible unsafe locking scenario: [ 3.357607] [ 3.357608] CPU0 CPU1 [ 3.357609] ---- ---- [ 3.357611] lock((fb_notifier_list).rwsem); [ 3.357613] lock(console_lock); [ 3.357615] lock((fb_notifier_list).rwsem); [ 3.357616] lock(console_lock); [ 3.357617] [ 3.357617] *** DEADLOCK *** [ 3.357617] [ 3.357619] 5 locks held by udevd/137: [ 3.357624] #0: (&__lockdep_no_validate__){......}, at: [<ffffffff81429083>] __driver_attach+0x53/0xb0 [ 3.357628] #1: (&__lockdep_no_validate__){......}, at: [<ffffffff81429091>] __driver_attach+0x61/0xb0 [ 3.357633] #2: (registration_lock){+.+.+.}, at: [<ffffffff8138e45b>] remove_conflicting_framebuffers+0x2b/0x60 [ 3.357637] #3: (&fb_info->lock){+.+.+.}, at: [<ffffffff8138d0c1>] lock_fb_info+0x21/0x60 [ 3.357642] #4: ((fb_notifier_list).rwsem){.+.+.+}, at: [<ffffffff810799b1>] __blocking_notifier_call_chain+0x51/0xc0 [ 3.357643] [ 3.357643] stack backtrace: [ 3.357645] Pid: 137, comm: udevd Not tainted 3.8.0-rc3-test+ #82 [ 3.357646] Call Trace: [ 3.357652] [<ffffffff8163b136>] print_circular_bug+0x1fb/0x20c [ 3.357655] [<ffffffff810b5055>] __lock_acquire+0x1385/0x1cc0 [ 3.357658] [<ffffffff810b605a>] lock_acquire+0xaa/0x210 [ 3.357661] [<ffffffff8140385f>] ? unbind_con_driver+0x3f/0x200 [ 3.357664] [<ffffffff810b2b0d>] ? trace_hardirqs_on+0xd/0x10 [ 3.357667] [<ffffffff81048fbf>] console_lock+0x6f/0x80 [ 3.357670] [<ffffffff8140385f>] ? unbind_con_driver+0x3f/0x200 [ 3.357673] [<ffffffff8140385f>] unbind_con_driver+0x3f/0x200 [ 3.357676] [<ffffffff8134c01e>] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 3.357680] [<ffffffff8139aeb7>] fbcon_event_notify+0x447/0x8b0 [ 3.357683] [<ffffffff8164a225>] notifier_call_chain+0x55/0x110 [ 3.357685] [<ffffffff810799c7>] __blocking_notifier_call_chain+0x67/0xc0 [ 3.357688] [<ffffffff81079a31>] blocking_notifier_call_chain+0x11/0x20 [ 3.357690] [<ffffffff8138cbe6>] fb_notifier_call_chain+0x16/0x20 [ 3.357693] [<ffffffff8138debb>] do_unregister_framebuffer+0x5b/0x110 [ 3.357696] [<ffffffff8138e108>] do_remove_conflicting_framebuffers+0x158/0x190 [ 3.357698] [<ffffffff8138e46a>] remove_conflicting_framebuffers+0x3a/0x60 [ 3.357717] [<ffffffffa00df16b>] radeon_pci_probe+0x8b/0xd0 [radeon] [ 3.357721] [<ffffffff8136d5a6>] local_pci_probe+0x46/0x80 [ 3.357724] [<ffffffff8136d7f1>] pci_device_probe+0x101/0x110 [ 3.357727] [<ffffffff81428d26>] driver_probe_device+0x86/0x390 [ 3.357729] [<ffffffff814290d3>] __driver_attach+0xa3/0xb0 [ 3.357732] [<ffffffff81429030>] ? driver_probe_device+0x390/0x390 [ 3.357734] [<ffffffff81426dbd>] bus_for_each_dev+0x4d/0x90 [ 3.357737] [<ffffffff814286a9>] driver_attach+0x19/0x20 [ 3.357740] [<ffffffff81428308>] bus_add_driver+0x1a8/0x290 [ 3.357744] [<ffffffffa01c2000>] ? 0xffffffffa01c1fff [ 3.357747] [<ffffffff81429792>] driver_register+0x72/0x170 [ 3.357749] [<ffffffffa01c2000>] ? 0xffffffffa01c1fff [ 3.357752] [<ffffffff8136c60f>] __pci_register_driver+0x5f/0x70 [ 3.357762] [<ffffffffa006ec3a>] drm_pci_init+0x11a/0x130 [drm] [ 3.357764] [<ffffffffa01c2000>] ? 0xffffffffa01c1fff [ 3.357767] [<ffffffffa01c2000>] ? 0xffffffffa01c1fff [ 3.357784] [<ffffffffa01c20ec>] radeon_init+0xec/0x1000 [radeon] [ 3.357786] [<ffffffff810002e2>] do_one_initcall+0x122/0x180 [ 3.357789] [<ffffffff810c4b53>] load_module+0x1043/0x1510 [ 3.357792] [<ffffffff8135d260>] ? ddebug_proc_open+0xb0/0xb0 [ 3.357796] [<ffffffff810c50f7>] sys_init_module+0xd7/0x120 [ 3.357798] [<ffffffff8164e2ad>] system_call_fastpath+0x1a/0x1f -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html