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 - 2026 Red Hat, Inc.