]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Jul 2025 09:10:23 +0000 (11:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Jul 2025 09:10:23 +0000 (11:10 +0200)
added patches:
usb-cdnsp-do-not-disable-slot-for-disabled-slot.patch
usb-dwc3-abort-suspend-on-soft-disconnect-failure.patch
xhci-dbc-flush-queued-requests-before-stopping-dbc.patch
xhci-dbctty-disable-echo-flag-by-default.patch
xhci-disable-stream-for-xhc-controller-with-xhci_broken_streams.patch

queue-6.1/series
queue-6.1/usb-cdnsp-do-not-disable-slot-for-disabled-slot.patch [new file with mode: 0644]
queue-6.1/usb-dwc3-abort-suspend-on-soft-disconnect-failure.patch [new file with mode: 0644]
queue-6.1/xhci-dbc-flush-queued-requests-before-stopping-dbc.patch [new file with mode: 0644]
queue-6.1/xhci-dbctty-disable-echo-flag-by-default.patch [new file with mode: 0644]
queue-6.1/xhci-disable-stream-for-xhc-controller-with-xhci_broken_streams.patch [new file with mode: 0644]

index 0b02ec3234e9f3c16dcfd5ead0ccc49a9ef0afb5..b194eceb25bb28a70e8717a1c4c859226da6b0c1 100644 (file)
@@ -65,3 +65,8 @@ dpaa2-eth-fix-xdp_rxq_info-leak.patch
 platform-x86-think-lmi-fix-class-device-unregistrati.patch
 platform-x86-dell-wmi-sysman-fix-class-device-unregi.patch
 net-usb-lan78xx-fix-warn-in-__netif_napi_del_locked-.patch
+xhci-dbctty-disable-echo-flag-by-default.patch
+xhci-dbc-flush-queued-requests-before-stopping-dbc.patch
+xhci-disable-stream-for-xhc-controller-with-xhci_broken_streams.patch
+usb-cdnsp-do-not-disable-slot-for-disabled-slot.patch
+usb-dwc3-abort-suspend-on-soft-disconnect-failure.patch
diff --git a/queue-6.1/usb-cdnsp-do-not-disable-slot-for-disabled-slot.patch b/queue-6.1/usb-cdnsp-do-not-disable-slot-for-disabled-slot.patch
new file mode 100644 (file)
index 0000000..b666f3d
--- /dev/null
@@ -0,0 +1,36 @@
+From 7e2c421ef88e9da9c39e01496b7f5b0b354b42bc Mon Sep 17 00:00:00 2001
+From: Peter Chen <peter.chen@cixtech.com>
+Date: Thu, 19 Jun 2025 09:34:13 +0800
+Subject: usb: cdnsp: do not disable slot for disabled slot
+
+From: Peter Chen <peter.chen@cixtech.com>
+
+commit 7e2c421ef88e9da9c39e01496b7f5b0b354b42bc upstream.
+
+It doesn't need to do it, and the related command event returns
+'Slot Not Enabled Error' status.
+
+Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
+Cc: stable <stable@kernel.org>
+Suggested-by: Hongliang Yang <hongliang.yang@cixtech.com>
+Reviewed-by: Fugang Duan <fugang.duan@cixtech.com>
+Signed-off-by: Peter Chen <peter.chen@cixtech.com>
+Link: https://lore.kernel.org/r/20250619013413.35817-1-peter.chen@cixtech.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/cdns3/cdnsp-ring.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/cdns3/cdnsp-ring.c
++++ b/drivers/usb/cdns3/cdnsp-ring.c
+@@ -772,7 +772,9 @@ static int cdnsp_update_port_id(struct c
+       }
+       if (port_id != old_port) {
+-              cdnsp_disable_slot(pdev);
++              if (pdev->slot_id)
++                      cdnsp_disable_slot(pdev);
++
+               pdev->active_port = port;
+               cdnsp_enable_slot(pdev);
+       }
diff --git a/queue-6.1/usb-dwc3-abort-suspend-on-soft-disconnect-failure.patch b/queue-6.1/usb-dwc3-abort-suspend-on-soft-disconnect-failure.patch
new file mode 100644 (file)
index 0000000..02059b1
--- /dev/null
@@ -0,0 +1,100 @@
+From 630a1dec3b0eba2a695b9063f1c205d585cbfec9 Mon Sep 17 00:00:00 2001
+From: Kuen-Han Tsai <khtsai@google.com>
+Date: Wed, 28 May 2025 18:03:11 +0800
+Subject: usb: dwc3: Abort suspend on soft disconnect failure
+
+From: Kuen-Han Tsai <khtsai@google.com>
+
+commit 630a1dec3b0eba2a695b9063f1c205d585cbfec9 upstream.
+
+When dwc3_gadget_soft_disconnect() fails, dwc3_suspend_common() keeps
+going with the suspend, resulting in a period where the power domain is
+off, but the gadget driver remains connected.  Within this time frame,
+invoking vbus_event_work() will cause an error as it attempts to access
+DWC3 registers for endpoint disabling after the power domain has been
+completely shut down.
+
+Abort the suspend sequence when dwc3_gadget_suspend() cannot halt the
+controller and proceeds with a soft connect.
+
+Fixes: 9f8a67b65a49 ("usb: dwc3: gadget: fix gadget suspend/resume")
+Cc: stable <stable@kernel.org>
+Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
+Signed-off-by: Kuen-Han Tsai <khtsai@google.com>
+Link: https://lore.kernel.org/r/20250528100315.2162699-1-khtsai@google.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/dwc3/core.c   |    9 +++++++--
+ drivers/usb/dwc3/gadget.c |   22 +++++++++-------------
+ 2 files changed, 16 insertions(+), 15 deletions(-)
+
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -1007,6 +1007,7 @@ static void dwc3_set_incr_burst_type(str
+       int ntype;
+       int ret;
+       int i;
++      int ret;
+       cfg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0);
+@@ -2171,7 +2172,9 @@ static int dwc3_suspend_common(struct dw
+       case DWC3_GCTL_PRTCAP_DEVICE:
+               if (pm_runtime_suspended(dwc->dev))
+                       break;
+-              dwc3_gadget_suspend(dwc);
++              ret = dwc3_gadget_suspend(dwc);
++              if (ret)
++                      return ret;
+               synchronize_irq(dwc->irq_gadget);
+               dwc3_core_exit(dwc);
+               break;
+@@ -2202,7 +2205,9 @@ static int dwc3_suspend_common(struct dw
+                       break;
+               if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) {
+-                      dwc3_gadget_suspend(dwc);
++                      ret = dwc3_gadget_suspend(dwc);
++                      if (ret)
++                              return ret;
+                       synchronize_irq(dwc->irq_gadget);
+               }
+--- a/drivers/usb/dwc3/gadget.c
++++ b/drivers/usb/dwc3/gadget.c
+@@ -4641,26 +4641,22 @@ int dwc3_gadget_suspend(struct dwc3 *dwc
+       int ret;
+       ret = dwc3_gadget_soft_disconnect(dwc);
+-      if (ret)
+-              goto err;
+-
+-      spin_lock_irqsave(&dwc->lock, flags);
+-      if (dwc->gadget_driver)
+-              dwc3_disconnect_gadget(dwc);
+-      spin_unlock_irqrestore(&dwc->lock, flags);
+-
+-      return 0;
+-
+-err:
+       /*
+        * Attempt to reset the controller's state. Likely no
+        * communication can be established until the host
+        * performs a port reset.
+        */
+-      if (dwc->softconnect)
++      if (ret && dwc->softconnect) {
+               dwc3_gadget_soft_connect(dwc);
++              return -EAGAIN;
++      }
+-      return ret;
++      spin_lock_irqsave(&dwc->lock, flags);
++      if (dwc->gadget_driver)
++              dwc3_disconnect_gadget(dwc);
++      spin_unlock_irqrestore(&dwc->lock, flags);
++
++      return 0;
+ }
+ int dwc3_gadget_resume(struct dwc3 *dwc)
diff --git a/queue-6.1/xhci-dbc-flush-queued-requests-before-stopping-dbc.patch b/queue-6.1/xhci-dbc-flush-queued-requests-before-stopping-dbc.patch
new file mode 100644 (file)
index 0000000..5c0a6a7
--- /dev/null
@@ -0,0 +1,37 @@
+From efe3e3ae5a66cb38ef29c909e951b4039044bae9 Mon Sep 17 00:00:00 2001
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+Date: Fri, 27 Jun 2025 17:41:22 +0300
+Subject: xhci: dbc: Flush queued requests before stopping dbc
+
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+
+commit efe3e3ae5a66cb38ef29c909e951b4039044bae9 upstream.
+
+Flush dbc requests when dbc is stopped and transfer rings are freed.
+Failure to flush them lead to leaking memory and dbc completing odd
+requests after resuming from suspend, leading to error messages such as:
+
+[   95.344392] xhci_hcd 0000:00:0d.0: no matched request
+
+Cc: stable <stable@kernel.org>
+Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Link: https://lore.kernel.org/r/20250627144127.3889714-5-mathias.nyman@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/host/xhci-dbgcap.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/usb/host/xhci-dbgcap.c
++++ b/drivers/usb/host/xhci-dbgcap.c
+@@ -639,6 +639,10 @@ static void xhci_dbc_stop(struct xhci_db
+       case DS_DISABLED:
+               return;
+       case DS_CONFIGURED:
++              spin_lock(&dbc->lock);
++              xhci_dbc_flush_requests(dbc);
++              spin_unlock(&dbc->lock);
++
+               if (dbc->driver->disconnect)
+                       dbc->driver->disconnect(dbc);
+               break;
diff --git a/queue-6.1/xhci-dbctty-disable-echo-flag-by-default.patch b/queue-6.1/xhci-dbctty-disable-echo-flag-by-default.patch
new file mode 100644 (file)
index 0000000..03f5344
--- /dev/null
@@ -0,0 +1,39 @@
+From 2b857d69a5e116150639a0c6c39c86cc329939ee Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= <ukaszb@chromium.org>
+Date: Fri, 27 Jun 2025 17:41:21 +0300
+Subject: xhci: dbctty: disable ECHO flag by default
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Łukasz Bartosik <ukaszb@chromium.org>
+
+commit 2b857d69a5e116150639a0c6c39c86cc329939ee upstream.
+
+When /dev/ttyDBC0 device is created then by default ECHO flag
+is set for the terminal device. However if data arrives from
+a peer before application using /dev/ttyDBC0 applies its set
+of terminal flags then the arriving data will be echoed which
+might not be desired behavior.
+
+Fixes: 4521f1613940 ("xhci: dbctty: split dbc tty driver registration and unregistration functions.")
+Cc: stable <stable@kernel.org>
+Signed-off-by: Łukasz Bartosik <ukaszb@chromium.org>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Link: https://lore.kernel.org/stable/20250610111802.18742-1-ukaszb%40chromium.org
+Link: https://lore.kernel.org/r/20250627144127.3889714-4-mathias.nyman@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/host/xhci-dbgtty.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/host/xhci-dbgtty.c
++++ b/drivers/usb/host/xhci-dbgtty.c
+@@ -586,6 +586,7 @@ int dbc_tty_init(void)
+       dbc_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
+       dbc_tty_driver->subtype = SERIAL_TYPE_NORMAL;
+       dbc_tty_driver->init_termios = tty_std_termios;
++      dbc_tty_driver->init_termios.c_lflag &= ~ECHO;
+       dbc_tty_driver->init_termios.c_cflag =
+                       B9600 | CS8 | CREAD | HUPCL | CLOCAL;
+       dbc_tty_driver->init_termios.c_ispeed = 9600;
diff --git a/queue-6.1/xhci-disable-stream-for-xhc-controller-with-xhci_broken_streams.patch b/queue-6.1/xhci-disable-stream-for-xhc-controller-with-xhci_broken_streams.patch
new file mode 100644 (file)
index 0000000..3a88a7d
--- /dev/null
@@ -0,0 +1,33 @@
+From cd65ee81240e8bc3c3119b46db7f60c80864b90b Mon Sep 17 00:00:00 2001
+From: Hongyu Xie <xiehongyu1@kylinos.cn>
+Date: Fri, 27 Jun 2025 17:41:20 +0300
+Subject: xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
+
+From: Hongyu Xie <xiehongyu1@kylinos.cn>
+
+commit cd65ee81240e8bc3c3119b46db7f60c80864b90b upstream.
+
+Disable stream for platform xHC controller with broken stream.
+
+Fixes: 14aec589327a6 ("storage: accept some UAS devices if streams are unavailable")
+Cc: stable <stable@kernel.org>
+Signed-off-by: Hongyu Xie <xiehongyu1@kylinos.cn>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Link: https://lore.kernel.org/r/20250627144127.3889714-3-mathias.nyman@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/host/xhci-plat.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/xhci-plat.c
++++ b/drivers/usb/host/xhci-plat.c
+@@ -351,7 +351,8 @@ static int xhci_plat_probe(struct platfo
+       }
+       usb3_hcd = xhci_get_usb3_hcd(xhci);
+-      if (usb3_hcd && HCC_MAX_PSA(xhci->hcc_params) >= 4)
++      if (usb3_hcd && HCC_MAX_PSA(xhci->hcc_params) >= 4 &&
++          !(xhci->quirks & XHCI_BROKEN_STREAMS))
+               usb3_hcd->can_do_streams = 1;
+       if (xhci->shared_hcd) {