Similarly like for as for alpir case this most likely will require some different fixes, but you can try if disabling Soft Retry works. You can just disable like showed in comment 147
> $ lspci -k -nn | grep -B2 xhci
> 02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series
> Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
> Subsystem: ASMedia Technology Inc. Device [1b21:1142]
> Kernel driver in use: xhci_hcd
>
[snip]
> If someone has some spare time to glance at it or comment on my error ;)
> (diff availible for 30 days) @
> https://p.teknik.io/lIBbA
ASMedia is subsystem_{vendor,device) so most likely quirk flag is not set properly for you. You can print values by patch like this to see:
(In reply to biopsin from comment #185) /bugzilla. kernel. org/show_ bug.cgi? id=202541# c107]
> [Continuing my first report in
> comment:https:/
Similarly like for as for alpir case this most likely will require some different fixes, but you can try if disabling Soft Retry works. You can just disable like showed in comment 147
> $ lspci -k -nn | grep -B2 xhci /p.teknik. io/lIBbA
> 02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series
> Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
> Subsystem: ASMedia Technology Inc. Device [1b21:1142]
> Kernel driver in use: xhci_hcd
>
[snip]
> If someone has some spare time to glance at it or comment on my error ;)
> (diff availible for 30 days) @
> https:/
ASMedia is subsystem_ {vendor, device) so most likely quirk flag is not set properly for you. You can print values by patch like this to see:
diff --git a/drivers/ usb/host/ xhci-pci. c b/drivers/ usb/host/ xhci-pci. c .0ec9c3637b7a 100644 usb/host/ xhci-pci. c usb/host/ xhci-pci. c quirks( struct device *dev, struct xhci_hcd *xhci)
index 906a0e08821e.
--- a/drivers/
+++ b/drivers/
@@ -102,6 +102,9 @@ static void xhci_pci_
id = pci_match_ id(pdev- >driver- >id_table, pdev);
+ printk("vendor: 0x%04x device 0x%04x subvendor 0x%04x subdevice 0x%04x\n", _vendor, pdev->subsystem _device) ;
driver_ data = (struct xhci_driver_data *)id->driver_data;
xhci- >quirks |= driver_ data->quirks;
+ pdev->vendor, pdev->device, pdev->subsystem
+
if (id && id->driver_data) {
If indeed those are subsystem ID's I think there is bug in existing xhci-pci.c quirks code:
if (pdev->vendor == PCI_VENDOR_ ID_ASMEDIA &&
pdev- >device == PCI_DEVICE_ ID_ASMEDIA_ 1042_XHCI)
xhci- >quirks |= XHCI_BROKEN_ STREAMS; ID_ASMEDIA &&
pdev- >device == PCI_DEVICE_ ID_ASMEDIA_ 1042A_XHCI)
xhci- >quirks |= XHCI_TRUST_ TX_LENGTH; ID_ASMEDIA &&
(pdev- >device == PCI_DEVICE_ ID_ASMEDIA_ 1142_XHCI ||
pdev- >device == PCI_DEVICE_ ID_ASMEDIA_ 2142_XHCI) )
xhci- >quirks |= XHCI_NO_ 64BIT_SUPPORT
if (pdev->vendor == PCI_VENDOR_
if (pdev->vendor == PCI_VENDOR_
and those check should be replaced by pdev->subsystem _vendor and pdev->subsystem _device.