]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xhci: prevent bus_suspend if SS port resuming in phase 1
authorZhuang Jin Can <jin.can.zhuang@intel.com>
Tue, 21 Jul 2015 14:20:30 +0000 (17:20 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Aug 2015 19:21:56 +0000 (12:21 -0700)
commitc65fd970bbb46be9e517d93e67b5e9f27f5e45a0
tree358aebcd15ac8507fdc93ce003bec192c0ee482b
parent6f0433c52944a822f338f300fff672fa2fd43ac5
xhci: prevent bus_suspend if SS port resuming in phase 1

commit fac4271d1126c45ceaceb7f4a336317b771eb121 upstream.

When the link is just waken, it's in Resume state, and driver sets PLS to
U0. This refers to Phase 1. Phase 2 refers to when the link has completed
the transition from Resume state to U0.

With the fix of xhci: report U3 when link is in resume state, it also
exposes an issue that usb3 roothub and controller can suspend right
after phase 1, and this causes a hard hang in controller.

To fix the issue, we need to prevent usb3 bus suspend if any port is
resuming in phase 1.

[merge separate USB2 and USB3 port resume checking to one -Mathias]
Signed-off-by: Zhuang Jin Can <jin.can.zhuang@intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-hub.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.h