From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932352AbWGLCdP (ORCPT ); Tue, 11 Jul 2006 22:33:15 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932353AbWGLCdP (ORCPT ); Tue, 11 Jul 2006 22:33:15 -0400 Received: from sj-iport-5.cisco.com ([171.68.10.87]:5552 "EHLO sj-iport-5.cisco.com") by vger.kernel.org with ESMTP id S932352AbWGLCdO (ORCPT ); Tue, 11 Jul 2006 22:33:14 -0400 X-IronPort-AV: i="4.06,230,1149490800"; d="scan'208"; a="305058533:sNHT43091918" To: "Zach Brown" Cc: openib-general@openib.org, "Linux Kernel Mailing List" , "Arjan van de Ven" , "Ingo Molnar" Subject: Re: [openib-general] ipoib lockdep warning X-Message-Flag: Warning: May contain useful information References: <44B405C8.4040706@oracle.com> From: Roland Dreier Date: Tue, 11 Jul 2006 19:33:07 -0700 In-Reply-To: <44B405C8.4040706@oracle.com> (Zach Brown's message of "Tue, 11 Jul 2006 13:10:48 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) XEmacs/21.4.18 (linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-OriginalArrivalTime: 12 Jul 2006 02:33:11.0589 (UTC) FILETIME=[84D66D50:01C6A55B] Authentication-Results: sj-dkim-1.cisco.com; header.From=rdreier@cisco.com; dkim=pass ( sig from cisco.com verified; ); Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org OK, the patch to lib/idr.c below is at least one way to fix this. However, with that applied I get the lockdep warning below, which seems to be a false positive -- I'm not sure what the right fix is, but the blame really seems to fall on udp_ioctl for poking into the sk_buff_head lock itself. Ingo and/or Arjan, any thoughts on the idr.c change or the sk_buff_head warning? Thanks, Roland Here's the idr.c change: diff --git a/lib/idr.c b/lib/idr.c index 4d09681..16d2143 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -38,14 +38,15 @@ static kmem_cache_t *idr_layer_cache; static struct idr_layer *alloc_layer(struct idr *idp) { struct idr_layer *p; + unsigned long flags; - spin_lock(&idp->lock); + spin_lock_irqsave(&idp->lock, flags); if ((p = idp->id_free)) { idp->id_free = p->ary[0]; idp->id_free_cnt--; p->ary[0] = NULL; } - spin_unlock(&idp->lock); + spin_unlock_irqrestore(&idp->lock, flags); return(p); } @@ -59,12 +60,14 @@ static void __free_layer(struct idr *idp static void free_layer(struct idr *idp, struct idr_layer *p) { + unsigned long flags; + /* * Depends on the return element being zeroed. */ - spin_lock(&idp->lock); + spin_lock_irqsave(&idp->lock, flags); __free_layer(idp, p); - spin_unlock(&idp->lock); + spin_unlock_irqrestore(&idp->lock, flags); } /** @@ -168,6 +171,7 @@ static int idr_get_new_above_int(struct { struct idr_layer *p, *new; int layers, v, id; + unsigned long flags; id = starting_id; build_up: @@ -191,14 +195,14 @@ build_up: * The allocation failed. If we built part of * the structure tear it down. */ - spin_lock(&idp->lock); + spin_lock_irqsave(&idp->lock, flags); for (new = p; p && p != idp->top; new = p) { p = p->ary[0]; new->ary[0] = NULL; new->bitmap = new->count = 0; __free_layer(idp, new); } - spin_unlock(&idp->lock); + spin_unlock_irqrestore(&idp->lock, flags); return -1; } new->ary[0] = p; And here's the warning I get, which appears to be a false positive: ====================================================== [ INFO: hard-safe -> hard-unsafe lock order detected ] ------------------------------------------------------ swapper/0 [HC0[0]:SC1[2]:HE0:SE0] is trying to acquire: (&skb_queue_lock_key){-+..}, at: [] skb_queue_tail+0x1d/0x47 and this task is already holding: (&priv->lock){.+..}, at: [] ipoib_mcast_send+0x29/0x413 [ib_ipoib] which would create a new lock dependency: (&priv->lock){.+..} -> (&skb_queue_lock_key){-+..} but this new dependency connects a hard-irq-safe lock: (&priv->tx_lock){+...} ... which became hard-irq-safe at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] ipoib_ib_completion+0x340/0x3ff [ib_ipoib] [] mthca_cq_completion+0x65/0x6b [ib_mthca] [] mthca_eq_int+0x70/0x3d2 [ib_mthca] [] mthca_arbel_interrupt+0x3b/0x98 [ib_mthca] [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 to a hard-irq-unsafe lock: (&skb_queue_lock_key){-+..} ... which became hard-irq-unsafe at: ... [] lock_acquire+0x4a/0x69 [] _spin_lock_bh+0x26/0x33 [] udp_ioctl+0x46/0x87 [] inet_ioctl+0x8c/0x8f [] sock_ioctl+0x1c0/0x1ea [] do_ioctl+0x26/0x74 [] vfs_ioctl+0x24a/0x264 [] sys_ioctl+0x41/0x68 [] system_call+0x7d/0x83 other info that might help us debug this: 2 locks held by swapper/0: #0: (&priv->tx_lock){+...}, at: [] ipoib_start_xmit+0x42/0x66d [ib_ipoib] #1: (&priv->lock){.+..}, at: [] ipoib_mcast_send+0x29/0x413 [ib_ipoib] the hard-irq-safe lock's dependencies: -> (&priv->tx_lock){+...} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] ipoib_mcast_join_finish+0x340/0x379 [ib_ipoib] [] ipoib_mcast_join_complete+0xa2/0x294 [ib_ipoib] [] ib_sa_mcmember_rec_callback+0x4b/0x57 [ib_sa] [] recv_handler+0x3d/0x4a [ib_sa] [] ib_mad_completion_handler+0x3df/0x5e4 [ib_mad] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] ipoib_ib_completion+0x340/0x3ff [ib_ipoib] [] mthca_cq_completion+0x65/0x6b [ib_mthca] [] mthca_eq_int+0x70/0x3d2 [ib_mthca] [] mthca_arbel_interrupt+0x3b/0x98 [ib_mthca] [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 } ... key at: [] __key.23652+0x0/0xffffffffffff804f [ib_ipoib] -> (&priv->lock){.+..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] ipoib_mcast_start_thread+0x6e/0x87 [ib_ipoib] [] ipoib_ib_dev_up+0x52/0x58 [ib_ipoib] [] ipoib_open+0x65/0x102 [ib_ipoib] [] dev_open+0x3a/0x80 [] dev_change_flags+0x65/0x139 [] devinet_ioctl+0x240/0x5e2 [] inet_ioctl+0x70/0x8f [] sock_ioctl+0x1c0/0x1ea [] do_ioctl+0x26/0x74 [] vfs_ioctl+0x24a/0x264 [] sys_ioctl+0x41/0x68 [] system_call+0x7d/0x83 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] ipoib_mcast_send+0x28/0x413 [ib_ipoib] [] ipoib_start_xmit+0x361/0x66d [ib_ipoib] [] dev_hard_start_xmit+0x1ab/0x221 [] __qdisc_run+0xfa/0x1cd [] dev_queue_xmit+0x136/0x263 [] neigh_connected_output+0xae/0xc7 [] ip6_output2+0x254/0x28c [ipv6] [] ip6_output+0x7e2/0x7f8 [ipv6] [] ndisc_send_ns+0x38f/0x4c1 [ipv6] [] addrconf_dad_timer+0xfb/0x11e [ipv6] [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 } ... key at: [] __key.23651+0x0/0xffffffffffff8047 [ib_ipoib] -> (&idr_lock){....} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] send_mad+0x39/0x141 [ib_sa] [] ib_sa_mcmember_rec_query+0x147/0x17c [ib_sa] [] ipoib_mcast_join+0x15f/0x1f2 [ib_ipoib] [] ipoib_mcast_join_task+0x24b/0x2e7 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 } ... key at: [] __key.17990+0x0/0xffffffffffffc8c2 [ib_sa] -> (query_idr.lock){....} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] free_layer+0x1c/0x40 [] idr_pre_get+0x31/0x42 [] send_mad+0x25/0x141 [ib_sa] [] ib_sa_mcmember_rec_query+0x147/0x17c [ib_sa] [] ipoib_mcast_join+0x15f/0x1f2 [ib_ipoib] [] ipoib_mcast_join_task+0x24b/0x2e7 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 } ... key at: [] query_idr+0x30/0xffffffffffffce4a [ib_sa] ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] alloc_layer+0x18/0x4d [] idr_get_new_above_int+0x37/0x225 [] idr_get_new+0xf/0x2f [] send_mad+0x4f/0x141 [ib_sa] [] ib_sa_mcmember_rec_query+0x147/0x17c [ib_sa] [] ipoib_mcast_join+0x15f/0x1f2 [ib_ipoib] [] ipoib_mcast_join_task+0x24b/0x2e7 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] ib_sa_cancel_query+0x1b/0x73 [ib_sa] [] wait_for_mcast_join+0x35/0xd2 [ib_ipoib] [] ipoib_mcast_stop_thread+0xa6/0xe6 [ib_ipoib] [] ipoib_mcast_restart_task+0x4b/0x3d9 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 -> (&mad_agent_priv->lock){....} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] ib_post_send_mad+0x3e0/0x512 [ib_mad] [] agent_send_response+0x11b/0x155 [ib_mad] [] ib_mad_completion_handler+0x2ea/0x5e4 [ib_mad] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 } ... key at: [] __key.17415+0x0/0xffffffffffffaf74 [ib_mad] -> (base_lock_keys + cpu){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] do_IRQ+0xfc/0x108 [] common_interrupt+0x64/0x65 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] __mod_timer+0x93/0xc8 [] mod_timer+0x2c/0x2f [] i8042_interrupt+0x2a/0x222 [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 [<7ffffffffffffffd>] 0x7ffffffffffffffd [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] do_IRQ+0xfc/0x108 [] common_interrupt+0x64/0x65 } ... key at: [] base_lock_keys+0x0/0x20 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] lock_timer_base+0x21/0x47 [] try_to_del_timer_sync+0x14/0x62 [] del_timer_sync+0x11/0x1a [] ib_mad_complete_send_wr+0x10b/0x1f8 [ib_mad] [] ib_mad_send_done_handler+0x125/0x17a [ib_mad] [] ib_mad_completion_handler+0x571/0x5e4 [ib_mad] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 -> (base_lock_keys + cpu#4){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] lock_timer_base+0x21/0x47 [] del_timer+0x1e/0x5f [] scsi_delete_timer+0x12/0x5d [] scsi_done+0xd/0x1e [] ata_scsi_qc_complete+0xb1/0xc3 [] __ata_qc_complete+0x218/0x225 [] ata_qc_complete+0xcf/0xd5 [] ata_hsm_qc_complete+0x1c6/0x1d8 [] ata_hsm_move+0x618/0x638 [] ata_interrupt+0x161/0x1ae [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 } ... key at: [] base_lock_keys+0x18/0x20 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] __mod_timer+0x93/0xc8 [] queue_delayed_work+0x75/0x7d [] wait_for_response+0xdf/0xe8 [ib_mad] [] ib_mad_complete_send_wr+0xc1/0x1f8 [ib_mad] [] ib_mad_send_done_handler+0x125/0x17a [ib_mad] [] ib_mad_completion_handler+0x571/0x5e4 [ib_mad] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 -> (base_lock_keys + cpu#2){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] __mod_timer+0x93/0xc8 [] mod_timer+0x2c/0x2f [] i8042_interrupt+0x2a/0x222 [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] run_timer_softirq+0x41/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 } ... key at: [] base_lock_keys+0x8/0x20 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] __mod_timer+0x93/0xc8 [] queue_delayed_work+0x75/0x7d [] wait_for_response+0xdf/0xe8 [ib_mad] [] ib_mad_complete_send_wr+0xc1/0x1f8 [ib_mad] [] ib_mad_send_done_handler+0x125/0x17a [ib_mad] [] ib_mad_completion_handler+0x571/0x5e4 [ib_mad] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] ib_modify_mad+0x27/0x14c [ib_mad] [] ib_cancel_mad+0xa/0xd [ib_mad] [] ib_sa_cancel_query+0x6a/0x73 [ib_sa] [] wait_for_mcast_join+0x35/0xd2 [ib_ipoib] [] ipoib_mcast_stop_thread+0xa6/0xe6 [ib_ipoib] [] ipoib_mcast_restart_task+0x4b/0x3d9 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 -> (modlist_lock){.+..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] module_text_address+0x15/0x3b [] __register_kprobe+0x2bc/0x2da [] register_kprobe+0xc/0xf [] arch_init_kprobes+0xf/0x12 [] init_kprobes+0x3f/0x52 [] init+0x143/0x308 [] child_rip+0x7/0x12 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] is_module_address+0x14/0x80 [] static_obj+0x6c/0x79 [] lockdep_init_map+0x7d/0xc3 [] __spin_lock_init+0x2e/0x58 [] ipoib_mcast_alloc+0x97/0xce [ib_ipoib] [] ipoib_mcast_send+0x109/0x413 [ib_ipoib] [] ipoib_start_xmit+0x361/0x66d [ib_ipoib] [] dev_hard_start_xmit+0x1ab/0x221 [] __qdisc_run+0xfa/0x1cd [] dev_queue_xmit+0x136/0x263 [] neigh_connected_output+0xae/0xc7 [] ip6_output2+0x254/0x28c [ipv6] [] ip6_output+0x7e2/0x7f8 [ipv6] [] ndisc_send_rs+0x33d/0x46f [ipv6] [] addrconf_dad_completed+0x90/0xe2 [ipv6] [] addrconf_dad_timer+0x74/0x11e [ipv6] [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 } ... key at: [] modlist_lock+0x18/0x40 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] is_module_address+0x14/0x80 [] static_obj+0x6c/0x79 [] lockdep_init_map+0x7d/0xc3 [] __spin_lock_init+0x2e/0x58 [] ipoib_mcast_alloc+0x97/0xce [ib_ipoib] [] ipoib_mcast_restart_task+0x174/0x3d9 [ib_ipoib] [] run_workqueue+0xa0/0xf7 [] worker_thread+0xee/0x122 [] kthread+0xd0/0xfb [] child_rip+0x7/0x12 -> (&qp->sq.lock){.+..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x28/0x35 [] mthca_modify_qp+0x67/0xd7b [ib_mthca] [] ib_modify_qp+0xc/0xf [ib_core] [] ib_mad_init_device+0x2db/0x55c [ib_mad] [] ib_register_device+0x20d/0x300 [ib_core] [] mthca_register_device+0x3e0/0x430 [ib_mthca] [] mthca_init_one+0xbc2/0xcbc [ib_mthca] [] pci_device_probe+0x4b/0x72 [] driver_probe_device+0x59/0xaf [] __driver_attach+0x58/0x90 [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x74/0x112 [] driver_register+0x8c/0x91 [] __pci_register_driver+0x60/0x84 [] 0xffffffff88022016 [] sys_init_module+0x174c/0x1884 [] system_call+0x7d/0x83 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] mthca_arbel_post_send+0x2f/0x5be [ib_mthca] [] ipoib_send+0x117/0x1d6 [ib_ipoib] [] ipoib_mcast_send+0x3fb/0x413 [ib_ipoib] [] ipoib_start_xmit+0x361/0x66d [ib_ipoib] [] dev_hard_start_xmit+0x1ab/0x221 [] __qdisc_run+0xfa/0x1cd [] dev_queue_xmit+0x136/0x263 [] neigh_connected_output+0xae/0xc7 [] ip6_output2+0x254/0x28c [ipv6] [] ip6_output+0x7e2/0x7f8 [ipv6] [] ndisc_send_ns+0x38f/0x4c1 [ipv6] [] addrconf_dad_timer+0xfb/0x11e [ipv6] [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 } ... key at: [] __key.20374+0x0/0xffffffffffff231a [ib_mthca] -> (&qp->rq.lock){+...} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] mthca_modify_qp+0x76/0xd7b [ib_mthca] [] ib_modify_qp+0xc/0xf [ib_core] [] ib_mad_init_device+0x2db/0x55c [ib_mad] [] ib_register_device+0x20d/0x300 [ib_core] [] mthca_register_device+0x3e0/0x430 [ib_mthca] [] mthca_init_one+0xbc2/0xcbc [ib_mthca] [] pci_device_probe+0x4b/0x72 [] driver_probe_device+0x59/0xaf [] __driver_attach+0x58/0x90 [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x74/0x112 [] driver_register+0x8c/0x91 [] __pci_register_driver+0x60/0x84 [] 0xffffffff88022016 [] sys_init_module+0x174c/0x1884 [] system_call+0x7d/0x83 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] mthca_arbel_post_receive+0x35/0x23a [ib_mthca] [] ipoib_ib_post_receive+0x81/0xf9 [ib_ipoib] [] ipoib_ib_completion+0x286/0x3ff [ib_ipoib] [] mthca_cq_completion+0x65/0x6b [ib_mthca] [] mthca_eq_int+0x70/0x3d2 [ib_mthca] [] mthca_arbel_interrupt+0x3b/0x98 [ib_mthca] [] handle_IRQ_event+0x28/0x64 [] __do_IRQ+0xac/0x117 [] do_IRQ+0xf7/0x108 [] common_interrupt+0x64/0x65 } ... key at: [] __key.20375+0x0/0xffffffffffff2322 [ib_mthca] ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] mthca_modify_qp+0x76/0xd7b [ib_mthca] [] ib_modify_qp+0xc/0xf [ib_core] [] ib_mad_init_device+0x2db/0x55c [ib_mad] [] ib_register_device+0x20d/0x300 [ib_core] [] mthca_register_device+0x3e0/0x430 [ib_mthca] [] mthca_init_one+0xbc2/0xcbc [ib_mthca] [] pci_device_probe+0x4b/0x72 [] driver_probe_device+0x59/0xaf [] __driver_attach+0x58/0x90 [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x74/0x112 [] driver_register+0x8c/0x91 [] __pci_register_driver+0x60/0x84 [] 0xffffffff88022016 [] sys_init_module+0x174c/0x1884 [] system_call+0x7d/0x83 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] mthca_arbel_post_send+0x2f/0x5be [ib_mthca] [] ipoib_send+0x117/0x1d6 [ib_ipoib] [] ipoib_mcast_send+0x3fb/0x413 [ib_ipoib] [] ipoib_start_xmit+0x361/0x66d [ib_ipoib] [] dev_hard_start_xmit+0x1ab/0x221 [] __qdisc_run+0xfa/0x1cd [] dev_queue_xmit+0x136/0x263 [] neigh_connected_output+0xae/0xc7 [] ip6_output2+0x254/0x28c [ipv6] [] ip6_output+0x7e2/0x7f8 [ipv6] [] ndisc_send_ns+0x38f/0x4c1 [ipv6] [] addrconf_dad_timer+0xfb/0x11e [ipv6] [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x21/0x2e [] ipoib_mcast_send+0x28/0x413 [ib_ipoib] [] ipoib_start_xmit+0x361/0x66d [ib_ipoib] [] dev_hard_start_xmit+0x1ab/0x221 [] __qdisc_run+0xfa/0x1cd [] dev_queue_xmit+0x136/0x263 [] neigh_connected_output+0xae/0xc7 [] ip6_output2+0x254/0x28c [ipv6] [] ip6_output+0x7e2/0x7f8 [ipv6] [] ndisc_send_ns+0x38f/0x4c1 [ipv6] [] addrconf_dad_timer+0xfb/0x11e [ipv6] [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 the hard-irq-unsafe lock's dependencies: -> (&skb_queue_lock_key){-+..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] skb_queue_tail+0x1c/0x47 [] netlink_broadcast+0x212/0x2ea [] kobject_uevent+0x3c9/0x43d [] store_uevent+0x16/0x1e [] class_device_attr_store+0x1b/0x1e [] sysfs_write_file+0xb7/0xe4 [] vfs_write+0xad/0x154 [] sys_write+0x46/0x6f [] system_call+0x7d/0x83 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] skb_dequeue+0x18/0x5c [] skb_queue_purge+0x18/0x26 [] neigh_timer_handler+0x26f/0x346 [] run_timer_softirq+0x150/0x1dc [] __do_softirq+0x6b/0xf7 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x59/0x5f [] apic_timer_interrupt+0x69/0x70 hardirq-on-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_bh+0x26/0x33 [] udp_ioctl+0x46/0x87 [] inet_ioctl+0x8c/0x8f [] sock_ioctl+0x1c0/0x1ea [] do_ioctl+0x26/0x74 [] vfs_ioctl+0x24a/0x264 [] sys_ioctl+0x41/0x68 [] system_call+0x7d/0x83 } ... key at: [] skb_queue_lock_key+0x0/0x18 stack backtrace: Call Trace: [] show_trace+0xaa/0x238 [] dump_stack+0x13/0x15 [] check_usage+0x282/0x293 [] __lock_acquire+0x85c/0xa29 [] lock_acquire+0x4b/0x69 [] _spin_lock_irqsave+0x2c/0x3c [] skb_queue_tail+0x1d/0x47 [] :ib_ipoib:ipoib_mcast_send+0x19a/0x413 [] :ib_ipoib:ipoib_start_xmit+0x362/0x66d [] dev_hard_start_xmit+0x1ac/0x221 [] __qdisc_run+0xfb/0x1cd [] dev_queue_xmit+0x137/0x263 [] neigh_connected_output+0xaf/0xc7 [] :ipv6:ip6_output2+0x255/0x28c [] :ipv6:ip6_output+0x7e3/0x7f8 [] :ipv6:ndisc_send_rs+0x33e/0x46f [] :ipv6:addrconf_dad_completed+0x91/0xe2 [] :ipv6:addrconf_dad_timer+0x75/0x11e [] run_timer_softirq+0x151/0x1dc [] __do_softirq+0x6c/0xf7 [] call_softirq+0x1e/0x28 ib0: no IPv6 routers present