Linux USB
 help / color / mirror / Atom feed
* 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox