]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Nov 2021 16:23:39 +0000 (17:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Nov 2021 16:23:39 +0000 (17:23 +0100)
added patches:
xhci-fix-usb-3.1-enumeration-issues-by-increasing-roothub-power-on-good-delay.patch

queue-4.9/series
queue-4.9/xhci-fix-usb-3.1-enumeration-issues-by-increasing-roothub-power-on-good-delay.patch [new file with mode: 0644]

index c3082c8d530220164de58c918ad727d5e1df773d..65f8a98b5ea93a31f7be2dc73c7c01dfc95ae69b 100644 (file)
@@ -1,2 +1,3 @@
 binder-use-euid-from-cred-instead-of-using-task.patch
 binder-use-cred-instead-of-task-for-selinux-checks.patch
+xhci-fix-usb-3.1-enumeration-issues-by-increasing-roothub-power-on-good-delay.patch
diff --git a/queue-4.9/xhci-fix-usb-3.1-enumeration-issues-by-increasing-roothub-power-on-good-delay.patch b/queue-4.9/xhci-fix-usb-3.1-enumeration-issues-by-increasing-roothub-power-on-good-delay.patch
new file mode 100644 (file)
index 0000000..38cf9b4
--- /dev/null
@@ -0,0 +1,58 @@
+From e1959faf085b004e6c3afaaaa743381f00e7c015 Mon Sep 17 00:00:00 2001
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+Date: Fri, 5 Nov 2021 18:00:36 +0200
+Subject: xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay
+
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+
+commit e1959faf085b004e6c3afaaaa743381f00e7c015 upstream.
+
+Some USB 3.1 enumeration issues were reported after the hub driver removed
+the minimum 100ms limit for the power-on-good delay.
+
+Since commit 90d28fb53d4a ("usb: core: reduce power-on-good delay time of
+root hub") the hub driver sets the power-on-delay based on the
+bPwrOn2PwrGood value in the hub descriptor.
+
+xhci driver has a 20ms bPwrOn2PwrGood value for both roothubs based
+on xhci spec section 5.4.8, but it's clearly not enough for the
+USB 3.1 devices, causing enumeration issues.
+
+Tests indicate full 100ms delay is needed.
+
+Reported-by: Walt Jr. Brake <mr.yming81@gmail.com>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Fixes: 90d28fb53d4a ("usb: core: reduce power-on-good delay time of root hub")
+Cc: stable <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20211105160036.549516-1-mathias.nyman@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/host/xhci-hub.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/xhci-hub.c
++++ b/drivers/usb/host/xhci-hub.c
+@@ -174,7 +174,6 @@ static void xhci_common_hub_descriptor(s
+ {
+       u16 temp;
+-      desc->bPwrOn2PwrGood = 10;      /* xhci section 5.4.9 says 20ms max */
+       desc->bHubContrCurrent = 0;
+       desc->bNbrPorts = ports;
+@@ -208,6 +207,7 @@ static void xhci_usb2_hub_descriptor(str
+       desc->bDescriptorType = USB_DT_HUB;
+       temp = 1 + (ports / 8);
+       desc->bDescLength = USB_DT_HUB_NONVAR_SIZE + 2 * temp;
++      desc->bPwrOn2PwrGood = 10;      /* xhci section 5.4.8 says 20ms */
+       /* The Device Removable bits are reported on a byte granularity.
+        * If the port doesn't exist within that byte, the bit is set to 0.
+@@ -258,6 +258,7 @@ static void xhci_usb3_hub_descriptor(str
+       xhci_common_hub_descriptor(xhci, desc, ports);
+       desc->bDescriptorType = USB_DT_SS_HUB;
+       desc->bDescLength = USB_DT_SS_HUB_SIZE;
++      desc->bPwrOn2PwrGood = 50;      /* usb 3.1 may fail if less than 100ms */
+       /* header decode latency should be zero for roothubs,
+        * see section 4.23.5.2.