[PATCH v1] xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS

xiehongyu1@kylinos.cn posted 1 patch 3 months, 3 weeks ago
There is a newer version of this series
drivers/usb/host/xhci-plat.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH v1] xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
Posted by xiehongyu1@kylinos.cn 3 months, 3 weeks ago
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
Re: [PATCH v1] xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
Posted by Greg KH 3 months, 3 weeks ago
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
Re: [PATCH v1] xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
Posted by xiehongyu1@kylinos.cn 3 months, 3 weeks ago
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