* xHCI host dies on device unplug
@ 2022-12-05 21:27 Ladislav Michl
2022-12-06 13:17 ` Ladislav Michl
0 siblings, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-05 21:27 UTC (permalink / raw)
To: linux-usb
I'm running current linux.git on custom Marvell OCTEON III CN7020
based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
(idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
disconnect:
xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
to tell if there is any errata :/ In case anyone see a clue in debug
logs bellow, I'll happily give it a try.
Thanks in advance,
ladis
Realtek unplug:
[ 2098.248876] xhci-hcd xhci-hcd.0.auto: Port change event, 1-1, id 1, portsc: 0x202a0
[ 2098.248908] xhci-hcd xhci-hcd.0.auto: handle_port_status: starting usb1 port polling.
[ 2098.248976] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x202a0, return 0x10100
[ 2098.249020] xhci-hcd xhci-hcd.0.auto: clear port1 connect change, portsc: 0x2a0
[ 2098.249050] usb 1-1: USB disconnect, device number 2
[ 2098.254258] xhci-hcd xhci-hcd.0.auto: xhci_drop_endpoint called for udev 000000006624094f
[ 2098.254416] xhci-hcd xhci-hcd.0.auto: drop ep 0x81, slot id 1, new drop flags = 0x8, new add flags = 0x0
[ 2098.254434] xhci-hcd xhci-hcd.0.auto: xhci_drop_endpoint called for udev 000000006624094f
[ 2098.254489] xhci-hcd xhci-hcd.0.auto: drop ep 0x2, slot id 1, new drop flags = 0x18, new add flags = 0x0
[ 2098.254502] xhci-hcd xhci-hcd.0.auto: xhci_drop_endpoint called for udev 000000006624094f
[ 2098.254555] xhci-hcd xhci-hcd.0.auto: drop ep 0x3, slot id 1, new drop flags = 0x58, new add flags = 0x0
[ 2098.254570] xhci-hcd xhci-hcd.0.auto: xhci_check_bandwidth called for udev 000000006624094f
[ 2098.254598] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 2098.254663] xhci-hcd xhci-hcd.0.auto: Successful Endpoint Configure command
[ 2098.255126] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 2098.255206] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x2a0, return 0x100
[ 2098.296162] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x2a0, return 0x100
[ 2098.346137] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x2a0, return 0x100
[ 2098.366138] xhci-hcd xhci-hcd.0.auto: xhci_hub_status_data: stopping usb1 port polling
[ 2098.396143] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x2a0, return 0x100
[ 2098.446134] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x2a0, return 0x100
Ralink unplug:
[ 1986.428836] xhci-hcd xhci-hcd.0.auto: Transfer error for slot 1 ep 2 on endpoint
[ 1986.428870] xhci-hcd xhci-hcd.0.auto: Soft-reset ep 2, slot 1
[ 1986.428887] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 1986.428909] xhci-hcd xhci-hcd.0.auto: Ignoring reset ep completion code of 1
[ 1986.428925] xhci-hcd xhci-hcd.0.auto: Port change event, 1-1, id 1, portsc: 0x202a0
[ 1986.428941] xhci-hcd xhci-hcd.0.auto: handle_port_status: starting usb1 port polling.
[ 1986.428960] xhci-hcd xhci-hcd.0.auto: Transfer error for slot 1 ep 2 on endpoint
[ 1986.428971] xhci-hcd xhci-hcd.0.auto: Soft-reset ep 2, slot 1
[ 1986.428983] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 1986.429001] xhci-hcd xhci-hcd.0.auto: Ignoring reset ep completion code of 1
[ 1986.429044] xhci-hcd xhci-hcd.0.auto: Transfer error for slot 1 ep 2 on endpoint
[ 1986.429057] xhci-hcd xhci-hcd.0.auto: Soft-reset ep 2, slot 1
[ 1986.429069] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 1986.429087] xhci-hcd xhci-hcd.0.auto: Ignoring reset ep completion code of 1
[ 1986.429110] xhci-hcd xhci-hcd.0.auto: Get port status 1-1 read: 0x202a0, return 0x10100
[ 1986.429151] xhci-hcd xhci-hcd.0.auto: clear port1 connect change, portsc: 0x2a0
[ 1986.429183] usb 1-1: USB disconnect, device number 2
[ 1986.434497] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000087ce5b92, dev 1, ep 0x81, starting at offset 0x3608010
[ 1986.434524] xhci-hcd xhci-hcd.0.auto: // Ding dong!
[ 1986.434541] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e2bdabe5, dev 1, ep 0x81, starting at offset 0x3608000
[ 1986.434564] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e5c97d1e, dev 1, ep 0x81, starting at offset 0x33defe0
[ 1986.434586] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e1366a9f, dev 1, ep 0x81, starting at offset 0x33defd0
[ 1986.434608] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000001796da21, dev 1, ep 0x81, starting at offset 0x33defc0
[ 1986.434631] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000f4822c30, dev 1, ep 0x81, starting at offset 0x33defb0
[ 1986.434653] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000aad33945, dev 1, ep 0x81, starting at offset 0x33defa0
[ 1986.434676] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000719a057f, dev 1, ep 0x81, starting at offset 0x33def90
[ 1986.434698] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000085cdfba1, dev 1, ep 0x81, starting at offset 0x33def80
[ 1986.434721] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000d2054ee7, dev 1, ep 0x81, starting at offset 0x33def70
[ 1986.434743] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000038a19f4d, dev 1, ep 0x81, starting at offset 0x33def60
[ 1986.434765] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000005a5b1dc, dev 1, ep 0x81, starting at offset 0x33def50
[ 1986.434788] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000a7d193da, dev 1, ep 0x81, starting at offset 0x33def40
[ 1986.434810] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000503a6bc6, dev 1, ep 0x81, starting at offset 0x33def30
[ 1986.434832] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000072f9c492, dev 1, ep 0x81, starting at offset 0x33def20
[ 1986.434855] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000885423dd, dev 1, ep 0x81, starting at offset 0x33def10
[ 1986.434877] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000007ee71ced, dev 1, ep 0x81, starting at offset 0x33def00
[ 1986.434899] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000006e835c64, dev 1, ep 0x81, starting at offset 0x33deef0
[ 1986.434922] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000005e097df4, dev 1, ep 0x81, starting at offset 0x33deee0
[ 1986.434945] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000074d993b4, dev 1, ep 0x81, starting at offset 0x33deed0
[ 1986.434968] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000035337e11, dev 1, ep 0x81, starting at offset 0x33deec0
[ 1986.434991] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000006b832515, dev 1, ep 0x81, starting at offset 0x33deeb0
[ 1986.435014] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000002a113a6, dev 1, ep 0x81, starting at offset 0x33deea0
[ 1986.435037] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000086977dbf, dev 1, ep 0x81, starting at offset 0x33dee90
[ 1986.435060] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000dd1534c8, dev 1, ep 0x81, starting at offset 0x33dee80
[ 1986.435083] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000080dbc56e, dev 1, ep 0x81, starting at offset 0x33dee70
[ 1986.435106] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000169c09dd, dev 1, ep 0x81, starting at offset 0x33dee60
[ 1986.435128] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e791ce73, dev 1, ep 0x81, starting at offset 0x33dee50
[ 1986.435152] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000002b11a66b, dev 1, ep 0x81, starting at offset 0x33dee40
[ 1986.435174] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000011fb0d96, dev 1, ep 0x81, starting at offset 0x33dee30
[ 1986.435197] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000340e5152, dev 1, ep 0x81, starting at offset 0x33dee20
[ 1986.435220] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000008c39d2de, dev 1, ep 0x81, starting at offset 0x33dee10
[ 1986.435243] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000a7e4e6c8, dev 1, ep 0x81, starting at offset 0x33dee00
[ 1986.435266] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000038be34b1, dev 1, ep 0x81, starting at offset 0x33dedf0
[ 1986.435289] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000071b6669e, dev 1, ep 0x81, starting at offset 0x33dede0
[ 1986.435312] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000879ff7e6, dev 1, ep 0x81, starting at offset 0x33dedd0
[ 1986.435335] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000001ce59c92, dev 1, ep 0x81, starting at offset 0x33dedc0
[ 1986.435358] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000024b7c567, dev 1, ep 0x81, starting at offset 0x33dedb0
[ 1986.435381] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000009e7a6d13, dev 1, ep 0x81, starting at offset 0x33deda0
[ 1986.435404] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000052cf0b08, dev 1, ep 0x81, starting at offset 0x33ded90
[ 1986.435426] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000071a915eb, dev 1, ep 0x81, starting at offset 0x33ded80
[ 1986.435450] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000ad41adfd, dev 1, ep 0x81, starting at offset 0x33ded70
[ 1986.435473] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000169a02cd, dev 1, ep 0x81, starting at offset 0x33ded60
[ 1986.435496] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000042fe4cb4, dev 1, ep 0x81, starting at offset 0x33ded50
[ 1986.435519] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000005668964c, dev 1, ep 0x81, starting at offset 0x33ded40
[ 1986.435542] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000a94112fa, dev 1, ep 0x81, starting at offset 0x33ded30
[ 1986.435565] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000793157b9, dev 1, ep 0x81, starting at offset 0x33ded20
[ 1986.435588] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000027e729da, dev 1, ep 0x81, starting at offset 0x33ded10
[ 1986.435611] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000053cf18d1, dev 1, ep 0x81, starting at offset 0x33ded00
[ 1986.435634] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000ac4b3a0b, dev 1, ep 0x81, starting at offset 0x33decf0
[ 1986.435657] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000005e814c9, dev 1, ep 0x81, starting at offset 0x33dece0
[ 1986.435680] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000000aceab7a, dev 1, ep 0x81, starting at offset 0x33decd0
[ 1986.435703] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000007e9fedea, dev 1, ep 0x81, starting at offset 0x33decc0
[ 1986.435726] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000004aff6c6, dev 1, ep 0x81, starting at offset 0x33decb0
[ 1986.435749] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000004a3772f8, dev 1, ep 0x81, starting at offset 0x33deca0
[ 1986.435772] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000003fb90d46, dev 1, ep 0x81, starting at offset 0x33dec90
[ 1986.435795] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000002f147a2c, dev 1, ep 0x81, starting at offset 0x33dec80
[ 1986.435818] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000c081722c, dev 1, ep 0x81, starting at offset 0x33dec70
[ 1986.435841] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000bb50a072, dev 1, ep 0x81, starting at offset 0x33dec60
[ 1986.435864] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000dc942c38, dev 1, ep 0x81, starting at offset 0x33dec50
[ 1986.435887] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000399e44af, dev 1, ep 0x81, starting at offset 0x33dec40
[ 1986.435910] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000074145ea1, dev 1, ep 0x81, starting at offset 0x33dec30
[ 1986.435933] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000077d0fc69, dev 1, ep 0x81, starting at offset 0x33dec20
[ 1986.435956] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000818556d0, dev 1, ep 0x81, starting at offset 0x33dec10
[ 1986.435979] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000005ffb65ee, dev 1, ep 0x81, starting at offset 0x33dec00
[ 1986.436002] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000058560f70, dev 1, ep 0x81, starting at offset 0x33debf0
[ 1986.436025] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000007500c333, dev 1, ep 0x81, starting at offset 0x33debe0
[ 1986.436049] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000d3ea0c58, dev 1, ep 0x81, starting at offset 0x33debd0
[ 1986.436072] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000c0ad548d, dev 1, ep 0x81, starting at offset 0x33debc0
[ 1986.436095] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000b5bce8dc, dev 1, ep 0x81, starting at offset 0x33debb0
[ 1986.436119] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000080ad47a2, dev 1, ep 0x81, starting at offset 0x33deba0
[ 1986.436141] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000afe91c88, dev 1, ep 0x81, starting at offset 0x33deb90
[ 1986.436165] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000bef1a77f, dev 1, ep 0x81, starting at offset 0x33deb80
[ 1986.436188] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000060641efb, dev 1, ep 0x81, starting at offset 0x33deb70
[ 1986.436210] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000fe383ea0, dev 1, ep 0x81, starting at offset 0x33deb60
[ 1986.436234] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000263aab2a, dev 1, ep 0x81, starting at offset 0x33deb50
[ 1986.436257] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000094ee9ddc, dev 1, ep 0x81, starting at offset 0x33deb40
[ 1986.436280] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000c165ca7f, dev 1, ep 0x81, starting at offset 0x33deb30
[ 1986.436303] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000049f3171f, dev 1, ep 0x81, starting at offset 0x33deb20
[ 1986.436326] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000008827f3d8, dev 1, ep 0x81, starting at offset 0x33deb10
[ 1986.436349] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000a3dfc9a3, dev 1, ep 0x81, starting at offset 0x33deb00
[ 1986.436372] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000076416362, dev 1, ep 0x81, starting at offset 0x33deaf0
[ 1986.436395] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000000ed8362a, dev 1, ep 0x81, starting at offset 0x33deae0
[ 1986.436418] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000fda2f676, dev 1, ep 0x81, starting at offset 0x33dead0
[ 1986.436442] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000f4e275bd, dev 1, ep 0x81, starting at offset 0x33deac0
[ 1986.436465] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000bb5c59c8, dev 1, ep 0x81, starting at offset 0x33deab0
[ 1986.436488] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000000022b038, dev 1, ep 0x81, starting at offset 0x33deaa0
[ 1986.436511] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000554027f2, dev 1, ep 0x81, starting at offset 0x33dea90
[ 1986.436534] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000325c83eb, dev 1, ep 0x81, starting at offset 0x33dea80
[ 1986.436557] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000015185d0, dev 1, ep 0x81, starting at offset 0x33dea70
[ 1986.436580] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000a0929014, dev 1, ep 0x81, starting at offset 0x33dea60
[ 1986.436603] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000092d02943, dev 1, ep 0x81, starting at offset 0x33dea50
[ 1986.436626] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000adbeaec3, dev 1, ep 0x81, starting at offset 0x33dea40
[ 1986.436649] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000dce3916e, dev 1, ep 0x81, starting at offset 0x33dea30
[ 1986.436672] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000095f83baa, dev 1, ep 0x81, starting at offset 0x33dea20
[ 1986.436696] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000051abed95, dev 1, ep 0x81, starting at offset 0x33dea10
[ 1986.436719] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e094b119, dev 1, ep 0x81, starting at offset 0x33dea00
[ 1986.436742] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000f56e14a0, dev 1, ep 0x81, starting at offset 0x33de9f0
[ 1986.436765] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000b56141ae, dev 1, ep 0x81, starting at offset 0x33de9e0
[ 1986.436788] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000003bdac46c, dev 1, ep 0x81, starting at offset 0x33de9d0
[ 1986.436812] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000008bfa7c31, dev 1, ep 0x81, starting at offset 0x33de9c0
[ 1986.436835] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000004917587e, dev 1, ep 0x81, starting at offset 0x33de9b0
[ 1986.436858] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000f7bf3d5f, dev 1, ep 0x81, starting at offset 0x33de9a0
[ 1986.436882] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000dd67b308, dev 1, ep 0x81, starting at offset 0x33de990
[ 1986.436905] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000003402ee4f, dev 1, ep 0x81, starting at offset 0x33de980
[ 1986.436928] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000b5f3339b, dev 1, ep 0x81, starting at offset 0x33de970
[ 1986.436952] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000049badb68, dev 1, ep 0x81, starting at offset 0x33de960
[ 1986.436975] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000001ab821c3, dev 1, ep 0x81, starting at offset 0x33de950
[ 1986.436998] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000093a46dfd, dev 1, ep 0x81, starting at offset 0x33de940
[ 1986.437021] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000002100ec31, dev 1, ep 0x81, starting at offset 0x33de930
[ 1986.437045] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000072ebb406, dev 1, ep 0x81, starting at offset 0x33de920
[ 1986.437068] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000b88ea70f, dev 1, ep 0x81, starting at offset 0x33de910
[ 1986.437092] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000004890db1d, dev 1, ep 0x81, starting at offset 0x33de900
[ 1986.437115] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000038ea1620, dev 1, ep 0x81, starting at offset 0x33de8f0
[ 1986.437139] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000004c5ee804, dev 1, ep 0x81, starting at offset 0x33de8e0
[ 1986.437162] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000054318f40, dev 1, ep 0x81, starting at offset 0x33de8d0
[ 1986.437185] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000006990e910, dev 1, ep 0x81, starting at offset 0x33de8c0
[ 1986.437208] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000690000fb, dev 1, ep 0x81, starting at offset 0x33de8b0
[ 1986.437232] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000007ed3f455, dev 1, ep 0x81, starting at offset 0x33de8a0
[ 1986.437255] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000037748511, dev 1, ep 0x81, starting at offset 0x33de890
[ 1986.437279] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000dc1df57c, dev 1, ep 0x81, starting at offset 0x33de880
[ 1986.437302] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000059be9c5c, dev 1, ep 0x81, starting at offset 0x33de870
[ 1986.437326] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000e0c1c62f, dev 1, ep 0x81, starting at offset 0x33de860
[ 1986.437349] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000ff658f84, dev 1, ep 0x81, starting at offset 0x33de850
[ 1986.437372] xhci-hcd xhci-hcd.0.auto: Cancel URB 0000000081fd6936, dev 1, ep 0x81, starting at offset 0x33de840
[ 1986.437396] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000226f9456, dev 1, ep 0x81, starting at offset 0x33de830
[ 1986.437419] xhci-hcd xhci-hcd.0.auto: Cancel URB 000000008225fe78, dev 1, ep 0x81, starting at offset 0x33de820
[ 1986.437442] xhci-hcd xhci-hcd.0.auto: Cancel URB 00000000afb20453, dev 1, ep 0x81, starting at offset 0x33de810
[ 1986.616126] xhci-hcd xhci-hcd.0.auto: xhci_hub_status_data: stopping usb1 port polling
[ 1988.146176] ieee80211 phy1: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x1328 with error -19
[ 1991.506142] xhci-hcd xhci-hcd.0.auto: Command timeout, USBSTS: 0x00000000
[ 1991.506168] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
[ 1991.514185] xhci-hcd xhci-hcd.0.auto: // Halt the HC
[ 1991.534359] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
[ 1991.542284] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 0
[ 1991.542298] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 1
[ 1991.542310] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 2
[ 1991.542451] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 3
[ 1991.542465] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 5
[ 1991.542477] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 7
[ 1991.542489] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 9
[ 1991.542502] xhci-hcd xhci-hcd.0.auto: Killing URBs for slot ID 1, ep index 11
[ 1991.542520] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-05 21:27 xHCI host dies on device unplug Ladislav Michl
@ 2022-12-06 13:17 ` Ladislav Michl
2022-12-15 16:12 ` Ladislav Michl
0 siblings, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-06 13:17 UTC (permalink / raw)
To: linux-usb
On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> I'm running current linux.git on custom Marvell OCTEON III CN7020
> based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> disconnect:
> xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
>
> Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> to tell if there is any errata :/ In case anyone see a clue in debug
> logs bellow, I'll happily give it a try.
So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
clock init is worth to be verified...
ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-06 13:17 ` Ladislav Michl
@ 2022-12-15 16:12 ` Ladislav Michl
2022-12-16 10:13 ` Mathias Nyman
0 siblings, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-15 16:12 UTC (permalink / raw)
To: linux-usb; +Cc: Mathias Nyman
+Cc Mathias as he last touched this code path and may know more :)
On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > disconnect:
> > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> >
> > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > to tell if there is any errata :/ In case anyone see a clue in debug
> > logs bellow, I'll happily give it a try.
>
> So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> clock init is worth to be verified...
After all whenever xhci dies with "xHCI host not responding to stop endpoint
command" depends also on temperature, so there seems to be race somewhere.
As a quick and dirty verification, whenever xhci really died, following patch
was tested and it fixed issue. It just treats ep as if stop endpoint command
succeeded. Any clues? I'll happily provide more traces.
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1582,21 +1582,37 @@ void xhci_handle_command_timeout(struct work_struct *work)
cmd_field3 = le32_to_cpu(xhci->current_cmd->command_trb->generic.field[3]);
usbsts = readl(&xhci->op_regs->status);
- xhci_dbg(xhci, "Command timeout, USBSTS:%s\n", xhci_decode_usbsts(str, usbsts));
+ xhci_warn(xhci, "Command timeout, USBSTS:%s\n", xhci_decode_usbsts(str, usbsts));
/* Bail out and tear down xhci if a stop endpoint command failed */
if (TRB_FIELD_TO_TYPE(cmd_field3) == TRB_STOP_RING) {
struct xhci_virt_ep *ep;
+ struct xhci_td *td = NULL;
+ enum xhci_ep_reset_type reset_type;
+ int err;
xhci_warn(xhci, "xHCI host not responding to stop endpoint command\n");
ep = xhci_get_virt_ep(xhci, TRB_TO_SLOT_ID(cmd_field3),
TRB_TO_EP_INDEX(cmd_field3));
- if (ep)
+ if (ep) {
+ xhci_dbg(xhci, "huhuhu\n");
+ if (ep->ep_state & EP_HAS_STREAMS) {
+ reset_type = EP_SOFT_RESET;
+ } else {
+ reset_type = EP_HARD_RESET;
+ td = find_halted_td(ep);
+ if (td)
+ td->status = -EPROTO;
+ }
+ /* reset ep, reset handler cleans up cancelled tds */
+ err = xhci_handle_halted_endpoint(xhci, ep, 0, td,
+ reset_type);
ep->ep_state &= ~EP_STOP_CMD_PENDING;
-
- xhci_halt(xhci);
- xhci_hc_died(xhci);
+ } else {
+ xhci_halt(xhci);
+ xhci_hc_died(xhci);
+ }
goto time_out_completed;
}
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-15 16:12 ` Ladislav Michl
@ 2022-12-16 10:13 ` Mathias Nyman
2022-12-16 21:32 ` Ladislav Michl
2022-12-19 7:11 ` Ladislav Michl
0 siblings, 2 replies; 17+ messages in thread
From: Mathias Nyman @ 2022-12-16 10:13 UTC (permalink / raw)
To: Ladislav Michl, linux-usb
On 15.12.2022 18.12, Ladislav Michl wrote:
> +Cc Mathias as he last touched this code path and may know more :)
>
> On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
>> On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
>>> I'm running current linux.git on custom Marvell OCTEON III CN7020
>>> based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
>>> bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
>>> bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
>>> (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
>>> disconnect:
>>> xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
>>> xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
>>> xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
>>>
>>> Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
>>> to tell if there is any errata :/ In case anyone see a clue in debug
>>> logs bellow, I'll happily give it a try.
>>
>> So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
>> instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
>> I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
>> clock init is worth to be verified...
>
> After all whenever xhci dies with "xHCI host not responding to stop endpoint
> command" depends also on temperature, so there seems to be race somewhere.
>
> As a quick and dirty verification, whenever xhci really died, following patch
> was tested and it fixed issue. It just treats ep as if stop endpoint command
> succeeded. Any clues? I'll happily provide more traces.
It's possible the controller did complete the stop endpoint command but driver
didn't get the interrupt for the event for some reason.
I wrote some patches that checks the event ring for this event during
timeout.
code is in a stop_endpoint_fixes branch in my tree:
git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git stop_endpoint_fixes
https://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git/log/?h=stop_endpoint_fixes
Another thing would be checking command and event rings for this stop endpoint command.
So Instead of killing host at timeout, do nothing, and check sysfs after the disconnect:
cat /sys/kernel/debug/usb/xhci/<address>/event-ring/trbs
cat /sys/kernel/debug/usb/xhci/<address>/command-ring/trbs
-Mathias
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-16 10:13 ` Mathias Nyman
@ 2022-12-16 21:32 ` Ladislav Michl
2022-12-19 12:25 ` Mathias Nyman
2022-12-19 7:11 ` Ladislav Michl
1 sibling, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-16 21:32 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb
On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
> On 15.12.2022 18.12, Ladislav Michl wrote:
> > +Cc Mathias as he last touched this code path and may know more :)
> >
> > On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> > > On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > > > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > > > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > > > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > > > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > > > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > > > disconnect:
> > > > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > > > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > > > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > > >
> > > > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > > > to tell if there is any errata :/ In case anyone see a clue in debug
> > > > logs bellow, I'll happily give it a try.
> > >
> > > So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> > > instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> > > I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> > > clock init is worth to be verified...
> >
> > After all whenever xhci dies with "xHCI host not responding to stop endpoint
> > command" depends also on temperature, so there seems to be race somewhere.
> >
> > As a quick and dirty verification, whenever xhci really died, following patch
> > was tested and it fixed issue. It just treats ep as if stop endpoint command
> > succeeded. Any clues? I'll happily provide more traces.
>
> It's possible the controller did complete the stop endpoint command but driver
> didn't get the interrupt for the event for some reason.
>
> I wrote some patches that checks the event ring for this event during
> timeout.
>
> code is in a stop_endpoint_fixes branch in my tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git stop_endpoint_fixes
> https://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git/log/?h=stop_endpoint_fixes
Added three topmost patches from your stop_endpoint_fixes branch to my tree,
also added debug showing both xhci_pending_interrupt and
xhci_pending_command_completion returns zero, when uplug happens,
so host still dies.
> Another thing would be checking command and event rings for this stop endpoint command.
> So Instead of killing host at timeout, do nothing, and check sysfs after the disconnect:
Just to be sure I got you right, this is the change in xhci-ring.c
that "does nothing":
@@ -1627,8 +1631,6 @@ void xhci_handle_command_timeout(struct work_struct *work)
if (ep)
ep->ep_state &= ~EP_STOP_CMD_PENDING;
- xhci_halt(xhci);
- xhci_hc_died(xhci);
goto time_out_completed;
}
> cat /sys/kernel/debug/usb/xhci/<address>/event-ring/trbs
> cat /sys/kernel/debug/usb/xhci/<address>/command-ring/trbs
# cat /sys/kernel/debug/usb/xhci/xhci-hcd.0.auto/event-ring/trbs
0x00000000028f5000: TRB 0000000002ee1d70 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5010: TRB 0000000002ee1da0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5020: TRB 0000000002ee1dd0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5030: TRB 0000000002ee1e00 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5040: TRB 0000000002ee1e30 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5050: TRB 0000000002ee1e60 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5060: TRB 0000000002ee1e90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5070: TRB 0000000002ee1ec0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5080: TRB 0000000002ee1ef0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5090: TRB 0000000002ee1f20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50a0: TRB 0000000002ee1f50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50b0: TRB 0000000002ee1f80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50c0: TRB 0000000002ee1fb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50d0: TRB 0000000002ee1fe0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50e0: TRB 00000000036c9020 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f50f0: TRB 00000000036c9050 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5100: TRB 00000000036c9080 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5110: TRB 00000000036c90b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5120: TRB 00000000036c90e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5130: TRB 00000000036c9110 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5140: TRB 00000000036c9140 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5150: TRB 00000000036c9170 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5160: TRB 00000000036c91a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5170: TRB 00000000036c91d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5180: TRB 00000000036c9200 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5190: TRB 00000000036c9230 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51a0: TRB 00000000036c9260 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51b0: TRB 00000000036c9290 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51c0: TRB 00000000036c92c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51d0: TRB 00000000036c92f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51e0: TRB 00000000036c9320 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f51f0: TRB 00000000036c9350 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5200: TRB 00000000036c9380 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5210: TRB 00000000036c93b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5220: TRB 00000000036c93e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5230: TRB 00000000036c9410 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5240: TRB 00000000036c9440 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5250: TRB 00000000036c9470 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5260: TRB 00000000036c94a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5270: TRB 00000000036c94d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5280: TRB 00000000036c9500 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5290: TRB 00000000036c9530 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52a0: TRB 00000000036c9560 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52b0: TRB 00000000036c9590 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52c0: TRB 00000000036c95c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52d0: TRB 00000000036c95f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52e0: TRB 00000000036c9620 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f52f0: TRB 00000000036c9650 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5300: TRB 00000000036c9680 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5310: TRB 00000000036c96b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5320: TRB 00000000036c96e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5330: TRB 00000000036c9710 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5340: TRB 00000000036c9740 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5350: TRB 00000000036c9770 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5360: TRB 00000000036c97a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5370: TRB 00000000036c97d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5380: TRB 00000000036c9800 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5390: TRB 00000000036c9830 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53a0: TRB 00000000036c9860 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53b0: TRB 00000000036c9890 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53c0: TRB 00000000036c98c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53d0: TRB 00000000036c98f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53e0: TRB 00000000036c9920 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f53f0: TRB 00000000036c9950 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5400: TRB 00000000036c9980 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5410: TRB 00000000036c99b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5420: TRB 00000000036c99e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5430: TRB 00000000036c9a10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5440: TRB 00000000036c9a40 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5450: TRB 00000000036c9a70 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5460: TRB 00000000036c9aa0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5470: TRB 00000000036c9ad0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5480: TRB 00000000036c9b00 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5490: TRB 00000000036c9b30 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54a0: TRB 00000000036c9b60 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54b0: TRB 00000000036c9b90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54c0: TRB 00000000036c9bc0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54d0: TRB 00000000036c9bf0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54e0: TRB 00000000036c9c20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f54f0: TRB 00000000036c9c50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5500: TRB 00000000036c9c80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5510: TRB 00000000036c9cb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5520: TRB 00000000036c9ce0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5530: TRB 00000000036c9d10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5540: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f5550: TRB 00000000035e8180 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
0x00000000028f5560: TRB 0000000001000000 status 'Success' len 0 slot 0 ep 0 type 'Port Status Change Event' flags e:c
0x00000000028f5570: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f5580: TRB 00000000035e8190 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
0x00000000028f5590: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
0x00000000028f55b0: TRB 0000000002ee1e90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f55c0: TRB 0000000002ee1ec0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f55d0: TRB 0000000002ee1ef0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f55e0: TRB 0000000002ee1f20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f55f0: TRB 0000000002ee1f50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5600: TRB 0000000002ee1f80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5610: TRB 0000000002ee1fb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5620: TRB 0000000002ee1fe0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5630: TRB 00000000036c9020 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5640: TRB 00000000036c9050 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5650: TRB 00000000030fa990 status 'Short Packet' len 3632 slot 1 ep 3 type 'Transfer Event' flags e:C
0x00000000028f5660: TRB 00000000036c9080 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5670: TRB 00000000036c90b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5680: TRB 00000000036c90e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5690: TRB 00000000036c9110 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56a0: TRB 00000000036c9140 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56b0: TRB 00000000036c9170 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56c0: TRB 00000000036c91a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56d0: TRB 00000000036c91d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56e0: TRB 00000000036c9200 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f56f0: TRB 00000000036c9230 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5700: TRB 00000000036c9260 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5710: TRB 00000000036c9290 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5720: TRB 00000000036c92c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5730: TRB 00000000036c92f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5740: TRB 00000000036c9320 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5750: TRB 00000000036c9350 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5760: TRB 00000000036c9380 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5770: TRB 00000000036c93b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5780: TRB 00000000036c93e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5790: TRB 00000000036c9410 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57a0: TRB 00000000036c9440 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57b0: TRB 00000000036c9470 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57c0: TRB 00000000036c94a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57d0: TRB 00000000036c94d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57e0: TRB 00000000036c9500 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f57f0: TRB 00000000036c9530 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5800: TRB 00000000036c9560 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5810: TRB 00000000036c9590 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5820: TRB 00000000036c95c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5830: TRB 00000000036c95f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5840: TRB 00000000036c9620 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5850: TRB 00000000036c9650 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5860: TRB 00000000036c9680 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5870: TRB 00000000036c96b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5880: TRB 00000000036c96e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5890: TRB 00000000036c9710 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58a0: TRB 00000000036c9740 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58b0: TRB 00000000036c9770 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58c0: TRB 00000000036c97a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58d0: TRB 00000000036c97d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58e0: TRB 00000000036c9800 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f58f0: TRB 00000000036c9830 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5900: TRB 00000000036c9860 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5910: TRB 00000000036c9890 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5920: TRB 00000000036c98c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5930: TRB 00000000036c98f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5940: TRB 00000000036c9920 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5950: TRB 00000000036c9950 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5960: TRB 00000000036c9980 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5970: TRB 00000000036c99b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5980: TRB 00000000036c99e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5990: TRB 00000000036c9a10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59a0: TRB 00000000036c9a40 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59b0: TRB 00000000036c9a70 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59c0: TRB 00000000036c9aa0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59d0: TRB 00000000036c9ad0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59e0: TRB 00000000036c9b00 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f59f0: TRB 00000000036c9b30 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a00: TRB 00000000036c9b60 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a10: TRB 00000000036c9b90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a20: TRB 00000000036c9bc0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a30: TRB 00000000036c9bf0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a40: TRB 00000000036c9c20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a50: TRB 00000000036c9c50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a60: TRB 00000000036c9c80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a70: TRB 00000000036c9cb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a80: TRB 00000000036c9ce0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5a90: TRB 00000000036c9d10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5aa0: TRB 00000000036c9d40 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ab0: TRB 00000000036c9d70 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ac0: TRB 00000000036c9da0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ad0: TRB 00000000036c9dd0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ae0: TRB 00000000036c9e00 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5af0: TRB 00000000036c9e30 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b00: TRB 00000000036c9e60 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b10: TRB 00000000036c9e90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b20: TRB 00000000036c9ec0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b30: TRB 00000000036c9ef0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b40: TRB 00000000036c9f20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b50: TRB 00000000036c9f50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b60: TRB 00000000036c9f80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b70: TRB 00000000036c9fb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b80: TRB 00000000036c9fe0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5b90: TRB 0000000002ee1020 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ba0: TRB 0000000002ee1050 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5bb0: TRB 0000000002ee1080 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5bc0: TRB 0000000002ee10b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5bd0: TRB 0000000002ee10e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5be0: TRB 0000000002ee1110 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5bf0: TRB 0000000002ee1140 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c00: TRB 0000000002ee1170 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c10: TRB 0000000002ee11a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c20: TRB 0000000002ee11d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c30: TRB 0000000002ee1200 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c40: TRB 0000000002ee1230 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c50: TRB 0000000002ee1260 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c60: TRB 0000000002ee1290 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c70: TRB 0000000002ee12c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c80: TRB 0000000002ee12f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5c90: TRB 0000000002ee1320 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ca0: TRB 0000000002ee1350 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5cb0: TRB 0000000002ee1380 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5cc0: TRB 0000000002ee13b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5cd0: TRB 0000000002ee13e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ce0: TRB 0000000002ee1410 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5cf0: TRB 0000000002ee1440 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d00: TRB 0000000002ee1470 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d10: TRB 0000000002ee14a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d20: TRB 0000000002ee14d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d30: TRB 0000000002ee1500 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d40: TRB 0000000002ee1530 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d50: TRB 0000000002ee1560 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d60: TRB 0000000002ee1590 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d70: TRB 0000000002ee15c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d80: TRB 0000000002ee15f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5d90: TRB 0000000002ee1620 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5da0: TRB 0000000002ee1650 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5db0: TRB 0000000002ee1680 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5dc0: TRB 0000000002ee16b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5dd0: TRB 0000000002ee16e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5de0: TRB 0000000002ee1710 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5df0: TRB 0000000002ee1740 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e00: TRB 0000000002ee1770 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e10: TRB 0000000002ee17a0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e20: TRB 0000000002ee17d0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e30: TRB 0000000002ee1800 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e40: TRB 0000000002ee1830 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e50: TRB 0000000002ee1860 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e60: TRB 0000000002ee1890 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e70: TRB 0000000002ee18c0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e80: TRB 0000000002ee18f0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5e90: TRB 0000000002ee1920 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ea0: TRB 0000000002ee1950 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5eb0: TRB 0000000002ee1980 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ec0: TRB 0000000002ee19b0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ed0: TRB 0000000002ee19e0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ee0: TRB 0000000002ee1a10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ef0: TRB 0000000002ee1a40 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f00: TRB 0000000002ee1a70 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f10: TRB 0000000002ee1aa0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f20: TRB 0000000002ee1ad0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f30: TRB 0000000002ee1b00 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f40: TRB 0000000002ee1b30 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f50: TRB 0000000002ee1b60 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f60: TRB 0000000002ee1b90 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f70: TRB 0000000002ee1bc0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f80: TRB 0000000002ee1bf0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5f90: TRB 0000000002ee1c20 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5fa0: TRB 0000000002ee1c50 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5fb0: TRB 0000000002ee1c80 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5fc0: TRB 0000000002ee1cb0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5fd0: TRB 0000000002ee1ce0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5fe0: TRB 0000000002ee1d10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
0x00000000028f5ff0: TRB 0000000002ee1d40 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:C
# cat /sys/kernel/debug/usb/xhci/xhci-hcd.0.auto/command-ring/trbs
0x00000000035e8000: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8010: Set TR Dequeue Pointer Command: deq 00000000030fa801 stream 0 slot 1 ep 3 flags c
0x00000000035e8020: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8030: Set TR Dequeue Pointer Command: deq 00000000030fa811 stream 0 slot 1 ep 3 flags c
0x00000000035e8040: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8050: Set TR Dequeue Pointer Command: deq 00000000030fa821 stream 0 slot 1 ep 3 flags c
0x00000000035e8060: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8070: Set TR Dequeue Pointer Command: deq 00000000030fa831 stream 0 slot 1 ep 3 flags c
0x00000000035e8080: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8090: Set TR Dequeue Pointer Command: deq 00000000030fa841 stream 0 slot 1 ep 3 flags c
0x00000000035e80a0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e80b0: Set TR Dequeue Pointer Command: deq 00000000030fa851 stream 0 slot 1 ep 3 flags c
0x00000000035e80c0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e80d0: Set TR Dequeue Pointer Command: deq 00000000030fa861 stream 0 slot 1 ep 3 flags c
0x00000000035e80e0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e80f0: Set TR Dequeue Pointer Command: deq 00000000030fa871 stream 0 slot 1 ep 3 flags c
0x00000000035e8100: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8110: Set TR Dequeue Pointer Command: deq 00000000030fa881 stream 0 slot 1 ep 3 flags c
0x00000000035e8120: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8130: Set TR Dequeue Pointer Command: deq 00000000030fa891 stream 0 slot 1 ep 3 flags c
0x00000000035e8140: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8150: Set TR Dequeue Pointer Command: deq 00000000030fa8a1 stream 0 slot 1 ep 3 flags c
0x00000000035e8160: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8170: Set TR Dequeue Pointer Command: deq 00000000030fa8b1 stream 0 slot 1 ep 3 flags c
0x00000000035e8180: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e8190: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e81c0: Set TR Dequeue Pointer Command: deq 00000000030fa0e1 stream 0 slot 1 ep 3 flags C
0x00000000035e81d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e81e0: Set TR Dequeue Pointer Command: deq 00000000030fa0f1 stream 0 slot 1 ep 3 flags C
0x00000000035e81f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8200: Set TR Dequeue Pointer Command: deq 00000000030fa101 stream 0 slot 1 ep 3 flags C
0x00000000035e8210: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8220: Set TR Dequeue Pointer Command: deq 00000000030fa111 stream 0 slot 1 ep 3 flags C
0x00000000035e8230: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8240: Set TR Dequeue Pointer Command: deq 00000000030fa121 stream 0 slot 1 ep 3 flags C
0x00000000035e8250: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8260: Set TR Dequeue Pointer Command: deq 00000000030fa131 stream 0 slot 1 ep 3 flags C
0x00000000035e8270: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8280: Set TR Dequeue Pointer Command: deq 00000000030fa141 stream 0 slot 1 ep 3 flags C
0x00000000035e8290: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e82a0: Set TR Dequeue Pointer Command: deq 00000000030fa151 stream 0 slot 1 ep 3 flags C
0x00000000035e82b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e82c0: Set TR Dequeue Pointer Command: deq 00000000030fa161 stream 0 slot 1 ep 3 flags C
0x00000000035e82d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e82e0: Set TR Dequeue Pointer Command: deq 00000000030fa171 stream 0 slot 1 ep 3 flags C
0x00000000035e82f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8300: Set TR Dequeue Pointer Command: deq 00000000030fa181 stream 0 slot 1 ep 3 flags C
0x00000000035e8310: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8320: Set TR Dequeue Pointer Command: deq 00000000030fa191 stream 0 slot 1 ep 3 flags C
0x00000000035e8330: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8340: Set TR Dequeue Pointer Command: deq 00000000030fa1a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8350: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8360: Set TR Dequeue Pointer Command: deq 00000000030fa1b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8370: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8380: Set TR Dequeue Pointer Command: deq 00000000030fa1c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8390: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e83a0: Set TR Dequeue Pointer Command: deq 00000000030fa1d1 stream 0 slot 1 ep 3 flags C
0x00000000035e83b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e83c0: Set TR Dequeue Pointer Command: deq 00000000030fa1e1 stream 0 slot 1 ep 3 flags C
0x00000000035e83d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e83e0: Set TR Dequeue Pointer Command: deq 00000000030fa1f1 stream 0 slot 1 ep 3 flags C
0x00000000035e83f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8400: Set TR Dequeue Pointer Command: deq 00000000030fa201 stream 0 slot 1 ep 3 flags C
0x00000000035e8410: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8420: Set TR Dequeue Pointer Command: deq 00000000030fa211 stream 0 slot 1 ep 3 flags C
0x00000000035e8430: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8440: Set TR Dequeue Pointer Command: deq 00000000030fa221 stream 0 slot 1 ep 3 flags C
0x00000000035e8450: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8460: Set TR Dequeue Pointer Command: deq 00000000030fa231 stream 0 slot 1 ep 3 flags C
0x00000000035e8470: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8480: Set TR Dequeue Pointer Command: deq 00000000030fa241 stream 0 slot 1 ep 3 flags C
0x00000000035e8490: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e84a0: Set TR Dequeue Pointer Command: deq 00000000030fa251 stream 0 slot 1 ep 3 flags C
0x00000000035e84b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e84c0: Set TR Dequeue Pointer Command: deq 00000000030fa261 stream 0 slot 1 ep 3 flags C
0x00000000035e84d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e84e0: Set TR Dequeue Pointer Command: deq 00000000030fa271 stream 0 slot 1 ep 3 flags C
0x00000000035e84f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8500: Set TR Dequeue Pointer Command: deq 00000000030fa281 stream 0 slot 1 ep 3 flags C
0x00000000035e8510: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8520: Set TR Dequeue Pointer Command: deq 00000000030fa291 stream 0 slot 1 ep 3 flags C
0x00000000035e8530: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8540: Set TR Dequeue Pointer Command: deq 00000000030fa2a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8550: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8560: Set TR Dequeue Pointer Command: deq 00000000030fa2b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8570: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8580: Set TR Dequeue Pointer Command: deq 00000000030fa2c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8590: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e85a0: Set TR Dequeue Pointer Command: deq 00000000030fa2d1 stream 0 slot 1 ep 3 flags C
0x00000000035e85b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e85c0: Set TR Dequeue Pointer Command: deq 00000000030fa2e1 stream 0 slot 1 ep 3 flags C
0x00000000035e85d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e85e0: Set TR Dequeue Pointer Command: deq 00000000030fa2f1 stream 0 slot 1 ep 3 flags C
0x00000000035e85f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8600: Set TR Dequeue Pointer Command: deq 00000000030fa301 stream 0 slot 1 ep 3 flags C
0x00000000035e8610: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8620: Set TR Dequeue Pointer Command: deq 00000000030fa311 stream 0 slot 1 ep 3 flags C
0x00000000035e8630: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8640: Set TR Dequeue Pointer Command: deq 00000000030fa321 stream 0 slot 1 ep 3 flags C
0x00000000035e8650: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8660: Set TR Dequeue Pointer Command: deq 00000000030fa331 stream 0 slot 1 ep 3 flags C
0x00000000035e8670: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8680: Set TR Dequeue Pointer Command: deq 00000000030fa341 stream 0 slot 1 ep 3 flags C
0x00000000035e8690: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e86a0: Set TR Dequeue Pointer Command: deq 00000000030fa351 stream 0 slot 1 ep 3 flags C
0x00000000035e86b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e86c0: Set TR Dequeue Pointer Command: deq 00000000030fa361 stream 0 slot 1 ep 3 flags C
0x00000000035e86d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e86e0: Set TR Dequeue Pointer Command: deq 00000000030fa371 stream 0 slot 1 ep 3 flags C
0x00000000035e86f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8700: Set TR Dequeue Pointer Command: deq 00000000030fa381 stream 0 slot 1 ep 3 flags C
0x00000000035e8710: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8720: Set TR Dequeue Pointer Command: deq 00000000030fa391 stream 0 slot 1 ep 3 flags C
0x00000000035e8730: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8740: Set TR Dequeue Pointer Command: deq 00000000030fa3a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8750: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8760: Set TR Dequeue Pointer Command: deq 00000000030fa3b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8770: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8780: Set TR Dequeue Pointer Command: deq 00000000030fa3c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8790: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e87a0: Set TR Dequeue Pointer Command: deq 00000000030fa3d1 stream 0 slot 1 ep 3 flags C
0x00000000035e87b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e87c0: Set TR Dequeue Pointer Command: deq 00000000030fa3e1 stream 0 slot 1 ep 3 flags C
0x00000000035e87d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e87e0: Set TR Dequeue Pointer Command: deq 00000000030fa3f1 stream 0 slot 1 ep 3 flags C
0x00000000035e87f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8800: Set TR Dequeue Pointer Command: deq 00000000030fa401 stream 0 slot 1 ep 3 flags C
0x00000000035e8810: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8820: Set TR Dequeue Pointer Command: deq 00000000030fa411 stream 0 slot 1 ep 3 flags C
0x00000000035e8830: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8840: Set TR Dequeue Pointer Command: deq 00000000030fa421 stream 0 slot 1 ep 3 flags C
0x00000000035e8850: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8860: Set TR Dequeue Pointer Command: deq 00000000030fa431 stream 0 slot 1 ep 3 flags C
0x00000000035e8870: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8880: Set TR Dequeue Pointer Command: deq 00000000030fa441 stream 0 slot 1 ep 3 flags C
0x00000000035e8890: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e88a0: Set TR Dequeue Pointer Command: deq 00000000030fa451 stream 0 slot 1 ep 3 flags C
0x00000000035e88b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e88c0: Set TR Dequeue Pointer Command: deq 00000000030fa461 stream 0 slot 1 ep 3 flags C
0x00000000035e88d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e88e0: Set TR Dequeue Pointer Command: deq 00000000030fa471 stream 0 slot 1 ep 3 flags C
0x00000000035e88f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8900: Set TR Dequeue Pointer Command: deq 00000000030fa481 stream 0 slot 1 ep 3 flags C
0x00000000035e8910: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8920: Set TR Dequeue Pointer Command: deq 00000000030fa491 stream 0 slot 1 ep 3 flags C
0x00000000035e8930: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8940: Set TR Dequeue Pointer Command: deq 00000000030fa4a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8950: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8960: Set TR Dequeue Pointer Command: deq 00000000030fa4b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8970: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8980: Set TR Dequeue Pointer Command: deq 00000000030fa4c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8990: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e89a0: Set TR Dequeue Pointer Command: deq 00000000030fa4d1 stream 0 slot 1 ep 3 flags C
0x00000000035e89b0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e89c0: Set TR Dequeue Pointer Command: deq 00000000030fa4e1 stream 0 slot 1 ep 3 flags C
0x00000000035e89d0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e89e0: Set TR Dequeue Pointer Command: deq 00000000030fa4f1 stream 0 slot 1 ep 3 flags C
0x00000000035e89f0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8a00: Set TR Dequeue Pointer Command: deq 00000000030fa501 stream 0 slot 1 ep 3 flags C
0x00000000035e8a10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8a20: Set TR Dequeue Pointer Command: deq 00000000030fa511 stream 0 slot 1 ep 3 flags C
0x00000000035e8a30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8a40: Set TR Dequeue Pointer Command: deq 00000000030fa521 stream 0 slot 1 ep 3 flags C
0x00000000035e8a50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8a60: Set TR Dequeue Pointer Command: deq 00000000030fa531 stream 0 slot 1 ep 3 flags C
0x00000000035e8a70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8a80: Set TR Dequeue Pointer Command: deq 00000000030fa541 stream 0 slot 1 ep 3 flags C
0x00000000035e8a90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8aa0: Set TR Dequeue Pointer Command: deq 00000000030fa551 stream 0 slot 1 ep 3 flags C
0x00000000035e8ab0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ac0: Set TR Dequeue Pointer Command: deq 00000000030fa561 stream 0 slot 1 ep 3 flags C
0x00000000035e8ad0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ae0: Set TR Dequeue Pointer Command: deq 00000000030fa571 stream 0 slot 1 ep 3 flags C
0x00000000035e8af0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8b00: Set TR Dequeue Pointer Command: deq 00000000030fa581 stream 0 slot 1 ep 3 flags C
0x00000000035e8b10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8b20: Set TR Dequeue Pointer Command: deq 00000000030fa591 stream 0 slot 1 ep 3 flags C
0x00000000035e8b30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8b40: Set TR Dequeue Pointer Command: deq 00000000030fa5a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8b50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8b60: Set TR Dequeue Pointer Command: deq 00000000030fa5b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8b70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8b80: Set TR Dequeue Pointer Command: deq 00000000030fa5c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8b90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ba0: Set TR Dequeue Pointer Command: deq 00000000030fa5d1 stream 0 slot 1 ep 3 flags C
0x00000000035e8bb0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8bc0: Set TR Dequeue Pointer Command: deq 00000000030fa5e1 stream 0 slot 1 ep 3 flags C
0x00000000035e8bd0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8be0: Set TR Dequeue Pointer Command: deq 00000000030fa5f1 stream 0 slot 1 ep 3 flags C
0x00000000035e8bf0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8c00: Set TR Dequeue Pointer Command: deq 00000000030fa601 stream 0 slot 1 ep 3 flags C
0x00000000035e8c10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8c20: Set TR Dequeue Pointer Command: deq 00000000030fa611 stream 0 slot 1 ep 3 flags C
0x00000000035e8c30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8c40: Set TR Dequeue Pointer Command: deq 00000000030fa621 stream 0 slot 1 ep 3 flags C
0x00000000035e8c50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8c60: Set TR Dequeue Pointer Command: deq 00000000030fa631 stream 0 slot 1 ep 3 flags C
0x00000000035e8c70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8c80: Set TR Dequeue Pointer Command: deq 00000000030fa641 stream 0 slot 1 ep 3 flags C
0x00000000035e8c90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ca0: Set TR Dequeue Pointer Command: deq 00000000030fa651 stream 0 slot 1 ep 3 flags C
0x00000000035e8cb0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8cc0: Set TR Dequeue Pointer Command: deq 00000000030fa661 stream 0 slot 1 ep 3 flags C
0x00000000035e8cd0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ce0: Set TR Dequeue Pointer Command: deq 00000000030fa671 stream 0 slot 1 ep 3 flags C
0x00000000035e8cf0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8d00: Set TR Dequeue Pointer Command: deq 00000000030fa681 stream 0 slot 1 ep 3 flags C
0x00000000035e8d10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8d20: Set TR Dequeue Pointer Command: deq 00000000030fa691 stream 0 slot 1 ep 3 flags C
0x00000000035e8d30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8d40: Set TR Dequeue Pointer Command: deq 00000000030fa6a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8d50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8d60: Set TR Dequeue Pointer Command: deq 00000000030fa6b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8d70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8d80: Set TR Dequeue Pointer Command: deq 00000000030fa6c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8d90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8da0: Set TR Dequeue Pointer Command: deq 00000000030fa6d1 stream 0 slot 1 ep 3 flags C
0x00000000035e8db0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8dc0: Set TR Dequeue Pointer Command: deq 00000000030fa6e1 stream 0 slot 1 ep 3 flags C
0x00000000035e8dd0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8de0: Set TR Dequeue Pointer Command: deq 00000000030fa6f1 stream 0 slot 1 ep 3 flags C
0x00000000035e8df0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8e00: Set TR Dequeue Pointer Command: deq 00000000030fa701 stream 0 slot 1 ep 3 flags C
0x00000000035e8e10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8e20: Set TR Dequeue Pointer Command: deq 00000000030fa711 stream 0 slot 1 ep 3 flags C
0x00000000035e8e30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8e40: Set TR Dequeue Pointer Command: deq 00000000030fa721 stream 0 slot 1 ep 3 flags C
0x00000000035e8e50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8e60: Set TR Dequeue Pointer Command: deq 00000000030fa731 stream 0 slot 1 ep 3 flags C
0x00000000035e8e70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8e80: Set TR Dequeue Pointer Command: deq 00000000030fa741 stream 0 slot 1 ep 3 flags C
0x00000000035e8e90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ea0: Set TR Dequeue Pointer Command: deq 00000000030fa751 stream 0 slot 1 ep 3 flags C
0x00000000035e8eb0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ec0: Set TR Dequeue Pointer Command: deq 00000000030fa761 stream 0 slot 1 ep 3 flags C
0x00000000035e8ed0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8ee0: Set TR Dequeue Pointer Command: deq 00000000030fa771 stream 0 slot 1 ep 3 flags C
0x00000000035e8ef0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8f00: Set TR Dequeue Pointer Command: deq 00000000030fa781 stream 0 slot 1 ep 3 flags C
0x00000000035e8f10: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8f20: Set TR Dequeue Pointer Command: deq 00000000030fa791 stream 0 slot 1 ep 3 flags C
0x00000000035e8f30: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8f40: Set TR Dequeue Pointer Command: deq 00000000030fa7a1 stream 0 slot 1 ep 3 flags C
0x00000000035e8f50: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8f60: Set TR Dequeue Pointer Command: deq 00000000030fa7b1 stream 0 slot 1 ep 3 flags C
0x00000000035e8f70: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8f80: Set TR Dequeue Pointer Command: deq 00000000030fa7c1 stream 0 slot 1 ep 3 flags C
0x00000000035e8f90: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8fa0: Set TR Dequeue Pointer Command: deq 00000000030fa7d1 stream 0 slot 1 ep 3 flags C
0x00000000035e8fb0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8fc0: Set TR Dequeue Pointer Command: deq 00000000030fa7e1 stream 0 slot 1 ep 3 flags C
0x00000000035e8fd0: Stop Ring Command: slot 1 sp 0 ep 3 flags C
0x00000000035e8fe0: Set TR Dequeue Pointer Command: deq 00000000030fa7f1 stream 0 slot 1 ep 3 flags C
0x00000000035e8ff0: LINK 00000000035e8000 intr 0 type 'Link' flags i:c:T:C
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-16 10:13 ` Mathias Nyman
2022-12-16 21:32 ` Ladislav Michl
@ 2022-12-19 7:11 ` Ladislav Michl
1 sibling, 0 replies; 17+ messages in thread
From: Ladislav Michl @ 2022-12-19 7:11 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb
Hi Mathias,
On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
> On 15.12.2022 18.12, Ladislav Michl wrote:
> > +Cc Mathias as he last touched this code path and may know more :)
> >
> > On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> > > On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > > > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > > > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > > > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > > > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > > > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > > > disconnect:
> > > > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > > > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > > > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > > >
> > > > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > > > to tell if there is any errata :/ In case anyone see a clue in debug
> > > > logs bellow, I'll happily give it a try.
> > >
> > > So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> > > instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> > > I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> > > clock init is worth to be verified...
> >
> > After all whenever xhci dies with "xHCI host not responding to stop endpoint
> > command" depends also on temperature, so there seems to be race somewhere.
> >
> > As a quick and dirty verification, whenever xhci really died, following patch
> > was tested and it fixed issue. It just treats ep as if stop endpoint command
> > succeeded. Any clues? I'll happily provide more traces.
>
> It's possible the controller did complete the stop endpoint command but driver
> didn't get the interrupt for the event for some reason.
Hmm, event did not complete for device directly connected to the xHCI port.
However for the same device connected to the HUB, everything works as
expected no matter if device is disconnected from the HUB or the HUB
with device is disconnected altogether.
> I wrote some patches that checks the event ring for this event during
> timeout.
In case device is plugged back before timeout kills xHCI, controller is
still working reliably.
> code is in a stop_endpoint_fixes branch in my tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git stop_endpoint_fixes
> https://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git/log/?h=stop_endpoint_fixes
>
> Another thing would be checking command and event rings for this stop endpoint command.
> So Instead of killing host at timeout, do nothing, and check sysfs after the disconnect:
>
> cat /sys/kernel/debug/usb/xhci/<address>/event-ring/trbs
> cat /sys/kernel/debug/usb/xhci/<address>/command-ring/trbs
>
> -Mathias
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-16 21:32 ` Ladislav Michl
@ 2022-12-19 12:25 ` Mathias Nyman
2022-12-19 18:31 ` Ladislav Michl
0 siblings, 1 reply; 17+ messages in thread
From: Mathias Nyman @ 2022-12-19 12:25 UTC (permalink / raw)
To: Ladislav Michl; +Cc: linux-usb
On 16.12.2022 23.32, Ladislav Michl wrote:
> On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
>> On 15.12.2022 18.12, Ladislav Michl wrote:
>>> +Cc Mathias as he last touched this code path and may know more :)
>>>
>>> On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
>>>> On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
>>>>> I'm running current linux.git on custom Marvell OCTEON III CN7020
>>>>> based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
>>>>> bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
>>>>> bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
>>>>> (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
>>>>> disconnect:
>>>>> xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
>>>>> xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
>>>>> xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
>>>>>
>>>>> Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
>>>>> to tell if there is any errata :/ In case anyone see a clue in debug
>>>>> logs bellow, I'll happily give it a try.
>>>>
>>>> So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
>>>> instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
>>>> I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
>>>> clock init is worth to be verified...
>>>
>>> After all whenever xhci dies with "xHCI host not responding to stop endpoint
>>> command" depends also on temperature, so there seems to be race somewhere.
>>>
>>> As a quick and dirty verification, whenever xhci really died, following patch
>>> was tested and it fixed issue. It just treats ep as if stop endpoint command
>>> succeeded. Any clues? I'll happily provide more traces.
>>
>> It's possible the controller did complete the stop endpoint command but driver
>> didn't get the interrupt for the event for some reason.
>>
Looks like controller didn't complete the stop endpoint command.
Event for last completed command (before cycle bit change "c" -> "C") was:
0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
This was for command at 35e81a0, which in the command ring was:
0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
The stop endpoint command was the next command queued, at 35e81b0:
0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
Was this the only device connected? If so does connecting another usb device to another root port help?
Just to test if the host for some reason partially stops a while after last device disconnect?
Another thing is that the stop endpoint command fails after three soft reset tries,
does disabling soft reset help?
Either add somwehere:
xhci->quirks |= XHCI_NO_SOFT_RETRY;
or:
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index b07d3740f554..aa1c92a72916 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2515,7 +2515,7 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep,
remaining = 0;
break;
case COMP_USB_TRANSACTION_ERROR:
- if (xhci->quirks & XHCI_NO_SOFT_RETRY ||
+ if (1 || xhci->quirks & XHCI_NO_SOFT_RETRY ||
(ep_ring->err_count++ > MAX_SOFT_RETRY) ||
le32_to_cpu(slot_ctx->tt_info) & TT_SLOT)
break;
Just for reference, the last events and commands:
# cat /sys/kernel/debug/usb/xhci/xhci-hcd.0.auto/event-ring/trbs
0x00000000028f5520: TRB 00000000036c9ce0 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5530: TRB 00000000036c9d10 status 'Success' len 0 slot 1 ep 1 type 'Transfer Event' flags e:c
0x00000000028f5540: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f5550: TRB 00000000035e8180 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
0x00000000028f5560: TRB 0000000001000000 status 'Success' len 0 slot 0 ep 0 type 'Port Status Change Event' flags e:c
0x00000000028f5570: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f5580: TRB 00000000035e8190 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
0x00000000028f5590: TRB 00000000030fa9a0 status 'USB Transaction Error' len 3860 slot 1 ep 3 type 'Transfer Event' flags e:c
0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c
# cat /sys/kernel/debug/usb/xhci/xhci-hcd.0.auto/command-ring/trbs
0x00000000035e8120: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8130: Set TR Dequeue Pointer Command: deq 00000000030fa891 stream 0 slot 1 ep 3 flags c
0x00000000035e8140: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8150: Set TR Dequeue Pointer Command: deq 00000000030fa8a1 stream 0 slot 1 ep 3 flags c
0x00000000035e8160: Stop Ring Command: slot 1 sp 0 ep 3 flags c
0x00000000035e8170: Set TR Dequeue Pointer Command: deq 00000000030fa8b1 stream 0 slot 1 ep 3 flags c
0x00000000035e8180: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e8190: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
-Mathias
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-19 12:25 ` Mathias Nyman
@ 2022-12-19 18:31 ` Ladislav Michl
2022-12-19 21:45 ` Ladislav Michl
0 siblings, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-19 18:31 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb
On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> On 16.12.2022 23.32, Ladislav Michl wrote:
> > On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
> > > On 15.12.2022 18.12, Ladislav Michl wrote:
> > > > +Cc Mathias as he last touched this code path and may know more :)
> > > >
> > > > On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> > > > > On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > > > > > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > > > > > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > > > > > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > > > > > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > > > > > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > > > > > disconnect:
> > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > > > > > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > > > > >
> > > > > > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > > > > > to tell if there is any errata :/ In case anyone see a clue in debug
> > > > > > logs bellow, I'll happily give it a try.
> > > > >
> > > > > So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> > > > > instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> > > > > I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> > > > > clock init is worth to be verified...
> > > >
> > > > After all whenever xhci dies with "xHCI host not responding to stop endpoint
> > > > command" depends also on temperature, so there seems to be race somewhere.
> > > >
> > > > As a quick and dirty verification, whenever xhci really died, following patch
> > > > was tested and it fixed issue. It just treats ep as if stop endpoint command
> > > > succeeded. Any clues? I'll happily provide more traces.
> > >
> > > It's possible the controller did complete the stop endpoint command but driver
> > > didn't get the interrupt for the event for some reason.
> > >
>
> Looks like controller didn't complete the stop endpoint command.
>
> Event for last completed command (before cycle bit change "c" -> "C") was:
> 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
>
> This was for command at 35e81a0, which in the command ring was:
> 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
>
> The stop endpoint command was the next command queued, at 35e81b0:
> 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
>
> There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
>
> Was this the only device connected? If so does connecting another usb device to another root port help?
> Just to test if the host for some reason partially stops a while after last device disconnect?
Device is connected directly into SoC. Once connected into HUB, host doesn't die
(as noted in other email, sorry for not replying to my own message, so it got lost)
It seems as intentional (power management?) optimization. If another device is
plugged in before 5 sec timeout expires, host completes stop endpoint command.
Unfortunately I cannot find anything describing this behavior in
documentation, so I'll ask manufacturer support.
Both solutions, do nothing or reset controller once last device is unpluged
works, but I doubt they are suitable for mainline kernel without further
investigation.
> Another thing is that the stop endpoint command fails after three soft reset tries,
> does disabling soft reset help?
No, this does not cause any change.
ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-19 18:31 ` Ladislav Michl
@ 2022-12-19 21:45 ` Ladislav Michl
2022-12-20 7:58 ` Ladislav Michl
2022-12-21 7:14 ` Ladislav Michl
0 siblings, 2 replies; 17+ messages in thread
From: Ladislav Michl @ 2022-12-19 21:45 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb
On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
> On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> > On 16.12.2022 23.32, Ladislav Michl wrote:
> > > On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
> > > > On 15.12.2022 18.12, Ladislav Michl wrote:
> > > > > +Cc Mathias as he last touched this code path and may know more :)
> > > > >
> > > > > On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> > > > > > On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > > > > > > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > > > > > > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > > > > > > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > > > > > > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > > > > > > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > > > > > > disconnect:
> > > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > > > > > > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > > > > > >
> > > > > > > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > > > > > > to tell if there is any errata :/ In case anyone see a clue in debug
> > > > > > > logs bellow, I'll happily give it a try.
> > > > > >
> > > > > > So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> > > > > > instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> > > > > > I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> > > > > > clock init is worth to be verified...
> > > > >
> > > > > After all whenever xhci dies with "xHCI host not responding to stop endpoint
> > > > > command" depends also on temperature, so there seems to be race somewhere.
> > > > >
> > > > > As a quick and dirty verification, whenever xhci really died, following patch
> > > > > was tested and it fixed issue. It just treats ep as if stop endpoint command
> > > > > succeeded. Any clues? I'll happily provide more traces.
> > > >
> > > > It's possible the controller did complete the stop endpoint command but driver
> > > > didn't get the interrupt for the event for some reason.
> > > >
> >
> > Looks like controller didn't complete the stop endpoint command.
> >
> > Event for last completed command (before cycle bit change "c" -> "C") was:
> > 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
> >
> > This was for command at 35e81a0, which in the command ring was:
> > 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
> >
> > The stop endpoint command was the next command queued, at 35e81b0:
> > 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
> >
> > There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
> >
> > Was this the only device connected? If so does connecting another usb device to another root port help?
> > Just to test if the host for some reason partially stops a while after last device disconnect?
>
> Device is connected directly into SoC. Once connected into HUB, host doesn't die
> (as noted in other email, sorry for not replying to my own message, so it got lost)
> It seems as intentional (power management?) optimization. If another device is
> plugged in before 5 sec timeout expires, host completes stop endpoint command.
>
> Unfortunately I cannot find anything describing this behavior in
> documentation, so I'll ask manufacturer support.
As support is usually slow I asked search engine first and this sounds
familiar:
"Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
xhci host controller from dying when device is disconnected."
usb: dwc3: Add quirk for Synopsis device disconnection errata
https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
Any clue what happened with that? I haven't found any meaningfull traces...
> Both solutions, do nothing or reset controller once last device is unpluged
> works, but I doubt they are suitable for mainline kernel without further
> investigation.
>
> > Another thing is that the stop endpoint command fails after three soft reset tries,
> > does disabling soft reset help?
>
> No, this does not cause any change.
>
> ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-19 21:45 ` Ladislav Michl
@ 2022-12-20 7:58 ` Ladislav Michl
2022-12-21 9:46 ` Mathias Nyman
2022-12-21 7:14 ` Ladislav Michl
1 sibling, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-20 7:58 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb
On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
> On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
> > On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> > > Looks like controller didn't complete the stop endpoint command.
> > >
> > > Event for last completed command (before cycle bit change "c" -> "C") was:
> > > 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
> > >
> > > This was for command at 35e81a0, which in the command ring was:
> > > 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
> > >
> > > The stop endpoint command was the next command queued, at 35e81b0:
> > > 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
> > >
> > > There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
> > >
> > > Was this the only device connected? If so does connecting another usb device to another root port help?
> > > Just to test if the host for some reason partially stops a while after last device disconnect?
> >
> > Device is connected directly into SoC. Once connected into HUB, host doesn't die
> > (as noted in other email, sorry for not replying to my own message, so it got lost)
> > It seems as intentional (power management?) optimization. If another device is
> > plugged in before 5 sec timeout expires, host completes stop endpoint command.
> >
> > Unfortunately I cannot find anything describing this behavior in
> > documentation, so I'll ask manufacturer support.
>
> As support is usually slow I asked search engine first and this sounds
> familiar:
> "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
> with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
> xhci host controller from dying when device is disconnected."
>
> usb: dwc3: Add quirk for Synopsis device disconnection errata
> https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
>
> Any clue what happened with that? I haven't found any meaningfull traces...
Just for completeness, this turned into:
41135de1e7fd ("usb: xhci: add quirk flag for broken PED bits")
and it is enabled:
cc params 0x0220f065 hci version 0x100 quirks 0x0000000002010010
However I do not see original logic there, clearing PORT_CSC before
stopping endpoint.
> > Both solutions, do nothing or reset controller once last device is unpluged
> > works, but I doubt they are suitable for mainline kernel without further
> > investigation.
> >
> > > Another thing is that the stop endpoint command fails after three soft reset tries,
> > > does disabling soft reset help?
> >
> > No, this does not cause any change.
> >
> > ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-19 21:45 ` Ladislav Michl
2022-12-20 7:58 ` Ladislav Michl
@ 2022-12-21 7:14 ` Ladislav Michl
2022-12-21 9:58 ` Mathias Nyman
1 sibling, 1 reply; 17+ messages in thread
From: Ladislav Michl @ 2022-12-21 7:14 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb, Sneeker Yeh
+Cc: Sneeker Yeh
On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
> On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
> > On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> > > On 16.12.2022 23.32, Ladislav Michl wrote:
> > > > On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
> > > > > On 15.12.2022 18.12, Ladislav Michl wrote:
> > > > > > +Cc Mathias as he last touched this code path and may know more :)
> > > > > >
> > > > > > On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
> > > > > > > On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
> > > > > > > > I'm running current linux.git on custom Marvell OCTEON III CN7020
> > > > > > > > based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
> > > > > > > > bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
> > > > > > > > bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
> > > > > > > > (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
> > > > > > > > disconnect:
> > > > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > > > > > > > xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > > > > > > > xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > > > > > > >
> > > > > > > > Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
> > > > > > > > to tell if there is any errata :/ In case anyone see a clue in debug
> > > > > > > > logs bellow, I'll happily give it a try.
> > > > > > >
> > > > > > > So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
> > > > > > > instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
> > > > > > > I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
> > > > > > > clock init is worth to be verified...
> > > > > >
> > > > > > After all whenever xhci dies with "xHCI host not responding to stop endpoint
> > > > > > command" depends also on temperature, so there seems to be race somewhere.
> > > > > >
> > > > > > As a quick and dirty verification, whenever xhci really died, following patch
> > > > > > was tested and it fixed issue. It just treats ep as if stop endpoint command
> > > > > > succeeded. Any clues? I'll happily provide more traces.
> > > > >
> > > > > It's possible the controller did complete the stop endpoint command but driver
> > > > > didn't get the interrupt for the event for some reason.
> > > > >
> > >
> > > Looks like controller didn't complete the stop endpoint command.
> > >
> > > Event for last completed command (before cycle bit change "c" -> "C") was:
> > > 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
> > >
> > > This was for command at 35e81a0, which in the command ring was:
> > > 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
> > >
> > > The stop endpoint command was the next command queued, at 35e81b0:
> > > 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
> > >
> > > There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
> > >
> > > Was this the only device connected? If so does connecting another usb device to another root port help?
> > > Just to test if the host for some reason partially stops a while after last device disconnect?
> >
> > Device is connected directly into SoC. Once connected into HUB, host doesn't die
> > (as noted in other email, sorry for not replying to my own message, so it got lost)
> > It seems as intentional (power management?) optimization. If another device is
> > plugged in before 5 sec timeout expires, host completes stop endpoint command.
> >
> > Unfortunately I cannot find anything describing this behavior in
> > documentation, so I'll ask manufacturer support.
>
> As support is usually slow I asked search engine first and this sounds
> familiar:
> "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
> with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
> xhci host controller from dying when device is disconnected."
>
> usb: dwc3: Add quirk for Synopsis device disconnection errata
> https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
>
> Any clue what happened with that? I haven't found any meaningfull traces...
Lets step back a bit. All test so far was done with mainline 6.1.0 kernel.
I also tested Marvell's vendor tree, one based on 4.9.79, second on 5.4.30,
both heavily patched. The last version of above patch I found is v5:
https://lkml.org/lkml/2015/2/21/260
A minimal version was ported to vendor's 4.9.79 kernel as:
--- a/drivers/usb/host/xhci-hub.c 2022-12-20 12:52:29.000520817 +0100
+++ b/drivers/usb/host/xhci-hub.c 2022-12-20 12:42:48.293743291 +0100
@@ -508,6 +508,9 @@
port_change_bit = "warm(BH) reset";
break;
case USB_PORT_FEAT_C_CONNECTION:
+ if (!(readl(addr) & PORT_CONNECT))
+ return;
+
status = PORT_CSC;
port_change_bit = "connect";
break;
--- a/drivers/usb/host/xhci.c 2022-12-20 12:52:29.000520817 +0100
+++ b/drivers/usb/host/xhci.c 2022-12-20 12:43:05.918190689 +0100
@@ -3571,6 +3571,38 @@
return ret;
}
+static void xhci_late_csc_clear_quirk(struct usb_hcd *hcd, int port_num)
+{
+ int max_ports;
+ struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ __le32 __iomem **port_array;
+ u32 status;
+
+ if (hcd->speed == HCD_USB3) {
+ max_ports = xhci->num_usb3_ports;
+ port_array = xhci->usb3_ports;
+ } else {
+ max_ports = xhci->num_usb2_ports;
+ port_array = xhci->usb2_ports;
+ }
+
+ if (port_num > max_ports) {
+ xhci_err(xhci, "%s() port number invalid", __func__);
+ return;
+ }
+ status = readl(port_array[port_num - 1]);
+
+ /*
+ * clearing the connect status bit will now immediately suspend these
+ * quirky controllers.
+ */
+ if (!(status & PORT_CONNECT) && (status & PORT_CSC)) {
+ xhci_info(xhci, "Clearing CSC\n");
+ status = xhci_port_state_to_neutral(status);
+ writel(status | PORT_CSC, port_array[port_num - 1]);
+ }
+}
+
/*
* At this point, the struct usb_device is about to go away, the device has
* disconnected, and all traffic has been stopped and the endpoints have been
@@ -3636,6 +3668,8 @@
xhci_ring_cmd_db(xhci);
spin_unlock_irqrestore(&xhci->lock, flags);
+ xhci_late_csc_clear_quirk(hcd, udev->portnum);
+
/*
* Event command completion handler will free any data structures
* associated with the slot. XXX Can free sleep?
Unfortunately it does not provide any difference and controller still didn't complete
stop endpoint command.
Is there any more information about DWC_USB3_SUSPEND_ON_DISCONNECT_EN silicon
configuration option?
Thank you,
ladis
> > Both solutions, do nothing or reset controller once last device is unpluged
> > works, but I doubt they are suitable for mainline kernel without further
> > investigation.
> >
> > > Another thing is that the stop endpoint command fails after three soft reset tries,
> > > does disabling soft reset help?
> >
> > No, this does not cause any change.
> >
> > ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-20 7:58 ` Ladislav Michl
@ 2022-12-21 9:46 ` Mathias Nyman
0 siblings, 0 replies; 17+ messages in thread
From: Mathias Nyman @ 2022-12-21 9:46 UTC (permalink / raw)
To: Ladislav Michl; +Cc: linux-usb
On 20.12.2022 9.58, Ladislav Michl wrote:
> On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
>> On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
>>> On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
>>>> Looks like controller didn't complete the stop endpoint command.
>>>>
>>>> Event for last completed command (before cycle bit change "c" -> "C") was:
>>>> 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
>>>>
>>>> This was for command at 35e81a0, which in the command ring was:
>>>> 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
>>>>
>>>> The stop endpoint command was the next command queued, at 35e81b0:
>>>> 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
>>>>
>>>> There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
>>>>
>>>> Was this the only device connected? If so does connecting another usb device to another root port help?
>>>> Just to test if the host for some reason partially stops a while after last device disconnect?
>>>
>>> Device is connected directly into SoC. Once connected into HUB, host doesn't die
>>> (as noted in other email, sorry for not replying to my own message, so it got lost)
>>> It seems as intentional (power management?) optimization. If another device is
>>> plugged in before 5 sec timeout expires, host completes stop endpoint command.
>>>
>>> Unfortunately I cannot find anything describing this behavior in
>>> documentation, so I'll ask manufacturer support.
>>
>> As support is usually slow I asked search engine first and this sounds
>> familiar:
>> "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
>> with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
>> xhci host controller from dying when device is disconnected."
>>
>> usb: dwc3: Add quirk for Synopsis device disconnection errata
>> https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
>>
>> Any clue what happened with that? I haven't found any meaningfull traces...
>
> Just for completeness, this turned into:
> 41135de1e7fd ("usb: xhci: add quirk flag for broken PED bits")
> and it is enabled:
> cc params 0x0220f065 hci version 0x100 quirks 0x0000000002010010
>
> However I do not see original logic there, clearing PORT_CSC before
> stopping endpoint.
CSC is cleared to allow xHC future port change events reporting.
we don't want to miss when something is re-connected.
Hardware shouldn't stop running based on cleared CSC, it should stop when
driver clears the USBCMD register Run/Stop bit.
-Mathias
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-21 7:14 ` Ladislav Michl
@ 2022-12-21 9:58 ` Mathias Nyman
2022-12-21 10:11 ` Ladislav Michl
0 siblings, 1 reply; 17+ messages in thread
From: Mathias Nyman @ 2022-12-21 9:58 UTC (permalink / raw)
To: Ladislav Michl; +Cc: linux-usb, Sneeker Yeh
On 21.12.2022 9.14, Ladislav Michl wrote:
> +Cc: Sneeker Yeh
>
> On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
>> On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
>>> On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
>>>> On 16.12.2022 23.32, Ladislav Michl wrote:
>>>>> On Fri, Dec 16, 2022 at 12:13:23PM +0200, Mathias Nyman wrote:
>>>>>> On 15.12.2022 18.12, Ladislav Michl wrote:
>>>>>>> +Cc Mathias as he last touched this code path and may know more :)
>>>>>>>
>>>>>>> On Tue, Dec 06, 2022 at 02:17:08PM +0100, Ladislav Michl wrote:
>>>>>>>> On Mon, Dec 05, 2022 at 10:27:57PM +0100, Ladislav Michl wrote:
>>>>>>>>> I'm running current linux.git on custom Marvell OCTEON III CN7020
>>>>>>>>> based board. USB devices like FTDI (idVendor=0403, idProduct=6001,
>>>>>>>>> bcdDevice= 6.00) Realtek WiFi dongle (idVendor=0bda, idProduct=8179,
>>>>>>>>> bcdDevice= 0.00) works without issues, while Ralink WiFi dongle
>>>>>>>>> (idVendor=148f, idProduct=5370, bcdDevice= 1.01) kills the host on
>>>>>>>>> disconnect:
>>>>>>>>> xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
>>>>>>>>> xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
>>>>>>>>> xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
>>>>>>>>>
>>>>>>>>> Unfortunately I do not have a datasheet for CN7020 SoC, so it is hard
>>>>>>>>> to tell if there is any errata :/ In case anyone see a clue in debug
>>>>>>>>> logs bellow, I'll happily give it a try.
>>>>>>>>
>>>>>>>> So I do have datasheet now. As a wild guess I tried to use dlmc_ref_clk0
>>>>>>>> instead of dlmc_ref_clk1 as a refclk-type-ss and it fixed unplug death.
>>>>>>>> I have no clue why, but anyway - sorry for the noise :) Perhaps Octeon's
>>>>>>>> clock init is worth to be verified...
>>>>>>>
>>>>>>> After all whenever xhci dies with "xHCI host not responding to stop endpoint
>>>>>>> command" depends also on temperature, so there seems to be race somewhere.
>>>>>>>
>>>>>>> As a quick and dirty verification, whenever xhci really died, following patch
>>>>>>> was tested and it fixed issue. It just treats ep as if stop endpoint command
>>>>>>> succeeded. Any clues? I'll happily provide more traces.
>>>>>>
>>>>>> It's possible the controller did complete the stop endpoint command but driver
>>>>>> didn't get the interrupt for the event for some reason.
>>>>>>
>>>>
>>>> Looks like controller didn't complete the stop endpoint command.
>>>>
>>>> Event for last completed command (before cycle bit change "c" -> "C") was:
>>>> 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
>>>>
>>>> This was for command at 35e81a0, which in the command ring was:
>>>> 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
>>>>
>>>> The stop endpoint command was the next command queued, at 35e81b0:
>>>> 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
>>>>
>>>> There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
>>>>
>>>> Was this the only device connected? If so does connecting another usb device to another root port help?
>>>> Just to test if the host for some reason partially stops a while after last device disconnect?
>>>
>>> Device is connected directly into SoC. Once connected into HUB, host doesn't die
>>> (as noted in other email, sorry for not replying to my own message, so it got lost)
>>> It seems as intentional (power management?) optimization. If another device is
>>> plugged in before 5 sec timeout expires, host completes stop endpoint command.
>>>
>>> Unfortunately I cannot find anything describing this behavior in
>>> documentation, so I'll ask manufacturer support.
>>
>> As support is usually slow I asked search engine first and this sounds
>> familiar:
>> "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
>> with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
>> xhci host controller from dying when device is disconnected."
>>
>> usb: dwc3: Add quirk for Synopsis device disconnection errata
>> https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
>>
>> Any clue what happened with that? I haven't found any meaningfull traces...
>
> Lets step back a bit. All test so far was done with mainline 6.1.0 kernel.
> I also tested Marvell's vendor tree, one based on 4.9.79, second on 5.4.30,
> both heavily patched. The last version of above patch I found is v5:
> https://lkml.org/lkml/2015/2/21/260
>
Looked at that same series and turned patch 1/5 into a standalone quick hack that applies on 6.1
Untested, does it work for you?
Can be found in a delay_csc_clear branch in my tree:
git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git delay_csc_clear
https://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git/log/?h=delay_csc_clear
looks like this: (copypasted, might mess up tabs)
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index 4619d5e89d5b..5bc1f78b41da 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -603,6 +603,10 @@ static void xhci_clear_port_change_bit(struct xhci_hcd *xhci, u16 wValue,
port_change_bit = "warm(BH) reset";
break;
case USB_PORT_FEAT_C_CONNECTION:
+ if (1 && !(readl(addr) & PORT_CONNECT)) { /* add proper quirk */
+ xhci_warn(xhci, "Delay clearing port-%d CSC\n", wIndex + 1);
+ return;
+ }
status = PORT_CSC;
port_change_bit = "connect";
break;
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 79d7931c048a..133ec4b8930f 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4000,6 +4000,28 @@ static void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)
virt_dev->eps[i].ep_state &= ~EP_STOP_CMD_PENDING;
virt_dev->udev = NULL;
xhci_disable_slot(xhci, udev->slot_id);
+
+ if (1 && udev->parent && !udev->parent->parent) { /*fixme, real quirk */
+ struct xhci_hub *rhub;
+ u32 portsc;
+
+ rhub = xhci_get_rhub(hcd);
+
+ if (udev->portnum > rhub->num_ports) {
+ xhci_warn(xhci, "Invalid portnum %d for late clearing CSC\n", udev->portnum);
+ goto out;
+ }
+
+ portsc = readl(rhub->ports[udev->portnum - 1]->addr);
+
+ if (!(portsc & PORT_CONNECT) && (portsc & PORT_CSC)) {
+ xhci_warn(xhci, "Late clearing port-%d CSC, portsc 0x%x\n",
+ udev->portnum, portsc);
+ portsc = xhci_port_state_to_neutral(portsc);
+ writel(portsc | PORT_CSC, rhub->ports[udev->portnum - 1]->addr);
+ }
+ }
+out:
xhci_free_virt_device(xhci, udev->slot_id);
}
Thanks
-Mathias
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-21 9:58 ` Mathias Nyman
@ 2022-12-21 10:11 ` Ladislav Michl
2022-12-21 12:05 ` Ladislav Michl
2022-12-21 12:12 ` Mathias Nyman
0 siblings, 2 replies; 17+ messages in thread
From: Ladislav Michl @ 2022-12-21 10:11 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb, Sneeker Yeh
On Wed, Dec 21, 2022 at 11:58:42AM +0200, Mathias Nyman wrote:
> On 21.12.2022 9.14, Ladislav Michl wrote:
> > +Cc: Sneeker Yeh
> >
> > On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
> > > On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
> > > > On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> > > > >
> > > > > Looks like controller didn't complete the stop endpoint command.
> > > > >
> > > > > Event for last completed command (before cycle bit change "c" -> "C") was:
> > > > > 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
> > > > >
> > > > > This was for command at 35e81a0, which in the command ring was:
> > > > > 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
> > > > >
> > > > > The stop endpoint command was the next command queued, at 35e81b0:
> > > > > 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
> > > > >
> > > > > There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
> > > > >
> > > > > Was this the only device connected? If so does connecting another usb device to another root port help?
> > > > > Just to test if the host for some reason partially stops a while after last device disconnect?
> > > >
> > > > Device is connected directly into SoC. Once connected into HUB, host doesn't die
> > > > (as noted in other email, sorry for not replying to my own message, so it got lost)
> > > > It seems as intentional (power management?) optimization. If another device is
> > > > plugged in before 5 sec timeout expires, host completes stop endpoint command.
> > > >
> > > > Unfortunately I cannot find anything describing this behavior in
> > > > documentation, so I'll ask manufacturer support.
> > >
> > > As support is usually slow I asked search engine first and this sounds
> > > familiar:
> > > "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
> > > with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
> > > xhci host controller from dying when device is disconnected."
> > >
> > > usb: dwc3: Add quirk for Synopsis device disconnection errata
> > > https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
> > >
> > > Any clue what happened with that? I haven't found any meaningfull traces...
> >
> > Lets step back a bit. All test so far was done with mainline 6.1.0 kernel.
> > I also tested Marvell's vendor tree, one based on 4.9.79, second on 5.4.30,
> > both heavily patched. The last version of above patch I found is v5:
> > https://lkml.org/lkml/2015/2/21/260
> >
>
> Looked at that same series and turned patch 1/5 into a standalone quick hack that applies on 6.1
>
> Untested, does it work for you?
Applied on the top of you stop_endpoint_fixes, 6.1.0. is a base tree:
[ 24.800835] xhci-hcd xhci-hcd.0.auto: Delay clearing port-1 CSC
[ 24.806788] usb 1-1: USB disconnect, device number 2
[ 28.148451] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x101c with error -19
[ 29.828466] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
[ 29.856656] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
[ 29.864804] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
[ 29.949460] xhci-hcd xhci-hcd.0.auto: Late clearing port-1 CSC, portsc 0x202a0
What about checking whenever anything is still connected on command timeout
and considering device autosuspended instead of killing it?
ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-21 10:11 ` Ladislav Michl
@ 2022-12-21 12:05 ` Ladislav Michl
2022-12-21 12:12 ` Mathias Nyman
1 sibling, 0 replies; 17+ messages in thread
From: Ladislav Michl @ 2022-12-21 12:05 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb, Sneeker Yeh
On Wed, Dec 21, 2022 at 11:11:19AM +0100, Ladislav Michl wrote:
> On Wed, Dec 21, 2022 at 11:58:42AM +0200, Mathias Nyman wrote:
> > Looked at that same series and turned patch 1/5 into a standalone quick hack that applies on 6.1
> >
> > Untested, does it work for you?
>
> Applied on the top of you stop_endpoint_fixes, 6.1.0. is a base tree:
> [ 24.800835] xhci-hcd xhci-hcd.0.auto: Delay clearing port-1 CSC
> [ 24.806788] usb 1-1: USB disconnect, device number 2
> [ 28.148451] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x101c with error -19
> [ 29.828466] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> [ 29.856656] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> [ 29.864804] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> [ 29.949460] xhci-hcd xhci-hcd.0.auto: Late clearing port-1 CSC, portsc 0x202a0
>
> What about checking whenever anything is still connected on command timeout
> and considering device autosuspended instead of killing it?
Just completed test run, it is working, but I'd consider it insane at least...
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index b07d3740f554..d7b7faaac647 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1580,6 +1580,21 @@ static bool xhci_pending_command_completion(struct xhci_hcd *xhci)
return false;
}
+static bool xhci_is_anything_connected(struct xhci_hcd *xhci)
+{
+ struct usb_hcd *hcd = xhci_to_hcd(xhci);
+ struct xhci_hub *rhub = xhci_get_rhub(hcd);
+ struct xhci_port **ports = rhub->ports;
+ int i, max_ports = rhub->num_ports;
+
+ max_ports = rhub->num_ports;
+ for (i = 0; i < max_ports; i++)
+ if (PORT_CONNECT & readl(ports[i]->addr))
+ return true;
+
+ return false;
+}
+
void xhci_handle_command_timeout(struct work_struct *work)
{
struct xhci_hcd *xhci;
@@ -1587,7 +1602,6 @@ void xhci_handle_command_timeout(struct work_struct *work)
char str[XHCI_MSG_MAX];
u64 hw_ring_state;
u32 cmd_field3;
- u32 usbsts;
xhci = container_of(to_delayed_work(work), struct xhci_hcd, cmd_timer);
@@ -1602,9 +1616,9 @@ void xhci_handle_command_timeout(struct work_struct *work)
return;
}
- cmd_field3 = le32_to_cpu(xhci->current_cmd->command_trb->generic.field[3]);
- usbsts = readl(&xhci->op_regs->status);
- xhci_dbg(xhci, "Command timeout, USBSTS:%s\n", xhci_decode_usbsts(str, usbsts));
+ xhci_dbg(xhci, "Command timeout, USBSTS:%s, USBCMD: %08x\n",
+ xhci_decode_usbsts(str, readl(&xhci->op_regs->status)),
+ readl(&xhci->op_regs->command));
/* Did hw complete the command but event handler was blocked? */
if (xhci_pending_interrupt(xhci) > 0 &&
@@ -1616,10 +1630,16 @@ void xhci_handle_command_timeout(struct work_struct *work)
return;
}
+ cmd_field3 = le32_to_cpu(xhci->current_cmd->command_trb->generic.field[3]);
/* Bail out and tear down xhci if a stop endpoint command failed */
if (TRB_FIELD_TO_TYPE(cmd_field3) == TRB_STOP_RING) {
struct xhci_virt_ep *ep;
+ if (!(xhci_is_anything_connected(xhci))) {
+ xhci_info(xhci, "xHCI autosuspended?\n");
+ goto time_out_completed;
+ }
+
xhci_warn(xhci, "xHCI host not responding to stop endpoint command\n");
ep = xhci_get_virt_ep(xhci, TRB_TO_SLOT_ID(cmd_field3),
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-21 10:11 ` Ladislav Michl
2022-12-21 12:05 ` Ladislav Michl
@ 2022-12-21 12:12 ` Mathias Nyman
2022-12-21 12:21 ` Ladislav Michl
1 sibling, 1 reply; 17+ messages in thread
From: Mathias Nyman @ 2022-12-21 12:12 UTC (permalink / raw)
To: Ladislav Michl; +Cc: linux-usb, Sneeker Yeh
On 21.12.2022 12.11, Ladislav Michl wrote:
> On Wed, Dec 21, 2022 at 11:58:42AM +0200, Mathias Nyman wrote:
>> On 21.12.2022 9.14, Ladislav Michl wrote:
>>> +Cc: Sneeker Yeh
>>>
>>> On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
>>>> On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
>>>>> On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
>>>>>>
>>>>>> Looks like controller didn't complete the stop endpoint command.
>>>>>>
>>>>>> Event for last completed command (before cycle bit change "c" -> "C") was:
>>>>>> 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
>>>>>>
>>>>>> This was for command at 35e81a0, which in the command ring was:
>>>>>> 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
>>>>>>
>>>>>> The stop endpoint command was the next command queued, at 35e81b0:
>>>>>> 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
>>>>>>
>>>>>> There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
>>>>>>
>>>>>> Was this the only device connected? If so does connecting another usb device to another root port help?
>>>>>> Just to test if the host for some reason partially stops a while after last device disconnect?
>>>>>
>>>>> Device is connected directly into SoC. Once connected into HUB, host doesn't die
>>>>> (as noted in other email, sorry for not replying to my own message, so it got lost)
>>>>> It seems as intentional (power management?) optimization. If another device is
>>>>> plugged in before 5 sec timeout expires, host completes stop endpoint command.
>>>>>
>>>>> Unfortunately I cannot find anything describing this behavior in
>>>>> documentation, so I'll ask manufacturer support.
>>>>
>>>> As support is usually slow I asked search engine first and this sounds
>>>> familiar:
>>>> "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
>>>> with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
>>>> xhci host controller from dying when device is disconnected."
>>>>
>>>> usb: dwc3: Add quirk for Synopsis device disconnection errata
>>>> https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
>>>>
>>>> Any clue what happened with that? I haven't found any meaningfull traces...
>>>
>>> Lets step back a bit. All test so far was done with mainline 6.1.0 kernel.
>>> I also tested Marvell's vendor tree, one based on 4.9.79, second on 5.4.30,
>>> both heavily patched. The last version of above patch I found is v5:
>>> https://lkml.org/lkml/2015/2/21/260
>>>
>>
>> Looked at that same series and turned patch 1/5 into a standalone quick hack that applies on 6.1
>>
>> Untested, does it work for you?
>
> Applied on the top of you stop_endpoint_fixes, 6.1.0. is a base tree:
> [ 24.800835] xhci-hcd xhci-hcd.0.auto: Delay clearing port-1 CSC
> [ 24.806788] usb 1-1: USB disconnect, device number 2
> [ 28.148451] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x101c with error -19
> [ 29.828466] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> [ 29.856656] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> [ 29.864804] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> [ 29.949460] xhci-hcd xhci-hcd.0.auto: Late clearing port-1 CSC, portsc 0x202a0
>
> What about checking whenever anything is still connected on command timeout
> and considering device autosuspended instead of killing it?
Agree that we shouldn't kill it now that we know about this case.
Any idea what happens to the unhandled commands that are queued.
Are they lost, or does host continue processing them after reconnect?
If stop endpoint command times out without any device connected we should
probably start by manually giving back pending/cancelled URBs.
There will probably be a couple more commands queued after this when endpoints
are dropped and usb device freed (disable xhci slot)
Need to figure out what to do with these.
host still seems to respond to register writes even if it doesn't handle commands,
so entering suspend should be easier to tackle.
-Mathias
>
> ladis
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: xHCI host dies on device unplug
2022-12-21 12:12 ` Mathias Nyman
@ 2022-12-21 12:21 ` Ladislav Michl
0 siblings, 0 replies; 17+ messages in thread
From: Ladislav Michl @ 2022-12-21 12:21 UTC (permalink / raw)
To: Mathias Nyman; +Cc: linux-usb, Sneeker Yeh
On Wed, Dec 21, 2022 at 02:12:03PM +0200, Mathias Nyman wrote:
> On 21.12.2022 12.11, Ladislav Michl wrote:
> > On Wed, Dec 21, 2022 at 11:58:42AM +0200, Mathias Nyman wrote:
> > > On 21.12.2022 9.14, Ladislav Michl wrote:
> > > > +Cc: Sneeker Yeh
> > > >
> > > > On Mon, Dec 19, 2022 at 10:45:43PM +0100, Ladislav Michl wrote:
> > > > > On Mon, Dec 19, 2022 at 07:31:02PM +0100, Ladislav Michl wrote:
> > > > > > On Mon, Dec 19, 2022 at 02:25:46PM +0200, Mathias Nyman wrote:
> > > > > > >
> > > > > > > Looks like controller didn't complete the stop endpoint command.
> > > > > > >
> > > > > > > Event for last completed command (before cycle bit change "c" -> "C") was:
> > > > > > > 0x00000000028f55a0: TRB 00000000035e81a0 status 'Success' len 0 slot 1 ep 0 type 'Command Completion Event' flags e:c,
> > > > > > >
> > > > > > > This was for command at 35e81a0, which in the command ring was:
> > > > > > > 0x00000000035e81a0: Reset Endpoint Command: ctx 0000000000000000 slot 1 ep 3 flags T:c
> > > > > > >
> > > > > > > The stop endpoint command was the next command queued, at 35e81b0:
> > > > > > > 0x00000000035e81b0: Stop Ring Command: slot 1 sp 0 ep 3 flags c
> > > > > > >
> > > > > > > There were a lot of URBs queued for this device, and they are cancelled one by one after disconnect.
> > > > > > >
> > > > > > > Was this the only device connected? If so does connecting another usb device to another root port help?
> > > > > > > Just to test if the host for some reason partially stops a while after last device disconnect?
> > > > > >
> > > > > > Device is connected directly into SoC. Once connected into HUB, host doesn't die
> > > > > > (as noted in other email, sorry for not replying to my own message, so it got lost)
> > > > > > It seems as intentional (power management?) optimization. If another device is
> > > > > > plugged in before 5 sec timeout expires, host completes stop endpoint command.
> > > > > >
> > > > > > Unfortunately I cannot find anything describing this behavior in
> > > > > > documentation, so I'll ask manufacturer support.
> > > > >
> > > > > As support is usually slow I asked search engine first and this sounds
> > > > > familiar:
> > > > > "Synopsis Designware USB3 IP earlier than v3.00a which is configured in silicon
> > > > > with DWC_USB3_SUSPEND_ON_DISCONNECT_EN=1, would need a specific quirk to prevent
> > > > > xhci host controller from dying when device is disconnected."
> > > > >
> > > > > usb: dwc3: Add quirk for Synopsis device disconnection errata
> > > > > https://patchwork.kernel.org/project/linux-omap/patch/1424151697-2084-5-git-send-email-Sneeker.Yeh@tw.fujitsu.com/
> > > > >
> > > > > Any clue what happened with that? I haven't found any meaningfull traces...
> > > >
> > > > Lets step back a bit. All test so far was done with mainline 6.1.0 kernel.
> > > > I also tested Marvell's vendor tree, one based on 4.9.79, second on 5.4.30,
> > > > both heavily patched. The last version of above patch I found is v5:
> > > > https://lkml.org/lkml/2015/2/21/260
> > > >
> > >
> > > Looked at that same series and turned patch 1/5 into a standalone quick hack that applies on 6.1
> > >
> > > Untested, does it work for you?
> >
> > Applied on the top of you stop_endpoint_fixes, 6.1.0. is a base tree:
> > [ 24.800835] xhci-hcd xhci-hcd.0.auto: Delay clearing port-1 CSC
> > [ 24.806788] usb 1-1: USB disconnect, device number 2
> > [ 28.148451] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x101c with error -19
> > [ 29.828466] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command
> > [ 29.856656] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
> > [ 29.864804] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
> > [ 29.949460] xhci-hcd xhci-hcd.0.auto: Late clearing port-1 CSC, portsc 0x202a0
> >
> > What about checking whenever anything is still connected on command timeout
> > and considering device autosuspended instead of killing it?
> Agree that we shouldn't kill it now that we know about this case.
>
> Any idea what happens to the unhandled commands that are queued.
> Are they lost, or does host continue processing them after reconnect?
Host continues processing them, see patch in another reply.
(it can be also verified on unpatched driver by connecting (even another)
device before command timeout expires - host normally continues operating)
> If stop endpoint command times out without any device connected we should
> probably start by manually giving back pending/cancelled URBs.
>
> There will probably be a couple more commands queued after this when endpoints
> are dropped and usb device freed (disable xhci slot)
> Need to figure out what to do with these.
>
> host still seems to respond to register writes even if it doesn't handle commands,
> so entering suspend should be easier to tackle.
At first I was trying to stop endpoint with explicid suspend, this way:
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 7a63bc56a195..7dadd2e4de8f 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -1900,7 +1900,7 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
}
ep->ep_state |= EP_STOP_CMD_PENDING;
xhci_queue_stop_endpoint(xhci, command, urb->dev->slot_id,
- ep_index, 0);
+ ep_index, 1);
xhci_ring_cmd_db(xhci);
}
done:
This at least allows command to finish, so host is not killed, but I haven't
figure how to resume operation.
^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2022-12-21 12:21 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-05 21:27 xHCI host dies on device unplug Ladislav Michl
2022-12-06 13:17 ` Ladislav Michl
2022-12-15 16:12 ` Ladislav Michl
2022-12-16 10:13 ` Mathias Nyman
2022-12-16 21:32 ` Ladislav Michl
2022-12-19 12:25 ` Mathias Nyman
2022-12-19 18:31 ` Ladislav Michl
2022-12-19 21:45 ` Ladislav Michl
2022-12-20 7:58 ` Ladislav Michl
2022-12-21 9:46 ` Mathias Nyman
2022-12-21 7:14 ` Ladislav Michl
2022-12-21 9:58 ` Mathias Nyman
2022-12-21 10:11 ` Ladislav Michl
2022-12-21 12:05 ` Ladislav Michl
2022-12-21 12:12 ` Mathias Nyman
2022-12-21 12:21 ` Ladislav Michl
2022-12-19 7:11 ` Ladislav Michl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).