On 02/25/2013 05:15 PM, Alan Stern wrote:
Probably because the buses are registered at boot but there aren't
any devices plugged in. (Or maybe there are devices, but the system
is too busy doing other things during boot to detect them for a
while.) Since the buses are idle, they get suspended.
Then should I continue to pursue relocating calls to init and delete
the compliance mode recovery timer to xhci_bus_suspend/resume?
On Mon, 25 Feb 2013, Tony Camuso wrote:
Furthermore, xhci_bus_suspend is called before xhci_bus_resume, so
an attempt is made to delete the compliance mode recovery timer,
which does not yet exist. This produces a list_add corruption call
trace a number of times during boot.
That doesn't make sense.
You are correct. It's when xhci_bus_resume is called that we get the
list_add corruption.
WARNING: at lib/list_debug.c:33 __list_add+0xbe/0xd0()
Hardware name: HP Z820 Workstation
list_add corruption. prev->next should be next (ffff8801a9199028),
but was (null). (prev=ffff88032ef22c40).
:
:
Call Trace:
[<ffffffff8105676f>] warn_slowpath_common+0x7f/0xc0
[<ffffffff81056866>] warn_slowpath_fmt+0x46/0x50
[<ffffffff81080f07>] ? down_trylock+0x37/0x50
[<ffffffff8127512e>] __list_add+0xbe/0xd0
[<ffffffff810663ab>] __internal_add_timer+0x9b/0x110
[<ffffffff81066441>] internal_add_timer+0x21/0x50
[<ffffffff81067d4a>] mod_timer+0x10a/0x210
[<ffffffff81067e68>] add_timer+0x18/0x30
[<ffffffffa044b547>] compliance_mode_recovery_timer_init+0x77/0xb0 [xhci_hcd]
[<ffffffff813f6fff>] hcd_bus_resume+0x9f/0x220
[<ffffffff81406d65>] generic_resume+0x25/0x30
[<ffffffff813fd764>] usb_resume_both+0x134/0x150
:
:
etc
The timer must be added somewhere other than in xhci_bus_resume;
otherwise it would never get activated in the current xhci-hcd.
Wherever that other place is, it should still be in operation.
Presently, the timer is added in xchi_init() and xhci_resume(). Our problem
emerges when xhci_resume tries to add the timer after it has been restored
by resuming from hibernate.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html