]> git.karo-electronics.de Git - karo-tx-linux.git/commit
USB: EHCI: unlink unused QHs when the controller is stopped
authorAlan Stern <stern@rowland.harvard.edu>
Tue, 5 Apr 2011 17:36:15 +0000 (13:36 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 22 Apr 2011 15:44:27 +0000 (08:44 -0700)
commita572af6883a6af871d9f20894f6b51a2749f3c22
tree25ad7ea1f31662f3e63cbf81455a3bc9237f53ce
parentd86dbfba5a2d6fe17b5fde93b41c03c864d10aa8
USB: EHCI: unlink unused QHs when the controller is stopped

commit 94ae4976e253757e9b03a44d27d41b20f1829d80 upstream.

This patch (as1458) fixes a problem affecting ultra-reliable systems:
When hardware failover of an EHCI controller occurs, the data
structures do not get released correctly.  This is because the routine
responsible for removing unused QHs from the async schedule assumes
the controller is running properly (the frame counter is used in
determining how long the QH has been idle) -- but when a failover
causes the controller to be electronically disconnected from the PCI
bus, obviously it stops running.

The solution is simple: Allow scan_async() to remove a QH from the
async schedule if it has been idle for long enough _or_ if the
controller is stopped.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-Tested-by: Dan Duval <dan.duval@stratus.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ehci-q.c