Hello,
Every time I boot a particular development server the complaint shown
below appears in the system log. I don't know when this behavior has
been introduced. But I noticed that I can reproduce this with older
kernel versions, e.g. 4.4.63. Does anyone know what is going on or how
to fix this?
Thanks,
Bart.
usb 1-8: new low-speed USB device number 2 using xhci_hcd
usb 3-1: new high-speed USB device number 2 using ehci-pci
=========================================================
[ INFO: possible irq lock inversion dependency detected ]
4.11.0-rc8-dbg+ #1 Not tainted
---------------------------------------------------------
swapper/7/0 just changed the state of lock:
(&(&ehci->lock)->rlock){-.-...}, at: [<ffffffffa0130a69>]
ehci_hrtimer_func+0x29/0xc0 [ehci_hcd]
but this lock took another, HARDIRQ-unsafe lock in the past:
(hcd_urb_list_lock){+.....}
and interrupts could create inverse lock ordering between them.
other info that might help us debug this:
Possible interrupt unsafe locking scenario:
CPU0 CPU1
---- ----
lock(hcd_urb_list_lock);
local_irq_disable();
lock(&(&ehci->lock)->rlock);
lock(hcd_urb_list_lock);
<Interrupt>
lock(&(&ehci->lock)->rlock);
*** DEADLOCK ***
no locks held by swapper/7/0.
the shortest dependencies between 2nd lock and 1st lock:
-> (hcd_urb_list_lock){+.....} ops: 252 {
HARDIRQ-ON-W at:
__lock_acquire+0x602/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock+0x2f/0x40
usb_hcd_unlink_urb_from_ep+0x1b/0x60 [usbcore]
xhci_giveback_urb_in_irq.isra.45+0x70/0x1b0 [xhci_hcd]
finish_td.constprop.60+0x1d8/0x2e0 [xhci_hcd]
xhci_irq+0xdd6/0x1fa0 [xhci_hcd]
usb_hcd_irq+0x26/0x40 [usbcore]
irq_forced_thread_fn+0x2f/0x70
irq_thread+0x149/0x1d0
kthread+0x113/0x150
ret_from_fork+0x2e/0x40
INITIAL USE at:
__lock_acquire+0x343/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock+0x2f/0x40
usb_hcd_link_urb_to_ep+0x2e/0xd0 [usbcore]
usb_hcd_submit_urb+0x117/0xb40 [usbcore]
usb_submit_urb+0x2f4/0x560 [usbcore]
usb_start_wait_urb+0x5f/0x150 [usbcore]
usb_control_msg+0xc1/0xf0 [usbcore]
usb_get_descriptor+0x79/0xc0 [usbcore]
usb_get_device_descriptor+0x57/0x100 [usbcore]
usb_add_hcd+0x329/0x8a0 [usbcore]
usb_hcd_pci_probe+0x1af/0x450 [usbcore]
xhci_pci_probe+0x1c/0x180 [xhci_pci]
local_pci_probe+0x24/0x60
pci_device_probe+0xd8/0x130
driver_probe_device+0x26a/0x410
__driver_attach+0xe3/0xf0
bus_for_each_dev+0x62/0xa0
driver_attach+0x1e/0x20
bus_add_driver+0x173/0x270
driver_register+0x60/0xe0
__pci_register_driver+0x5d/0x60
0xffffffffa0147031
do_one_initcall+0x43/0x170
do_init_module+0x5f/0x1fa
load_module+0x24ab/0x2c00
SYSC_finit_module+0xbc/0xf0
SyS_finit_module+0xe/0x10
do_syscall_64+0x5c/0x140
return_from_SYSCALL_64+0x0/0x7a
}
... key at: [<ffffffffa008bf18>]
hcd_urb_list_lock+0x18/0xffffffffffff7100 [usbcore]
... acquired at:
lock_acquire+0xd5/0x1c0
_raw_spin_lock+0x2f/0x40
usb_hcd_link_urb_to_ep+0x2e/0xd0 [usbcore]
ehci_urb_enqueue+0xab/0x107f [ehci_hcd]
usb_hcd_submit_urb+0x8f/0xb40 [usbcore]
usb_submit_urb+0x2f4/0x560 [usbcore]
usb_start_wait_urb+0x5f/0x150 [usbcore]
usb_control_msg+0xc1/0xf0 [usbcore]
hub_port_init+0x305/0xb90 [usbcore]
hub_event+0x690/0x1250 [usbcore]
process_one_work+0x20b/0x6a0
worker_thread+0x4e/0x4a0
kthread+0x113/0x150
ret_from_fork+0x2e/0x40
-> (&(&ehci->lock)->rlock){-.-...} ops: 38 {
IN-HARDIRQ-W at:
__lock_acquire+0x67d/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock_irqsave+0x3a/0x50
ehci_hrtimer_func+0x29/0xc0 [ehci_hcd]
__hrtimer_run_queues+0xde/0x4c0
hrtimer_interrupt+0xaa/0x200
local_apic_timer_interrupt+0x38/0x60
smp_apic_timer_interrupt+0x38/0x50
apic_timer_interrupt+0x90/0xa0
cpuidle_enter_state+0x135/0x380
cpuidle_enter+0x17/0x20
call_cpuidle+0x23/0x40
do_idle+0xe8/0x1c0
cpu_startup_entry+0x1d/0x20
start_secondary+0x103/0x130
verify_cpu+0x0/0xfc
IN-SOFTIRQ-W at:
__lock_acquire+0x560/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock_irqsave+0x3a/0x50
ehci_hub_status_data+0x6c/0x1a0 [ehci_hcd]
usb_hcd_poll_rh_status+0x49/0x140 [usbcore]
rh_timer_func+0xe/0x10 [usbcore]
call_timer_fn+0x90/0x330
run_timer_softirq+0x21a/0x5b0
__do_softirq+0xbf/0x4b7
run_ksoftirqd+0x1f/0x60
smpboot_thread_fn+0x128/0x1f0
kthread+0x113/0x150
ret_from_fork+0x2e/0x40
INITIAL USE at:
__lock_acquire+0x343/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock_irq+0x35/0x50
ehci_halt+0x1e/0xf0 [ehci_hcd]
ehci_setup+0x4de/0x810 [ehci_hcd]
ehci_pci_setup+0xb7/0x576 [ehci_pci]
usb_add_hcd+0x22e/0x8a0 [usbcore]
usb_hcd_pci_probe+0x36d/0x450 [usbcore]
ehci_pci_probe+0x36/0x40 [ehci_pci]
local_pci_probe+0x24/0x60
pci_device_probe+0xd8/0x130
driver_probe_device+0x26a/0x410
__driver_attach+0xe3/0xf0
bus_for_each_dev+0x62/0xa0
driver_attach+0x1e/0x20
bus_add_driver+0x173/0x270
driver_register+0x60/0xe0
__pci_register_driver+0x5d/0x60
0xffffffffa015006a
do_one_initcall+0x43/0x170
do_init_module+0x5f/0x1fa
load_module+0x24ab/0x2c00
SYSC_finit_module+0xbc/0xf0
SyS_finit_module+0xe/0x10
do_syscall_64+0x5c/0x140
return_from_SYSCALL_64+0x0/0x7a
}
... key at: [<ffffffffa013d390>] __key.38270+0x0/0xffffffffffffcc70
[ehci_hcd]
... acquired at:
check_usage_forwards+0x120/0x130
mark_lock+0x3bf/0x5c0
__lock_acquire+0x67d/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock_irqsave+0x3a/0x50
ehci_hrtimer_func+0x29/0xc0 [ehci_hcd]
__hrtimer_run_queues+0xde/0x4c0
hrtimer_interrupt+0xaa/0x200
local_apic_timer_interrupt+0x38/0x60
smp_apic_timer_interrupt+0x38/0x50
apic_timer_interrupt+0x90/0xa0
cpuidle_enter_state+0x135/0x380
cpuidle_enter+0x17/0x20
call_cpuidle+0x23/0x40
do_idle+0xe8/0x1c0
cpu_startup_entry+0x1d/0x20
start_secondary+0x103/0x130
verify_cpu+0x0/0xfc
stack backtrace:
CPU: 7 PID: 0 Comm: swapper/7 Not tainted 4.11.0-rc8-dbg+ #1
Hardware name: Dell Inc. PowerEdge R430/03XKDV, BIOS 1.0.2 11/17/2014
Call Trace:
<IRQ>
dump_stack+0x68/0x93
print_irq_inversion_bug.part.37+0x1a5/0x1b1
check_usage_forwards+0x120/0x130
mark_lock+0x3bf/0x5c0
__lock_acquire+0x67d/0x1280
lock_acquire+0xd5/0x1c0
_raw_spin_lock_irqsave+0x3a/0x50
ehci_hrtimer_func+0x29/0xc0 [ehci_hcd]
__hrtimer_run_queues+0xde/0x4c0
hrtimer_interrupt+0xaa/0x200
local_apic_timer_interrupt+0x38/0x60
smp_apic_timer_interrupt+0x38/0x50
apic_timer_interrupt+0x90/0xa0
</IRQ>
cpuidle_enter+0x17/0x20
call_cpuidle+0x23/0x40
do_idle+0xe8/0x1c0
cpu_startup_entry+0x1d/0x20
start_secondary+0x103/0x130
start_cpu+0x14/0x14--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html