drivers/usb/host/xhci-plat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
From: Hongyu Xie <xiehongyu1@kylinos.cn>
Disable stream for platform xHC controller with broken stream.
Signed-off-by: Hongyu Xie <xiehongyu1@kylinos.cn>
---
drivers/usb/host/xhci-plat.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 6dab142e72789..c79d5ed48a08b 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -328,7 +328,8 @@ int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s
}
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) {
--
2.25.1
On Wed, Jun 18, 2025 at 01:51:33PM +0800, xiehongyu1@kylinos.cn wrote: > From: Hongyu Xie <xiehongyu1@kylinos.cn> > > Disable stream for platform xHC controller with broken stream. > > Signed-off-by: Hongyu Xie <xiehongyu1@kylinos.cn> > --- > drivers/usb/host/xhci-plat.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c > index 6dab142e72789..c79d5ed48a08b 100644 > --- a/drivers/usb/host/xhci-plat.c > +++ b/drivers/usb/host/xhci-plat.c > @@ -328,7 +328,8 @@ int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s > } > > 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) { > -- > 2.25.1 > > Should this be backported to stable kernels? if so, how far back? What commit id does this fix? Or what hardware does this fix? thanks, greg k-h
From: Hongyu Xie <xiehongyu1@kylinos.cn> Hi greg 在 2025/6/18 14:03, Greg KH 写道: > On Wed, Jun 18, 2025 at 01:51:33PM +0800,xiehongyu1@kylinos.cn wrote: >> From: Hongyu Xie<xiehongyu1@kylinos.cn> >> >> Disable stream for platform xHC controller with broken stream. >> >> Signed-off-by: Hongyu Xie<xiehongyu1@kylinos.cn> >> --- >> drivers/usb/host/xhci-plat.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c >> index 6dab142e72789..c79d5ed48a08b 100644 >> --- a/drivers/usb/host/xhci-plat.c >> +++ b/drivers/usb/host/xhci-plat.c >> @@ -328,7 +328,8 @@ int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s >> } >> >> 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) { >> -- >> 2.25.1 >> >> > Should this be backported to stable kernels? if so, how far back? At least 5.4 lts. > What commit id does this fix? Or what hardware does this fix? I'm not sure. can_do_streams was introduced by 14aec589327a6 ("storage: accept some UAS devices if streams are unavailable") in Feb 11 20:36:04 2014 before XHCI_BROKEN_STREAMS was introduced by 8f873c1ff4ca0 ("xhci: Blacklist using streams on the Etron EJ168 controller") in Fri Jul 25 22:01:18 2014. > thanks, > > greg k-h
© 2016 - 2025 Red Hat, Inc.