]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2019 12:03:47 +0000 (14:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2019 12:03:47 +0000 (14:03 +0200)
added patches:
revert-usb-core-only-clean-up-what-we-allocated.patch
xhci-fix-port-resume-done-detection-for-ss-ports-with-lpm-enabled.patch

queue-4.4/revert-usb-core-only-clean-up-what-we-allocated.patch [new file with mode: 0644]
queue-4.4/series
queue-4.4/xhci-fix-port-resume-done-detection-for-ss-ports-with-lpm-enabled.patch [new file with mode: 0644]

diff --git a/queue-4.4/revert-usb-core-only-clean-up-what-we-allocated.patch b/queue-4.4/revert-usb-core-only-clean-up-what-we-allocated.patch
new file mode 100644 (file)
index 0000000..f1e6846
--- /dev/null
@@ -0,0 +1,50 @@
+From cf4df407e0d7cde60a45369c2a3414d18e2d4fdd Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Wed, 13 Dec 2017 11:59:39 +0100
+Subject: Revert "USB: core: only clean up what we allocated"
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit cf4df407e0d7cde60a45369c2a3414d18e2d4fdd upstream.
+
+This reverts commit 32fd87b3bbf5f7a045546401dfe2894dbbf4d8c3.
+
+Alan wrote a better fix for this...
+
+Cc: Andrey Konovalov <andreyknvl@google.com>
+Cc: stable <stable@vger.kernel.org>
+Cc: Nathan Chancellor <natechancellor@gmail.com>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/config.c |    9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/core/config.c
++++ b/drivers/usb/core/config.c
+@@ -734,21 +734,18 @@ void usb_destroy_configuration(struct us
+               return;
+       if (dev->rawdescriptors) {
+-              for (i = 0; i < dev->descriptor.bNumConfigurations &&
+-                              i < USB_MAXCONFIG; i++)
++              for (i = 0; i < dev->descriptor.bNumConfigurations; i++)
+                       kfree(dev->rawdescriptors[i]);
+               kfree(dev->rawdescriptors);
+               dev->rawdescriptors = NULL;
+       }
+-      for (c = 0; c < dev->descriptor.bNumConfigurations &&
+-                      c < USB_MAXCONFIG; c++) {
++      for (c = 0; c < dev->descriptor.bNumConfigurations; c++) {
+               struct usb_host_config *cf = &dev->config[c];
+               kfree(cf->string);
+-              for (i = 0; i < cf->desc.bNumInterfaces &&
+-                              i < USB_MAXINTERFACES; i++) {
++              for (i = 0; i < cf->desc.bNumInterfaces; i++) {
+                       if (cf->intf_cache[i])
+                               kref_put(&cf->intf_cache[i]->ref,
+                                         usb_release_interface_cache);
index bab470b46fe551ded6ecc40a8d34382f4c5e520e..83b467a49c42e4679c114ea641323b6bd6569608 100644 (file)
@@ -124,3 +124,5 @@ gpio-adnp-fix-testing-wrong-value-in-adnp_gpio_direction_input.patch
 perf-intel-pt-fix-tsc-slip.patch
 x86-smp-enforce-config_hotplug_cpu-when-smp-y.patch
 kvm-reject-device-ioctls-from-processes-other-than-the-vm-s-creator.patch
+xhci-fix-port-resume-done-detection-for-ss-ports-with-lpm-enabled.patch
+revert-usb-core-only-clean-up-what-we-allocated.patch
diff --git a/queue-4.4/xhci-fix-port-resume-done-detection-for-ss-ports-with-lpm-enabled.patch b/queue-4.4/xhci-fix-port-resume-done-detection-for-ss-ports-with-lpm-enabled.patch
new file mode 100644 (file)
index 0000000..6dce63b
--- /dev/null
@@ -0,0 +1,58 @@
+From 6cbcf596934c8e16d6288c7cc62dfb7ad8eadf15 Mon Sep 17 00:00:00 2001
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+Date: Fri, 22 Mar 2019 17:50:15 +0200
+Subject: xhci: Fix port resume done detection for SS ports with LPM enabled
+
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+
+commit 6cbcf596934c8e16d6288c7cc62dfb7ad8eadf15 upstream.
+
+A suspended SS port in U3 link state will go to U0 when resumed, but
+can almost immediately after that enter U1 or U2 link power save
+states before host controller driver reads the port status.
+
+Host controller driver only checks for U0 state, and might miss
+the finished resume, leaving flags unclear and skip notifying usb
+code of the wake.
+
+Add U1 and U2 to the possible link states when checking for finished
+port resume.
+
+Cc: stable <stable@vger.kernel.org>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/xhci-ring.c |    9 ++++++---
+ drivers/usb/host/xhci.h      |    1 +
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -1642,10 +1642,13 @@ static void handle_port_status(struct xh
+               }
+       }
+-      if ((temp & PORT_PLC) && (temp & PORT_PLS_MASK) == XDEV_U0 &&
+-                      DEV_SUPERSPEED_ANY(temp)) {
++      if ((temp & PORT_PLC) &&
++          DEV_SUPERSPEED_ANY(temp) &&
++          ((temp & PORT_PLS_MASK) == XDEV_U0 ||
++           (temp & PORT_PLS_MASK) == XDEV_U1 ||
++           (temp & PORT_PLS_MASK) == XDEV_U2)) {
+               xhci_dbg(xhci, "resume SS port %d finished\n", port_id);
+-              /* We've just brought the device into U0 through either the
++              /* We've just brought the device into U0/1/2 through either the
+                * Resume state after a device remote wakeup, or through the
+                * U3Exit state after a host-initiated resume.  If it's a device
+                * initiated remote wake, don't pass up the link state change,
+--- a/drivers/usb/host/xhci.h
++++ b/drivers/usb/host/xhci.h
+@@ -309,6 +309,7 @@ struct xhci_op_regs {
+  */
+ #define PORT_PLS_MASK (0xf << 5)
+ #define XDEV_U0               (0x0 << 5)
++#define XDEV_U1               (0x1 << 5)
+ #define XDEV_U2               (0x2 << 5)
+ #define XDEV_U3               (0x3 << 5)
+ #define XDEV_INACTIVE (0x6 << 5)