NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/56678: usbdevs stuck on usbxfer
>Number: 56678
>Category: kern
>Synopsis: usbdevs stuck on usbxfer
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jan 30 14:30:00 +0000 2022
>Originator: Reinoud Zandijk
>Release: NetBSD 9.99.92
>Organization:
>Environment:
System: NetBSD gorilla.13thmonkey.org 9.99.92 NetBSD 9.99.92 (GENERIC) #0: Thu Dec 16 22:54:09 CET 2021 reinoud%gorilla.13thmonkey.org@localhost:/tmp/obj-clean/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
I reinserted an USB harddisc I had inserted earlier and this time it failed to
show up in the dmesg. I issued an `usbdevs' command and it got stuck and
didn't unfreeze after a timeout.
> sudo usbdevs
Password:
addr 0: xHCI root hub, NetBSD
addr 0: xHCI root hub, NetBSD
addr 1: ITE Device(8595), ITE Tech. Inc.
addr 2: USB2.0 Hub, Genesys Logic
addr 0: xHCI root hub, NetBSD
addr 0: xHCI root hub, NetBSD
[ 2129583.0259428] load: 0.03 cmd: usbdevs 8614 [usbxfer] 0.02u 0.00s 0% 1648k
Using gdb on the /netbsd.gdb kernel with a kvm target to print info gave:
(gdb) print *((struct uhub_softc *)uhub_cd.cd_devs[7]->dv_private)->sc_hub->ud_pipe0
$1 = {up_iface = 0x0, up_dev = 0xffff807b6b4b3bc0, up_endpoint = 0xffff807b6b4b3bf8, up_running = 0 '\000',
up_aborting = 0 '\000', up_serialise = true, up_queue = {sqh_first = 0x0, sqh_last = 0xffff807b6b4b3d20},
up_async_task = {next = {tqe_next = 0x0, tqe_prev = 0x0},
fun = 0xffffffff80474c83 <usbd_clear_endpoint_stall_task>, arg = 0xffff807b6b4b3d00, queue = 2, flags = 128},
up_intrxfer = 0x0, up_repeat = 0 '\000', up_interval = -1, up_flags = 0 '\000', up_callingxfer = 0x0,
up_callingcv = {cv_opaque = {0x0, 0xffffffff813bdd07}},
up_methods = 0xffffffff8124f980 <xhci_device_ctrl_methods>}
(gdb) print *((struct umass_softc *)umass_cd.cd_devs[0]->dv_private)->sc_udev->ud_pipe0
$2 = {up_iface = 0x0, up_dev = 0xffff807c31ccfe40, up_endpoint = 0xffff807c31ccfe78, up_running = 0 '\000',
up_aborting = 0 '\000', up_serialise = true, up_queue = {sqh_first = 0x0, sqh_last = 0xffff8083d506b9a0},
up_async_task = {next = {tqe_next = 0x2600000033, tqe_prev = 0x2100000024},
fun = 0xffffffff80474c83 <usbd_clear_endpoint_stall_task>, arg = 0xffff8083d506b980, queue = 2, flags = 128},
up_intrxfer = 0x0, up_repeat = 0 '\000', up_interval = -1, up_flags = 0 '\000', up_callingxfer = 0x0,
up_callingcv = {cv_opaque = {0x0, 0xffffffff813bdd07}},
up_methods = 0xffffffff8124f980 <xhci_device_ctrl_methods>}
(gdb) print *((struct umass_softc *)umass_cd.cd_devs[1]->dv_private)->sc_udev->ud_pipe0
$3 = {up_iface = 0x0, up_dev = 0xffff8086090c32c0, up_endpoint = 0xffff8086090c32f8, up_running = 1 '\001',
up_aborting = 0 '\000', up_serialise = true, up_queue = {sqh_first = 0xffff807b6b0ae2b8,
sqh_last = 0xffff807b6b0aed50}, up_async_task = {next = {tqe_next = 0x2800000031, tqe_prev = 0x270000002e},
fun = 0xffffffff80474c83 <usbd_clear_endpoint_stall_task>, arg = 0xffff808962a63900, queue = 2, flags = 128},
up_intrxfer = 0x0, up_repeat = 0 '\000', up_interval = -1, up_flags = 0 '\000', up_callingxfer = 0x0,
up_callingcv = {cv_opaque = {0x0, 0xffffffff813bdd07}},
up_methods = 0xffffffff8124f980 <xhci_device_ctrl_methods>}
(gdb) print *((struct umass_softc *)umass_cd.cd_devs[1]->dv_private)->sc_udev->ud_pipe0->up_queue.sqh_first
$4 = {ux_pipe = 0xffff808962a63900, ux_priv = 0xffff8083f67ccc80, ux_buffer = 0x0, ux_cv = {cv_opaque = {0x0,
0xffffffff813bcee2}}, ux_length = 0, ux_actlen = 0, ux_flags = 0, ux_timeout = 15000,
ux_status = USBD_IN_PROGRESS, ux_callback = 0xffffffff8049405a <umass_bbb_state>, ux_done = 0 '\000',
ux_state = 158 '\236', ux_request = {bmRequestType = 2 '\002', bRequest = 1 '\001', wValue = "\000",
wIndex = "�", wLength = "\000"}, ux_frlengths = 0x0, ux_nframes = 0,
ux_methods = 0xffffffff8124f980 <xhci_device_ctrl_methods>, ux_bus = 0xffff807b6ad354f0, ux_dmabuf = {
udma_block = 0x0, udma_offs = 0}, ux_buf = 0x0, ux_bufsize = 0, ux_rqflags = 1 '\001', ux_next = {
sqe_next = 0xffff807b6b44b048}, ux_hcpriv = 0x0, ux_aborttask = {next = {tqe_next = 0x1, tqe_prev = 0x1},
fun = 0xffffffff80473922 <usbd_xfer_timeout_task>, arg = 0xffff807b6b0ae2b8, queue = 2, flags = 128},
ux_callout = {_c_store = {0xffffffff818a67e0 <callout_cpu0+160>, 0xffffffff818a67e0 <callout_cpu0+160>,
0xffffffff804739b7 <usbd_xfer_timeout>, 0xffff807b6b0ae2b8, 0xffffffff818a6740 <callout_cpu0>,
0x1000bfc378e, 0x11deeba1, 0x0, 0x0, 0x0}}, ux_timeout_set = true, ux_timeout_reset = true}
(gdb) print *((struct umass_softc *)umass_cd.cd_devs[1]->dv_private)->sc_udev->ud_pipe0->up_queue.sqh_first
$8 = {ux_pipe = 0xffff808962a63900, ux_priv = 0xffff8083f67ccc80, ux_buffer = 0x0, ux_cv = {cv_opaque = {0x0,
0xffffffff813bcee2}}, ux_length = 0, ux_actlen = 0, ux_flags = 0, ux_timeout = 15000,
ux_status = USBD_IN_PROGRESS, ux_callback = 0xffffffff8049405a <umass_bbb_state>, ux_done = 0 '\000',
ux_state = 158 '\236', ux_request = {bmRequestType = 2 '\002', bRequest = 1 '\001', wValue = "\000",
wIndex = "�", wLength = "\000"}, ux_frlengths = 0x0, ux_nframes = 0,
ux_methods = 0xffffffff8124f980 <xhci_device_ctrl_methods>, ux_bus = 0xffff807b6ad354f0, ux_dmabuf = {
udma_block = 0x0, udma_offs = 0}, ux_buf = 0x0, ux_bufsize = 0, ux_rqflags = 1 '\001', ux_next = {
sqe_next = 0xffff807b6b44b048}, ux_hcpriv = 0x0, ux_aborttask = {next = {tqe_next = 0x1, tqe_prev = 0x1},
fun = 0xffffffff80473922 <usbd_xfer_timeout_task>, arg = 0xffff807b6b0ae2b8, queue = 2, flags = 128},
ux_callout = {_c_store = {0xffffffff818a67e0 <callout_cpu0+160>, 0xffffffff818a67e0 <callout_cpu0+160>,
0xffffffff804739b7 <usbd_xfer_timeout>, 0xffff807b6b0ae2b8, 0xffffffff818a6740 <callout_cpu0>,
0x1000bfc378e, 0x11deeba1, 0x0, 0x0, 0x0}}, ux_timeout_set = true, ux_timeout_reset = true}
(gdb) print *((struct xhci_softc *)xhci_cd.cd_devs[1]->dv_private)
$9 = {sc_dev = 0xffff807b6acd6980, sc_child = 0xffff807b6acd6cc0, sc_child2 = 0xffff807b6ad4e040, sc_ios = 1040384,
sc_iot = 0xffffffff818440e0 <x86_mem>, sc_ioh = 18446649535508205568, sc_cbh = 18446649535508205568, sc_obh = 18446649535508205600,
sc_rbh = 18446649535508206784, sc_dbh = 18446649535508207072, sc_bus = {ub_hcpriv = 0xffff807b6ad35000, ub_revision = 6, ub_hctype = 0, ub_busnum = 0,
ub_methods = 0xffffffff8124fa00 <xhci_bus_methods>, ub_pipesize = 192, ub_usedma = true, ub_dmaflags = 0,
ub_dmatag = 0xffffffff81844e80 <pci_bus_dma64_tag>, ub_lock = 0xffff807b6ad35990, ub_roothub = 0xffff807b6b0a9740, ub_rhaddr = 0 '\000',
ub_rhconf = 1 '\001', ub_devices = {0x0, 0xffff807b6b0a9740, 0x0 <repeats 127 times>}, ub_needsexplore_cv = {cv_opaque = {0xffff807b6b0ed500,
0xffffffff813bcd1f}}, ub_needsexplore = 0 '\000', ub_usepolling = 0 '\000', ub_usbctl = 0xffff807b6acd6cc0, ub_stats = {uds_requests = {31, 0, 0,
0}}, ub_soft = 0x8d8}, sc_bus2 = {ub_hcpriv = 0xffff807b6ad35000, ub_revision = 4, ub_hctype = 0, ub_busnum = 0,
ub_methods = 0xffffffff8124fa00 <xhci_bus_methods>, ub_pipesize = 192, ub_usedma = true, ub_dmaflags = 0,
ub_dmatag = 0xffffffff81844e80 <pci_bus_dma64_tag>, ub_lock = 0xffff807b6ad35990, ub_roothub = 0xffff807b6b0a9c40, ub_rhaddr = 0 '\000',
ub_rhconf = 1 '\001', ub_devices = {0x0, 0xffff807b6b0a9c40, 0xffff807da860ee80, 0xffff80853e0f8100, 0xffff807b6b4b3bc0, 0xffff807c3688c880,
0xffff807c31ccfe40, 0xffff8086090c32c0, 0x0 <repeats 121 times>}, ub_needsexplore_cv = {cv_opaque = {0xffff807b6b0ed940, 0xffffffff813bcd1f}},
ub_needsexplore = 0 '\000', ub_usepolling = 0 '\000', ub_usbctl = 0xffff807b6ad4e040, ub_stats = {uds_requests = {2414, 120, 283447, 1602874}},
ub_soft = 0x900}, sc_lock = {u = {mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', mtxs_ipl = {_ipl = 0 '\000'}, mtxs_lock = 0 '\000',
mtxs_unused = 0 '\000'}}}, sc_intr_lock = {u = {mtxa_owner = 1537, s = {mtxs_dummy = 1 '\001', mtxs_ipl = {_ipl = 6 '\006'},
mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, sc_xferpool = 0xffff807b6ad0d4c0, sc_pgsz = 4096, sc_ctxsz = 64, sc_maxslots = 64,
sc_maxintrs = 8, sc_maxspbuf = 2, sc_maxports = 10, sc_ctlrportbus = 0xffff808a66dda320 "?", sc_ctlrportmap = 0xffff807b6acc6300, sc_rhportmap = {
0xffff807b6acc6380, 0xffff807b6acc6400}, sc_rhportcount = {4, 6}, sc_intrxfer = {0xffff807b6b0ae038, 0xffff807b6b0ae178},
sc_slots = 0xffffaa0086d98000, sc_cr = 0xffff807b6acc6500, sc_er = 0xffff807b6acc6580, sc_eventst_dma = {udma_block = 0xffff807b6ad3e340,
udma_offs = 4032}, sc_dcbaa_dma = {udma_block = 0xffff807b6ad3e4c0, udma_offs = 0}, sc_spbufarray_dma = {udma_block = 0xffff807b6ad15b80,
udma_offs = 4032}, sc_spbuf_dma = 0xffff807b6acc6480, sc_cmdbusy_cv = {cv_opaque = {0x0, 0xffffffff813f5344}}, sc_command_cv = {cv_opaque = {0x0,
0xffffffff813f533c}}, sc_command_addr = 0, sc_result_trb = {trb_0 = 4327410576, trb_2 = 16777216, trb_3 = 83919873}, sc_resultpending = false,
sc_dying = false, sc_suspender = 0x0, sc_vendor_init = 0x0, sc_vendor_port_status = 0x0, sc_quirks = 0, sc_hcc = 41484261, sc_hcc2 = 63, sc_regs = {
usbcmd = 0, dnctrl = 0, dcbaap = 0, config = 0, erstsz0 = 0, erstba0 = 0, erdp0 = 0, iman0 = 0, imod0 = 0}}
(gdb) print *((struct xhci_softc *)xhci_cd.cd_devs[1]->dv_private)->sc_cr
$10 = {xr_dma = {udma_block = 0xffff807b6ad3e040, udma_offs = 0}, xr_lock = {u = {mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', mtxs_ipl = {
_ipl = 0 '\000'}, mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, xr_trb = 0xffffaa049c277000, xr_cookies = 0xffff807b6acff000, xr_ntrb = 256,
xr_ep = 186, xr_cs = 0, is_halted = false}
(gdb) print *((struct xhci_softc *)xhci_cd.cd_devs[1]->dv_private)->sc_er
$11 = {xr_dma = {udma_block = 0xffff807b6ad3e1c0, udma_offs = 0}, xr_lock = {u = {mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', mtxs_ipl = {
_ipl = 0 '\000'}, mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, xr_trb = 0xffffaa049c278000, xr_cookies = 0xffff807b6ad00000, xr_ntrb = 256,
xr_ep = 10, xr_cs = 0, is_halted = false}
For completion, the USB setup of the machine is
> sudo drvctl -lt xhci0
usb0
uhub0
usb1
uhub1
uhidev0
uhid0
uhid1
uhub6
> sudo drvctl -lt xhci1
usb2
uhub2
usb3
uhub3
uhub7
uhub8
uhidev1
ums0
wsmouse0
uhidev2
ukbd0
wskbd0
uhidev3
ums1
wsmouse1
uhid2
uhid3
umass0
atapibus0
cd0
umass1
scsibus0
sd0
> sudo drvctl -lt xhci2
usb4
uhub4
usb5
uhub5
> sudo drvctl -lt xhci3
drvctl: DRVLISTDEV: Device not configured
>
>How-To-Repeat:
Unknown
>Fix:
Unknown
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index