Hello, The following happens on my test machine which has an on-board VGA which is not connected. The failure is expected but, in the failure path, it calls radeon_irq_kms_fini() which flushes @rdev->*_work when @rdev seemingly hasn't gone through radeon_irq_kms_init(), ending up trying to flush uninitialized work items triggering the following lockdep warning. Well, at least, that's what I think is happening.
[drm] Initialized drm 1.1.0 20060810 [drm] radeon kernel modesetting enabled. radeon 0000:00:0c.0: enabling device (0080 -> 0083) [drm] initializing kernel modesetting (RV100 0x1002:0x515E 0x1002:0x515E). [drm] register mmio base: 0xFEBE0000 [drm] register mmio size: 65536 radeon 0000:00:0c.0: Invalid ROM contents radeon 0000:00:0c.0: Invalid ROM contents [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM radeon 0000:00:0c.0: Card not posted and no BIOS - ignoring radeon 0000:00:0c.0: Fatal error during GPU init [drm] radeon: finishing device. [TTM] Memory type 2 has not been initialized [drm] radeon: cp finalized INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. Pid: 50, comm: kworker/0:1 Not tainted 3.9.0-rc5-work+ #1 Call Trace: [<ffffffff810f9830>] __lock_acquire+0x1840/0x1c50 [<ffffffff810faba6>] ? mark_held_locks+0x86/0x110 [<ffffffff81c678a0>] ? retint_restore_args+0xe/0xe [<ffffffff810fad45>] ? trace_hardirqs_on_caller+0x115/0x1a0 [<ffffffff8143635e>] ? trace_hardirqs_on_thunk+0x3a/0x3f [<ffffffff810fa255>] lock_acquire+0x95/0x1e0 [<ffffffff810b3315>] ? flush_work+0x5/0x270 [<ffffffff810b335c>] flush_work+0x4c/0x270 [<ffffffff810b3315>] ? flush_work+0x5/0x270 [<ffffffff81c59b7b>] ? printk+0x4d/0x4f [<ffffffff8155677f>] radeon_irq_kms_fini+0x2f/0x70 [<ffffffff815604bf>] r100_fini+0x4f/0x90 [<ffffffff81529362>] radeon_device_fini+0x42/0x100 [<ffffffff8152abdc>] radeon_driver_unload_kms+0x3c/0x60 [<ffffffff8152acbd>] radeon_driver_load_kms+0xbd/0x160 [<ffffffff8150320e>] drm_get_pci_dev+0x17e/0x2a0 [<ffffffff81527dfb>] radeon_pci_probe+0xab/0xd0 [<ffffffff8144c863>] local_pci_probe+0x23/0x40 [<ffffffff810b07e8>] work_for_cpu_fn+0x18/0x30 [<ffffffff810b44f6>] process_one_work+0x1f6/0x670 [<ffffffff810b448a>] ? process_one_work+0x18a/0x670 [<ffffffff810b499c>] process_scheduled_works+0x2c/0x40 [<ffffffff810b4eb2>] worker_thread+0x2b2/0x380 [<ffffffff810b4c00>] ? rescuer_thread+0x250/0x250 [<ffffffff810ba7ea>] kthread+0xea/0xf0 [<ffffffff810ba700>] ? __init_kthread_worker+0x70/0x70 [<ffffffff81c682dc>] ret_from_fork+0x7c/0xb0 [<ffffffff810ba700>] ? __init_kthread_worker+0x70/0x70 radeon: probe of 0000:00:0c.0 failed with error -22 Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/