From: Maarten Lankhorst <m.b.lankhorst@gmail.com>
To: Sarah Sharp <sarah.a.sharp@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>, linux-usb@vger.kernel.org
Subject: inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage with hcd_urb_list_lock
Date: Sat, 06 Jul 2013 20:03:10 +0200 [thread overview]
Message-ID: <51D85BDE.4000703@gmail.com> (raw)
I didn't even know I still had lockdep on.
The following lockdep splat happened when I plugged in a usb bluetooth dongle, using
the pre-rc1 3.11 kernel at HEAD b2c311075db
=================================
[ INFO: inconsistent lock state ]
3.10.0+ #106 Not tainted
---------------------------------
inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
irq/42-xhci_hcd/97 [HC0[0]:SC0[2]:HE1:SE0] takes:
(hcd_urb_list_lock){?.....}, at: [<ffffffff8149440e>] usb_hcd_unlink_urb_from_ep+0x28/0x4e
{IN-HARDIRQ-W} state was registered at:
[<ffffffff810afbc6>] __lock_acquire+0x861/0x1c2e
[<ffffffff810b1556>] lock_acquire+0x87/0x139
[<ffffffff81698a1a>] _raw_spin_lock+0x3b/0x4a
[<ffffffff8149440e>] usb_hcd_unlink_urb_from_ep+0x28/0x4e
[<ffffffff814a65f1>] ehci_urb_done+0x5b/0x9c
[<ffffffff814a8e18>] qh_completions+0x311/0x3ca
[<ffffffff814aa613>] ehci_handle_intr_unlinks+0xad/0x143
[<ffffffff814a7098>] ehci_hrtimer_func+0x6b/0xbd
[<ffffffff8107cfc8>] __run_hrtimer+0x61/0x1f9
[<ffffffff8107d7ca>] hrtimer_interrupt+0x10a/0x253
[<ffffffff810256c0>] local_apic_timer_interrupt+0x38/0x5e
[<ffffffff81025ab5>] smp_apic_timer_interrupt+0x46/0x5b
[<ffffffff816a152f>] apic_timer_interrupt+0x6f/0x80
irq event stamp: 224
hardirqs last enabled at (224): [<ffffffff8168e8d4>] __slab_free+0x1c7/0x2ed
hardirqs last disabled at (223): [<ffffffff8168e846>] __slab_free+0x139/0x2ed
softirqs last enabled at (206): [<ffffffff810d8024>] irq_forced_thread_fn+0x49/0x5a
softirqs last disabled at (212): [<ffffffff810d7fff>] irq_forced_thread_fn+0x24/0x5a
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(hcd_urb_list_lock);
<Interrupt>
lock(hcd_urb_list_lock);
*** DEADLOCK ***
1 lock held by irq/42-xhci_hcd/97:
#0: (&(&xhci->lock)->rlock){+.-...}, at: [<ffffffff814befdd>] xhci_irq+0x2f/0x143d
stack backtrace:
CPU: 1 PID: 97 Comm: irq/42-xhci_hcd Not tainted 3.10.0+ #106
Hardware name: Acer Aspire M3985/Aspire M3985, BIOS P01-A1 03/12/2012
ffffffff8210c150 ffff88040834da48 ffffffff81691af4 0000000000000007
ffff8804082e20b0 ffff88040834daa8 ffffffff8168cb10 0000000000000002
ffff880400000001 ffff880400000000 ffffffff8100f4f7 ffff88040834dac4
Call Trace:
[<ffffffff81691af4>] dump_stack+0x4f/0x84
[<ffffffff8168cb10>] print_usage_bug+0x1f5/0x206
[<ffffffff8100f4f7>] ? save_stack_trace+0x2f/0x50
[<ffffffff810af30c>] mark_lock+0x276/0x2cf
[<ffffffff810ae8cc>] ? check_usage_forwards+0x12f/0x12f
[<ffffffff810af925>] __lock_acquire+0x5c0/0x1c2e
[<ffffffff810b1e04>] ? mark_held_locks+0x6d/0x117
[<ffffffff8168e8d4>] ? __slab_free+0x1c7/0x2ed
[<ffffffff810b1f5a>] ? trace_hardirqs_on_caller+0xac/0x1bb
[<ffffffff810b2076>] ? trace_hardirqs_on+0xd/0xf
[<ffffffff8149440e>] ? usb_hcd_unlink_urb_from_ep+0x28/0x4e
[<ffffffff810b1556>] lock_acquire+0x87/0x139
[<ffffffff8149440e>] ? usb_hcd_unlink_urb_from_ep+0x28/0x4e
[<ffffffff81698a1a>] _raw_spin_lock+0x3b/0x4a
[<ffffffff8149440e>] ? usb_hcd_unlink_urb_from_ep+0x28/0x4e
[<ffffffff8149440e>] usb_hcd_unlink_urb_from_ep+0x28/0x4e
[<ffffffff814bf55a>] xhci_irq+0x5ac/0x143d
[<ffffffff81699171>] ? _raw_spin_unlock_irq+0x3b/0x5d
[<ffffffff8108386d>] ? finish_task_switch+0x7c/0x101
[<ffffffff81083830>] ? finish_task_switch+0x3f/0x101
[<ffffffff81697060>] ? __schedule+0x42a/0x885
[<ffffffff810d7fdb>] ? irq_thread_fn+0x48/0x48
[<ffffffff814c03fc>] xhci_msi_irq+0x11/0x15
[<ffffffff810d8009>] irq_forced_thread_fn+0x2e/0x5a
[<ffffffff810d7d36>] irq_thread+0x10e/0x131
[<ffffffff810d7ee3>] ? irq_finalize_oneshot.part.33+0xe0/0xe0
[<ffffffff810d7c28>] ? wake_threads_waitq+0x44/0x44
[<ffffffff81079b61>] kthread+0xea/0xef
[<ffffffff81079a77>] ? flush_kthread_work+0x19c/0x19c
[<ffffffff816a082c>] ret_from_fork+0x7c/0xb0
[<ffffffff81079a77>] ? flush_kthread_work+0x19c/0x19c
next reply other threads:[~2013-07-06 18:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-06 18:03 Maarten Lankhorst [this message]
2013-07-06 20:48 ` inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage with hcd_urb_list_lock Alan Stern
2013-07-07 9:32 ` Ming Lei
2013-07-11 16:30 ` Sarah Sharp
2013-07-11 16:58 ` Alan Stern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51D85BDE.4000703@gmail.com \
--to=m.b.lankhorst@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=sarah.a.sharp@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.