USB: EHCI: Fix bug in bus suspend routine
The root hub state is incorrectly set to EHCI_RH_SUSPENDED in
ehci_bus_suspend() function during 3.10 kernel porting. The
pending QH unlinking is skipped if the root hub is already
suspended. We enter suspend while some QH are in UNLINK or
UNLINK_WAIT state. When the device corresponding to the QH
is removed, the disconnect is blocked indefinitely for the
QH unlink completion. The QH unlink never gets completed as
the IAAD cycle is not started due to state mismatch.
This issue is observed while running the HUB connect and
disconnect tests. As the HUB device auto-suspend delay is 0,
the bus suspend gets kicked in before the interrupt endpoint
QH unlink is completed.
CRs-Fixed: 661872
Change-Id: Ie6018057d4fa340db229946de56386ca2ac2ed53
Signed-off-by:
Pavankumar Kondeti <pkondeti@codeaurora.org>
Loading
Please register or sign in to comment