UPSTREAM: xhci: Don't prevent USB2 bus suspend in state check intended for USB3 only

commit 45f750c16cae3625014c14c77bd9005eda975d35 upstream.

The code to prevent a bus suspend if a USB3 port was still in link training
also reacted to USB2 port polling state.
This caused bus suspend to busyloop in some cases.
USB2 polling state is different from USB3, and should not prevent bus

Limit the USB3 link training state check to USB3 root hub ports only.
The origial commit went to stable so this need to be applied there as well

Fixes: 2f31a67f01a8 ("usb: xhci: Prevent bus suspend if a port connect change or polling state is detected")
Signed-off-by: Mathias Nyman <>
Signed-off-by: Greg Kroah-Hartman <>

TEST=Do some basic USB functionality tests with both USB3 and USB2 devices.

Change-Id: I92822be31f77d3927c31456efa03e0099ca35e20
Cherry-picked 2ab5db613774c2c743d109eb63f71c5ee3b6a4ea from chromeos-4.14
Signed-off-by: Chiranjeevi Rapolu <>
Reviewed-by: Justin TerAvest <>
Commit-Queue: Justin TerAvest <>
Tested-by: Justin TerAvest <>
Trybot-Ready: Justin TerAvest <>
1 file changed