Re: [PATCH] usb-storage: apply IGNORE_UAS for Realtek on RTL9210

From: Greg KH
Date: Fri Apr 11 2025 - 09:51:09 EST


On Wed, Mar 26, 2025 at 10:20:19AM +0800, Jie Deng wrote:
> The UAS mode of Realtek USB_HDD is reported
> to fail to work on several platforms with
> the following error message, then after
> re-connecting the device will be offlined
> and not working at all.
>
> [ 143.361210] sd 9:0:0:0: [sdg]
> tag#6 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD IN
> [ 143.372377] sd 9:0:0:0: [sdg]
> tag#6 CDB: Read(10) 28 00 00 00 00 10 00 00 10 00
> [ 143.382908] sd 9:0:0:0: [sdg]
> tag#5 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN
> [ 143.394080] sd 9:0:0:0: [sdg]
> tag#5 CDB: Read(10) 28 00 00 00 00 00 00 00 10 00
> [ 143.404610] sd 9:0:0:0: [sdg]
> tag#4 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD IN
> [ 143.415782] sd 9:0:0:0: [sdg]
> tag#4 CDB: Read(10) 28 00 00 00 00 30 00 00 10 00
> [ 148.437916][ 22] xhci_hcd 0000:ba:02.0:
> xHCI host not responding to stop endpoint command.
> [ 148.462295][ 22] xhci_hcd 0000:ba:02.0:
> xHCI host controller not responding, assume dead

Please don't wrap error message lines.

> The Realtek Manufacturer's device cannot
> initialize properly using the UAS driver,
> so we need to switch it to usb-storage

Are you sure this now works? Also wrap your changelog at 72 columns
please.

>
> Signed-off-by: Jie Deng <dengjie03@xxxxxxxxxx>
> ---
> drivers/usb/storage/uas-detect.h | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/storage/uas-detect.h b/drivers/usb/storage/uas-detect.h
> index 4d3b49e5b87a..23579a2a1181 100644
> --- a/drivers/usb/storage/uas-detect.h
> +++ b/drivers/usb/storage/uas-detect.h
> @@ -125,8 +125,11 @@ static int uas_use_uas_driver(struct usb_interface *intf,
> */
> if (le16_to_cpu(udev->descriptor.idVendor) == 0x0bda &&
> le16_to_cpu(udev->descriptor.idProduct) == 0x9210 &&
> - (udev->manufacturer && !strcmp(udev->manufacturer, "HIKSEMI")) &&
> - (udev->product && !strcmp(udev->product, "MD202")))
> + (((udev->manufacturer && !strcmp(udev->manufacturer, "HIKSEMI")) &&
> + (udev->product && !strcmp(udev->product, "MD202"))) ||
> + ((udev->manufacturer && !strcmp(udev->manufacturer, "Realtek")) &&
> + (udev->product && !strcmp(udev->product, "RTL9210")))

So all products with that string are bad? Why not use the product id
instead?

thanks,

greg k-h