* xhci: SuperSpeed half of onboard ASMedia ASM2074 hub (174c:3174) never enumerates on AMD PROM21 xHCI (-71), works on Windows
@ 2026-10-10 7:47 Brian Tucker
2026-10-19 18:14 ` Michal Pecio
0 siblings, 1 reply; 2+ messages in thread
From: Brian Tucker @ 2026-10-10 7:47 UTC (permalink / raw)
To: linux-usb; +Cc: mathias.nyman
[-- Attachment #1: Type: text/plain, Size: 2651 bytes --]
Hi,
On an ASUS ROG STRIX X870E-E GAMING WIFI7 NEO (Ryzen 9 9950X3D2), the
USB 3 half of an onboard ASMedia ASM2074 hub never enumerates. Its USB 2
half (174c:2174) and the devices behind it work, so that port group is
stuck at 480M. Windows 11 on the same machine enumerates both halves on
the same root port.
Host: AMD Promontory 21 xHCI at 0000:0f:00.0, hcc params 0x0200ef81, hci
version 0x110. DMI/BIOS, lspci and lsusb -v are in asm2074-info.txt.
Every boot:
[ 5.478608] usb 9-5: Device not responding to setup address.
[ 9.648279] usb 9-5: Device not responding to setup address.
[ 9.851716] usb 9-5: device not accepting address 3, error -71
[ 14.138394] usb 9-5: Device not responding to setup address.
[ 18.307806] usb 9-5: Device not responding to setup address.
[ 18.515615] usb 9-5: device not accepting address 4, error -71
[ 23.278983] usb 9-5: Device not responding to setup address.
[ 27.448442] usb 9-5: Device not responding to setup address.
[ 27.659615] usb 9-5: device not accepting address 6, error -71
[ 31.938623] usb 9-5: Device not responding to setup address.
[ 36.107891] usb 9-5: Device not responding to setup address.
[ 36.315597] usb 9-5: device not accepting address 7, error -71
[ 36.328157] usb usb9-port5: unable to enumerate USB device
Topology (bus 8 = USB 2 roothub, bus 9 = USB 3 roothub of 0f:00.0):
/: Bus 008.Port 001: Dev 001, Class=root_hub,
Driver=xhci-pci-prom21/12p, 480M |__ Port 004: Dev 003, Class=Hub,
Driver=hub/4p, 480M ASM1174 174c:2274 |__ Port 005: Dev 004, Class=Hub,
Driver=hub/4p, 480M ASM2074 174c:2174
/: Bus 009.Port 001: Dev 001, Class=root_hub, Driver=xhci-pci-prom21/5p,
20000M/x2 |__ Port 004: Dev 002, Class=Hub, Driver=hub/4p, 5000M ASM1174
174c:3274 (port 5 = ASM2074 SuperSpeed half, 174c:3174 - never enumerates)
The ASM1174 on the neighbouring port pair works fine at 5000M.
Windows 11 on the same hardware lists all four hub functions as OK,
including USB\VID_174C&PID_3174\8&15CD6C09&0&5 on root port 5.
- Same failure on 7.2.9-2-cachyos and 6.18.55-2-cachyos-lts (bus is
numbered 4 on 6.18: usb 4-5 / usb4-port5).
- Also reproduces at runtime after unbind/bind of 0000:0f:00.0.
- Side effect: while the ~31 s of retries run, other devices on that
controller enumerate late and initramfs switch-root waits until ~40 s.
Attached (xz): dmesg with dyndbg "module usbcore +p; module xhci_hcd +p"
and the xhci-hcd trace events, both covering an unbind/bind of
0000:0f:00.0 on 7.2.9.
These are CachyOS kernels; happy to test mainline or patches.
Thanks,
Brian Tucker
[-- Attachment #2: asm2074-info.txt --]
[-- Type: text/plain, Size: 9096 bytes --]
7.2.9-2-cachyos
ROG STRIX X870E-E GAMING WIFI7 NEO
1103
0f:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 800 Series Chipset USB 3.x XHCI Controller [1022:43fd] (rev 01)
Subsystem: ASMedia Technology Inc. Device [1b21:1142]
Kernel driver in use: xhci-pci-prom21
Kernel modules: xhci_pci_prom21, xhci_pci
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
|__ Port 002: Dev 002, If 0, Class=Communications, Driver=cdc_acm, 12M
|__ Port 002: Dev 002, If 1, Class=CDC Data, Driver=cdc_acm, 12M
|__ Port 002: Dev 002, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 002: Dev 002, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 002: Dev 002, If 4, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 002: Dev 002, If 5, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 002: Dev 002, If 6, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci-pci-prom21/12p, 480M
|__ Port 004: Dev 002, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 005: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 006: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 006: Dev 003, If 1, Class=Vendor Specific Class, Driver=[none], 480M
|__ Port 009: Dev 005, If 0, Class=Wireless, Driver=btusb, 480M
|__ Port 009: Dev 005, If 1, Class=Wireless, Driver=btusb, 480M
|__ Port 009: Dev 005, If 2, Class=Wireless, Driver=btusb, 480M
/: Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci-pci-prom21/5p, 20000M/x2
|__ Port 004: Dev 002, If 0, Class=Hub, Driver=hub/5p, 5000M
/: Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci-pci-prom21/12p, 480M
|__ Port 002: Dev 002, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 002: Dev 002, If 1, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 002: Dev 002, If 2, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 002: Dev 002, If 3, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 004: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 005: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 002: Dev 006, If 0, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 002: Dev 006, If 1, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 002: Dev 006, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 007, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 003: Dev 007, If 1, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 003: Dev 007, If 2, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 003: Dev 007, If 3, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 003: Dev 007, If 4, Class=Human Interface Device, Driver=[none], 480M
|__ Port 004: Dev 008, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 006: Dev 005, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 4, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 5, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 6, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 006: Dev 005, If 7, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 007: Dev 009, If 0, Class=Vendor Specific Class, Driver=[none], 12M
|__ Port 007: Dev 009, If 2, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 009.Port 001: Dev 001, Class=root_hub, Driver=xhci-pci-prom21/5p, 20000M/x2
|__ Port 004: Dev 002, If 0, Class=Hub, Driver=hub/4p, 5000M
Bus 008 Device 004: ID 174c:2174 ASMedia Technology Inc. ASM2074
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 9 Hub
bDeviceSubClass 0 [unknown]
bDeviceProtocol 2 TT per port
bMaxPacketSize0 64
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x2174 ASM2074
bcdDevice 0.01
iManufacturer 2 ASMedia
iProduct 3 ASM2074
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0029
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 1 Single TT
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 2 TT per port
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0049
bNumDeviceCaps 5
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x0000fe1e
BESL Link Power Management (LPM) Supported
Baseline BESL value 9000 us
Deep BESL value 10000 us
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
SuperSpeedPlus USB Device Capability:
bLength 28
bDescriptorType 16
bDevCapabilityType 10
bmAttributes 0x00000023
Sublink Speed Attribute count 4
Sublink Speed ID count 2
wFunctionalitySupport 0x2200
Min functional Speed Attribute ID: 0
Min functional RX lanes: 2
Min functional TX lanes: 2
bmSublinkSpeedAttr[0] 0x00050030
Speed Attribute ID: 0 5Gb/s Symmetric RX SuperSpeed
bmSublinkSpeedAttr[1] 0x000500b0
Speed Attribute ID: 0 5Gb/s Symmetric TX SuperSpeed
bmSublinkSpeedAttr[2] 0x000a4031
Speed Attribute ID: 1 10Gb/s Symmetric RX SuperSpeedPlus
bmSublinkSpeedAttr[3] 0x000a40b1
Speed Attribute ID: 1 10Gb/s Symmetric TX SuperSpeedPlus
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {bbd5008b-7ed9-4eea-8979-c7cccc956378}
** UNRECOGNIZED: 03 10 0b
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 4
wHubCharacteristic 0x00a9
Per-port power switching
Per-port overcurrent protection
TT think time 16 FS bits
Port indicators
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 100 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0103 power enable connect
Port 3: 0000.0503 highspeed power enable connect
Port 4: 0000.0503 highspeed power enable connect
Device Status: 0x0001
Self Powered
[-- Attachment #3: asm2074-dmesg.txt.xz --]
[-- Type: application/x-xz, Size: 27204 bytes --]
[-- Attachment #4: asm2074-xhci-trace.txt.xz --]
[-- Type: application/x-xz, Size: 730928 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: xhci: SuperSpeed half of onboard ASMedia ASM2074 hub (174c:3174) never enumerates on AMD PROM21 xHCI (-71), works on Windows
2026-10-10 7:47 xhci: SuperSpeed half of onboard ASMedia ASM2074 hub (174c:3174) never enumerates on AMD PROM21 xHCI (-71), works on Windows Brian Tucker
@ 2026-10-19 18:14 ` Michal Pecio
0 siblings, 0 replies; 2+ messages in thread
From: Michal Pecio @ 2026-10-19 18:14 UTC (permalink / raw)
To: Brian Tucker; +Cc: linux-usb, mathias.nyman
[-- Attachment #1: Type: text/plain, Size: 1399 bytes --]
On Sat, 10 Oct 2026 07:47:53 +0000, Brian Tucker wrote:
> Hi,
>
> On an ASUS ROG STRIX X870E-E GAMING WIFI7 NEO (Ryzen 9 9950X3D2), the
> USB 3 half of an onboard ASMedia ASM2074 hub never enumerates. Its
> USB 2 half (174c:2174) and the devices behind it work, so that port
> group is stuck at 480M. Windows 11 on the same machine enumerates
> both halves on the same root port.
>
> Host: AMD Promontory 21 xHCI at 0000:0f:00.0, hcc params 0x0200ef81, hci
> version 0x110. DMI/BIOS, lspci and lsusb -v are in asm2074-info.txt.
>
> Every boot:
>
> [ 5.478608] usb 9-5: Device not responding to setup address.
>
> [ 9.648279] usb 9-5: Device not responding to setup address.
>
> [ 9.851716] usb 9-5: device not accepting address 3, error -71
That's a very early failure, looks like the first control request
issued to the USB device times out. (Many ASMedia xHCI controllers
are known to internally abort Address Device after a few seconds).
Does this patch make any difference? It skips a redundant reset and
adds a redundant xHCI command to match behavior I see in Windows 10
running in QEMU. Also adds some debug noise.
> Windows 11 on the same hardware lists all four hub functions as OK,
> including USB\VID_174C&PID_3174\8&15CD6C09&0&5 on root port 5.
Odd, plenty of systems have no problems enumerating this device ID:
http://linux-hardware.org/?id=usb:174c-3174
Regards,
Michal
[-- Attachment #2: xhci-windows.patch --]
[-- Type: text/x-patch, Size: 2174 bytes --]
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 7360cb4f3ae2..519f6d76c0ac 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4954,6 +4954,12 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
/* Reset the device; full speed may morph to high speed */
/* FIXME a USB 2.0 device may morph into SuperSpeed on reset. */
+ if (initial && oldspeed >= USB_SPEED_SUPER) {
+ dev_err(&udev->dev, "skip initial reset udev->state %d\n", udev->state);
+ update_devnum(udev, 0);
+ usb_set_device_state(udev, USB_STATE_DEFAULT);
+ retval = 0;
+ } else
retval = hub_port_reset(hub, port1, udev, delay, false);
if (retval < 0) /* error or disconnect */
goto fail;
@@ -5053,7 +5059,6 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
break;
}
- if (do_new_scheme) {
retval = hub_enable_device(udev);
if (retval < 0) {
dev_err(&udev->dev,
@@ -5061,6 +5066,7 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
retval);
goto fail;
}
+ if (do_new_scheme) {
maxp0 = get_bMaxPacketSize0(udev, buf,
GET_DESCRIPTOR_BUFSIZE, retries == 0);
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 34f342d2c7d7..c943ae43d624 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4455,6 +4455,23 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
ctrl_ctx->drop_flags = 0;
trace_xhci_address_ctx(xhci, virt_dev->in_ctx);
+ {
+ struct xhci_ep_ctx *ep0_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, 0);
+ char msg[XHCI_MSG_MAX];
+
+ xhci_decode_slot_context(msg,
+ le32_to_cpu(slot_ctx->dev_info),
+ le32_to_cpu(slot_ctx->dev_info2),
+ le32_to_cpu(slot_ctx->tt_info),
+ le32_to_cpu(slot_ctx->dev_state));
+ xhci_info(xhci, "slot_ctx: %s\n", msg);
+ xhci_decode_ep_context(msg,
+ le32_to_cpu(ep0_ctx->ep_info),
+ le32_to_cpu(ep0_ctx->ep_info2),
+ le64_to_cpu(ep0_ctx->deq),
+ le32_to_cpu(ep0_ctx->tx_info));
+ xhci_info(xhci, "ep0_ctx: %s\n", msg);
+ }
trace_xhci_address_ctrl_ctx(ctrl_ctx);
spin_lock_irqsave(&xhci->lock, flags);
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-19 18:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-10 7:47 xhci: SuperSpeed half of onboard ASMedia ASM2074 hub (174c:3174) never enumerates on AMD PROM21 xHCI (-71), works on Windows Brian Tucker
2026-10-19 18:14 ` Michal Pecio
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.