3.1-rc3 iommu lockdep trace

From: Josh Boyer
Date: Thu Sep 08 2011 - 08:26:56 EST


Hi All,

We have a report[1] of a lockdep trace from the iommu layer when doing a
rmmod of the igb driver. Any thoughts?

josh

[1] https://bugzilla.redhat.com/show_bug.cgi?id=736676

[ 239.085163] =======================================================
[ 239.093461] [ INFO: possible circular locking dependency detected ]
[ 239.099997] 3.1.0-0.rc3.git0.0.fc16.x86_64 #1
[ 239.104621] -------------------------------------------------------
[ 239.111154] rmmod/5903 is trying to acquire lock:
[ 239.116125] (&(&iommu->lock)->rlock){......}, at: [<ffffffff813fcb18>]
domain_remove_one_dev_info+0x1c1/0x20b
[ 239.126818]
[ 239.126818] but task is already holding lock:
[ 239.133204] (device_domain_lock){-.-...}, at: [<ffffffff813fca89>]
domain_remove_one_dev_info+0x132/0x20b
[ 239.143552]
[ 239.143552] which lock already depends on the new lock.
[ 239.143553]
[ 239.152565]
[ 239.152565] the existing dependency chain (in reverse order) is:
[ 239.160595]
[ 239.160596] -> #1 (device_domain_lock){-.-...}:
[ 239.167355] [<ffffffff8108eff1>] lock_acquire+0xf3/0x13e
[ 239.173605] [<ffffffff81503aa1>] _raw_spin_lock_irqsave+0x54/0x8e
[ 239.180640] [<ffffffff813fb9a1>]
domain_context_mapping_one+0x2b7/0x49a
[ 239.188419] [<ffffffff813fcedd>] domain_context_mapping+0x3d/0xe5
[ 239.195445] [<ffffffff815009aa>]
iommu_prepare_identity_map+0x18f/0x1ae
[ 239.203226] [<ffffffff81d9198b>] intel_iommu_init+0x7f0/0xa9d
[ 239.209906] [<ffffffff81d5a550>] pci_iommu_init+0x29/0x54
[ 239.216243] [<ffffffff81002099>] do_one_initcall+0x7f/0x13a
[ 239.222750] [<ffffffff81d53c8b>] kernel_init+0xdf/0x159
[ 239.228914] [<ffffffff8150d284>] kernel_thread_helper+0x4/0x10
[ 239.235691]
[ 239.235691] -> #0 (&(&iommu->lock)->rlock){......}:
[ 239.242786] [<ffffffff8108e81e>] __lock_acquire+0xa1a/0xcf7
[ 239.249295] [<ffffffff8108eff1>] lock_acquire+0xf3/0x13e
[ 239.255544] [<ffffffff81503aa1>] _raw_spin_lock_irqsave+0x54/0x8e
[ 239.262580] [<ffffffff813fcb18>]
domain_remove_one_dev_info+0x1c1/0x20b
[ 239.270360] [<ffffffff813fd1bf>] device_notifier+0x54/0x7e
[ 239.276789] [<ffffffff81507980>] notifier_call_chain+0x84/0xbb
[ 239.283557] [<ffffffff8107f880>]
__blocking_notifier_call_chain+0x67/0x84
[ 239.291501] [<ffffffff8107f8b1>]
blocking_notifier_call_chain+0x14/0x16
[ 239.299271] [<ffffffff81316816>] __device_release_driver+0xcd/0xd2
[ 239.306394] [<ffffffff81316ed3>] driver_detach+0x99/0xc2
[ 239.312651] [<ffffffff81316693>] bus_remove_driver+0xba/0xdf
[ 239.319247] [<ffffffff81317579>] driver_unregister+0x6a/0x75
[ 239.325840] [<ffffffff8126ce89>] pci_unregister_driver+0x44/0x8d
[ 239.332781] [<ffffffffa004c7a5>] igb_exit_module+0x1c/0x1e [igb]
[ 239.339731] [<ffffffff81098a58>] sys_delete_module+0x1dd/0x251
[ 239.346499] [<ffffffff8150b082>] system_call_fastpath+0x16/0x1b
[ 239.353354]
[ 239.353354] other info that might help us debug this:
[ 239.353355]
[ 239.362195] Possible unsafe locking scenario:
[ 239.362196]
[ 239.368669] CPU0 CPU1
[ 239.373467] ---- ----
[ 239.378265] lock(device_domain_lock);
[ 239.382500] lock(&(&iommu->lock)->rlock);
[ 239.389585] lock(device_domain_lock);
[ 239.396338] lock(&(&iommu->lock)->rlock);
[ 239.400909]
[ 239.400910] *** DEADLOCK ***
[ 239.400910]
[ 239.407670] 4 locks held by rmmod/5903:
[ 239.411776] #0: (&__lockdep_no_validate__){......}, at:
[<ffffffff81316eb4>] driver_detach+0x7a/0xc2
[ 239.421826] #1: (&__lockdep_no_validate__){......}, at:
[<ffffffff81316ec2>] driver_detach+0x88/0xc2
[ 239.431879] #2: (&(&priv->bus_notifier)->rwsem){.+.+.+}, at:
[<ffffffff8107f868>] __blocking_notifier_call_chain+0x4f/0x84
[ 239.443850] #3: (device_domain_lock){-.-...}, at: [<ffffffff813fca89>]
domain_remove_one_dev_info+0x132/0x20b
[ 239.454690]
[ 239.454691] stack backtrace:
[ 239.459600] Pid: 5903, comm: rmmod Tainted: G W
3.1.0-0.rc3.git0.0.fc16.x86_64 #1
[ 239.468356] Call Trace:
[ 239.471072] [<ffffffff814f9b74>] print_circular_bug+0x1f8/0x209
[ 239.477345] [<ffffffff8108e81e>] __lock_acquire+0xa1a/0xcf7
[ 239.483275] [<ffffffff814fc4b5>] ? __slab_free+0x166/0x24c
[ 239.489119] [<ffffffff813fcb18>] ? domain_remove_one_dev_info+0x1c1/0x20b
[ 239.496257] [<ffffffff8108eff1>] lock_acquire+0xf3/0x13e
[ 239.501920] [<ffffffff813fcb18>] ? domain_remove_one_dev_info+0x1c1/0x20b
[ 239.509059] [<ffffffff81503aa1>] _raw_spin_lock_irqsave+0x54/0x8e
[ 239.515506] [<ffffffff813fcb18>] ? domain_remove_one_dev_info+0x1c1/0x20b
[ 239.522645] [<ffffffff8108b885>] ? trace_hardirqs_off+0xd/0xf
[ 239.528749] [<ffffffff813fcb18>] domain_remove_one_dev_info+0x1c1/0x20b
[ 239.535716] [<ffffffff813fd1bf>] device_notifier+0x54/0x7e
[ 239.541558] [<ffffffff81507980>] notifier_call_chain+0x84/0xbb
[ 239.547747] [<ffffffff8107f880>] __blocking_notifier_call_chain+0x67/0x84
[ 239.554886] [<ffffffff8107f8b1>] blocking_notifier_call_chain+0x14/0x16
[ 239.561854] [<ffffffff81316816>] __device_release_driver+0xcd/0xd2
[ 239.568387] [<ffffffff81316ed3>] driver_detach+0x99/0xc2
[ 239.574056] [<ffffffff81316693>] bus_remove_driver+0xba/0xdf
[ 239.580073] [<ffffffff81317579>] driver_unregister+0x6a/0x75
[ 239.591871] [<ffffffff8126ce89>] pci_unregister_driver+0x44/0x8d
[ 239.598236] [<ffffffffa004c7a5>] igb_exit_module+0x1c/0x1e [igb]
[ 239.604594] [<ffffffff81098a58>] sys_delete_module+0x1dd/0x251
[ 239.610783] [<ffffffff815046d9>] ? retint_swapgs+0x13/0x1b
[ 239.616630] [<ffffffff810b4e1b>] ? audit_syscall_entry+0x11c/0x148
[ 239.623162] [<ffffffff812536fe>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[ 239.629871] [<ffffffff8110f63b>] ? pmd_offset+0x19/0x3f
[ 239.635451] [<ffffffff8150b082>] system_call_fastpath+0x16/0x1b
--
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/