USB keyboard dies after Supermicro BMC reset; xhci(4) endpoint halted
Atanas Vladimirov <[email protected]>
| Newsgroups | gmane.os.openbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
>Synopsis: USB keyboard dies after Supermicro BMC reset; xhci(4) endpoint halted >Category: kernel >Environment: System : OpenBSD 8.0 Details : OpenBSD 8.0-beta (GENERIC.MP) #108: Sat Aug 22 22:10:43 MDT 2026 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP Architecture: OpenBSD.amd64 Machine : amd64 >Description: On a Supermicro X11SSL-F the USB keyboard and mouse emulated by the on-board ASPEED AST2400 BMC stop responding after the BMC is reset, and stay dead until the host is rebooted. wskbd(4) and wsmouse(4) receive no further events. A GENERIC kernel prints nothing at all when this happens. The same behaviour is present on every release tried, 7.4 through -current, and on a Supermicro X10SLL-F as well. A physical USB keyboard on the same xhci0 keeps working; only the BMC-emulated HID is affected. The controller is: xhci0 at pci0 dev 20 function 0 "Intel 100 Series xHCI" rev 0x31: msi, xHCI 1.0 and the emulated HID normally attaches behind the BMC's own hub: uhub1 at uhub0 port 9 "ATEN International product 0x7000" uhidev2 at uhub1 port 1 "ATEN International product 0x2419" ukbd1 at uhidev2, wskbd2 at ukbd1 uhidev3 at uhub1 port 1, ums1 at uhidev3 With a kernel built with "option XHCI_DEBUG" the only diagnostic is the HID's interrupt IN endpoint completing with a USB Transaction Error: xhci0: txerr? code 4 Per xHCI r1.1 section 4.10.2.6 a USB Transaction Error completion leaves the endpoint in the Halted state. The endpoint context stays Halted in hardware until a Reset Endpoint command is issued: further doorbell rings are ignored and no transfer event is ever posted again. xhci_event_xfer_generic() in sys/dev/usb/xhci.c never issues that command. At $OpenBSD: xhci.c,v 1.136 2025/03/01 14:43:03 kirill Exp $: case XHCI_CODE_TXERR: case XHCI_CODE_SPLITERR: DPRINTF(("%s: txerr? code %d\n", DEVNAME(sc), code)); xfer->status = USBD_IOERROR; break; After the switch the function only does "return (0)", so the caller xhci_event_xfer() goes on to call xhci_xfer_done(xfer) and usb_transfer_complete(). The transfer is completed with USBD_IOERROR, but no Reset Endpoint command is sent and xp->halted is never set. From that point the pipe is dead: the stack keeps queueing transfers onto an endpoint the controller will not run, and each one is dropped with no indication. One further observation, which is why resetting the endpoint alone is not sufficient on this hardware: after the BMC reset the device does not come back in the same topology. Instead of the low-speed HID behind the ATEN hub it attaches directly to uhub0 at high speed, and that transient device's interrupt IN endpoint keeps failing for several seconds. With a change that only resets the endpoint, the softintr path never converges: xhci0: txerr? code 4 xhci0: xhci_cmd_reset_ep_async dev 4 dci 3 xhci0: xhci_cmd_set_tr_deq_async dev 4 dci 3 ... forever ... Only tearing the port down and re-enumerating it recovers the device. >How-To-Repeat: 1. Boot an amd64 GENERIC.MP snapshot on a Supermicro X11SSL-F (or X10SLL-F) with the BMC iKVM keyboard and mouse enabled. (I beleive that other Supermicro models are affected as well) 2. Confirm the emulated HID attached, and that ukbd(4)/wskbd(4) and ums(4)/wsmouse(4) claimed it: # usbdevs -v 3. Type on the iKVM keyboard at the console. Keystrokes arrive. 4. Reset the BMC - use the Reset button in the BMC web interface. 5. Wait for the BMC to come back and for the HID to re-attach. 6. Type on the iKVM keyboard again. No keystrokes arrive, the emulated mouse is dead as well, and nothing is printed on the console. 7. Reboot the host. The keyboard works again. A BMC-emulated device cannot be unplugged, so this is the only recovery. 8. To see the completion code, rebuild the kernel with "option XHCI_DEBUG" and repeat steps 3 to 6. The endpoint reports "xhci0: txerr? code 4" and no transfer on that pipe ever completes afterwards. >Fix: The diff below counts consecutive USB Transaction Errors per pipe and lets the TXERR/SPLITERR case fall through into the existing STALL/BABBLE recovery, so the halted endpoint is always reset. Past XHCI_TXERR_RETRIES it additionally calls usb_needs_reattach(), so the hub explore task re-enumerates the device instead of the pipe retrying forever. Because code != XHCI_CODE_STALL on the fallthrough it lands on xp->halted = USBD_IOERROR, and it inherits the timeout_del(), usb_rem_task(), xp->aborted_xfer assignment and the completion chain unchanged. Index: sys/dev/usb/xhci.c =================================================================== --- sys/dev/usb/xhci.c +++ sys/dev/usb/xhci.c @@ -70,6 +70,7 @@ struct xhci_pipe { struct usbd_xfer *pending_xfers[XHCI_MAX_XFER]; struct usbd_xfer *aborted_xfer; int halted; + u_int txerr_count; size_t free_trbs; int skip; #define TRB_PROCESSED_NO 0 @@ -78,6 +79,8 @@ struct xhci_pipe { uint8_t trb_processed[XHCI_MAX_XFER]; }; +#define XHCI_TXERR_RETRIES 3 + int xhci_reset(struct xhci_softc *); void xhci_suspend(struct xhci_softc *); int xhci_intr1(struct xhci_softc *); @@ -953,6 +956,7 @@ xhci_event_xfer_generic(struct xhci_softc *sc, struct usbd_xfer *xfer, usbd_xfer_isread(xfer) ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE); xfer->status = USBD_NORMAL_COMPLETION; + xp->txerr_count = 0; break; case XHCI_CODE_SHORT_XFER: /* @@ -977,12 +981,22 @@ xhci_event_xfer_generic(struct xhci_softc *sc, struct usbd_xfer *xfer, usbd_xfer_isread(xfer) ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE); xfer->status = USBD_NORMAL_COMPLETION; + xp->txerr_count = 0; break; case XHCI_CODE_TXERR: case XHCI_CODE_SPLITERR: DPRINTF(("%s: txerr? code %d\n", DEVNAME(sc), code)); - xfer->status = USBD_IOERROR; - break; + /* + * A USB Transaction Error leaves the endpoint Halted + * (xHCI r1.1 4.10.2.6), so reset it like a STALL to + * let the stack restart the pipe on a clean endpoint. + * If the endpoint keeps failing, additionally ask the + * hub to re-enumerate the device instead of retrying + * forever. + */ + if (++xp->txerr_count > XHCI_TXERR_RETRIES) + usb_needs_reattach(xfer->device); + /* FALLTHROUGH */ case XHCI_CODE_STALL: case XHCI_CODE_BABBLE: DPRINTF(("%s: babble code %d\n", DEVNAME(sc), code)); @@ -1623,6 +1637,7 @@ xhci_pipe_init(struct xhci_softc *sc, struct usbd_pipe *pipe) xp->free_trbs = xp->ring.ntrb; xp->halted = 0; + xp->txerr_count = 0; sdev->pipes[xp->dci - 1] = xp; dmesg: OpenBSD 8.0-beta (GENERIC.MP) #108: Sat Aug 22 22:10:43 MDT 2026 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 34154913792 (32572MB) avail mem = 33093718016 (31560MB) random: good seed from bootblocks mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 3.0 @ 0x7fb76000 (62 entries) bios0: vendor American Megatrends Inc. version "3.6" date 04/25/2025 bios0: Supermicro Super Server efi0 at bios0: UEFI 2.4 efi0: American Megatrends rev 0x5000b acpi0 at bios0: ACPI 5.0 acpi0: sleep states S0 S4 S5 acpi0: tables DSDT FACP APIC FPDT FIDT SPMI SLIC MCFG HPET LPIT SSDT SSDT SSDT DBGP DBG2 SSDT SSDT UEFI SSDT DMAR BGRT acpi0: wakeup devices PEG0(S4) PEGP(S4) PEG1(S4) PEGP(S4) PEG2(S4) PEGP(S4) RP09(S4) PXSX(S4) RP10(S4) PXSX(S4) RP11(S4) PXSX(S4) RP12(S4) PXSX(S4) RP13(S4) PXSX(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz, 3000.01 MHz, 06-9e-09, patch 000000fa cpu0: cpuid 1 edx=bfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> ecx=77fafbff<SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND> cpu0: cpuid 6 eax=27f7<SENSOR,ARAT,PTS> ecx=9<EFFFREQ> cpu0: cpuid 7.0 ebx=29c6fbf<FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT> edx=bc002e00<SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD> cpu0: cpuid a vers=4, gp=8, gpwidth=48, ff=3, ffwidth=48 cpu0: cpuid d.1 eax=f<XSAVEOPT,XSAVEC,XGETBV1,XSAVES> cpu0: cpuid 80000001 edx=2c100800<NXE,PAGE1GB,RDTSCP,LONG> ecx=121<LAHF,ABM,3DNOWP> cpu0: cpuid 80000007 edx=100<ITSC> cpu0: msr 10a=a000c04<RSBA,MISC_PKG_CT,ENERGY_FILT,GDS_CTRL,RFDS_NO> cpu0: MELTDOWN cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 4-way L2 cache, 8MB 64b/line 16-way L3 cache cpu0: smt 0, core 0, package 0, type P mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 24MHz cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz, 3000.00 MHz, 06-9e-09, patch 000000fa cpu1: smt 0, core 1, package 0, type P cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz, 3000.00 MHz, 06-9e-09, patch 000000fa cpu2: smt 0, core 2, package 0, type P cpu3 at mainbus0: apid 6 (application processor) cpu3: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz, 3000.00 MHz, 06-9e-09, patch 000000fa cpu3: smt 0, core 3, package 0, type P ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins acpimcfg0 at acpi0 acpimcfg0: addr 0xe0000000, bus 0-255 acpihpet0 at acpi0: 23999999 Hz acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 1 (PEG0) acpiprt2 at acpi0: bus 2 (PEG1) acpiprt3 at acpi0: bus -1 (PEG2) acpiprt4 at acpi0: bus 6 (RP09) acpiprt5 at acpi0: bus 7 (RP10) acpiprt6 at acpi0: bus 8 (RP11) acpiprt7 at acpi0: bus 9 (BR51) acpiprt8 at acpi0: bus -1 (RP12) acpiprt9 at acpi0: bus -1 (RP13) acpiprt10 at acpi0: bus -1 (RP01) acpiprt11 at acpi0: bus -1 (RP05) acpiprt12 at acpi0: bus -1 (RP17) acpiprt13 at acpi0: bus -1 (RP18) acpiprt14 at acpi0: bus -1 (RP19) acpiprt15 at acpi0: bus -1 (RP20) acpiprt16 at acpi0: bus -1 (RP14) acpiprt17 at acpi0: bus -1 (RP15) acpiprt18 at acpi0: bus -1 (RP16) acpiec0 at acpi0: not present acpipci0 at acpi0 PCI0: 0x00000000 0x00000011 0x00000001 com0 at acpi0 UAR1 addr 0x3f8/0x8 irq 4: ns16550a, 16 byte fifo com1 at acpi0 UAR2 addr 0x2f8/0x8 irq 3: ns16550a, 16 byte fifo com1: console acpicmos0 at acpi0 "IPI0001" at acpi0 not configured "INT0E0C" at acpi0 not configured acpibtn0 at acpi0: SLPB intelpmc0 at acpi0: PEPD state 0: 0x7f:1:2:0x00:0x0000000000000060 counter: 0x7f:64:0:0x00:0x0000000000000632 frequency: 0 state 1: 0x7f:1:2:0x00:0x0000000000000060 counter: 0x7f:64:0:0x00:0x0000000000000632 frequency: 0 acpibtn1 at acpi0: PWRB "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured acpicpu0 at acpi0: C3(200@256 mwait.1@0x40), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu1 at acpi0: C3(200@256 mwait.1@0x40), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu2 at acpi0: C3(200@256 mwait.1@0x40), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu3 at acpi0: C3(200@256 mwait.1@0x40), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpipwrres0 at acpi0: PG00, resource for PEG0 acpipwrres1 at acpi0: PG01, resource for PEG1 acpipwrres2 at acpi0: PG02, resource for PEG2 acpipwrres3 at acpi0: WRST acpipwrres4 at acpi0: WRST acpipwrres5 at acpi0: WRST acpipwrres6 at acpi0: WRST acpipwrres7 at acpi0: WRST acpipwrres8 at acpi0: WRST acpipwrres9 at acpi0: WRST acpipwrres10 at acpi0: WRST acpipwrres11 at acpi0: WRST acpipwrres12 at acpi0: WRST acpipwrres13 at acpi0: WRST acpipwrres14 at acpi0: WRST acpipwrres15 at acpi0: WRST acpipwrres16 at acpi0: WRST acpipwrres17 at acpi0: WRST acpipwrres18 at acpi0: WRST acpipwrres19 at acpi0: WRST acpipwrres20 at acpi0: WRST acpipwrres21 at acpi0: WRST acpipwrres22 at acpi0: WRST acpipwrres23 at acpi0: FN00, resource for FAN0 acpipwrres24 at acpi0: FN01, resource for FAN1 acpipwrres25 at acpi0: FN02, resource for FAN2 acpipwrres26 at acpi0: FN03, resource for FAN3 acpipwrres27 at acpi0: FN04, resource for FAN4 acpitz0 at acpi0 acpitz0: critical temperature is 119 degC acpitz1 at acpi0 acpitz1: critical temperature is 119 degC acpivideo0 at acpi0: GFX0 acpivout0 at acpivideo0: DD1F ipmi at mainbus0 not configured cpu0: using VERW MDS workaround (except on vmm entry) cpu0: Enhanced SpeedStep 3000 MHz: speeds: 3001, 3000, 2800, 2700, 2500, 2400, 2200, 2100, 1900, 1700, 1600, 1400, 1300, 1100, 1000, 800 MHz pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel Xeon E3-1200 v6/7 Host" rev 0x05 ppb0 at pci0 dev 1 function 0 "Intel Core 6G PCIE" rev 0x05: msi pci1 at ppb0 bus 1 ix0 at pci1 dev 0 function 0 "Intel 82599" rev 0x01, msix, 4 queues, address 90:e2:ba:f3:2e:1c ix1 at pci1 dev 0 function 1 "Intel 82599" rev 0x01, msix, 4 queues, address 90:e2:ba:f3:2e:1d ppb1 at pci0 dev 1 function 1 "Intel Core 6G PCIE" rev 0x05: msi pci2 at ppb1 bus 2 ppb2 at pci2 dev 0 function 0 "IDT 89HPES12N3A" rev 0x0e pci3 at ppb2 bus 3 ppb3 at pci3 dev 2 function 0 "IDT 89HPES12N3A" rev 0x0e pci4 at ppb3 bus 4 em0 at pci4 dev 0 function 0 "Intel 82571EB" rev 0x06: apic 2 int 16, address 00:15:17:bc:a9:65 em1 at pci4 dev 0 function 1 "Intel 82571EB" rev 0x06: apic 2 int 19, address 00:15:17:bc:a9:64 ppb4 at pci3 dev 4 function 0 "IDT 89HPES12N3A" rev 0x0e pci5 at ppb4 bus 5 em2 at pci5 dev 0 function 0 "Intel 82571EB" rev 0x06: apic 2 int 18, address 00:15:17:bc:a9:67 em3 at pci5 dev 0 function 1 "Intel 82571EB" rev 0x06: apic 2 int 17, address 00:15:17:bc:a9:66 "Intel 100 Series ISH" rev 0x31 at pci0 dev 19 function 0 not configured xhci0 at pci0 dev 20 function 0 "Intel 100 Series xHCI" rev 0x31: msi, xHCI 1.0 usb0 at xhci0: USB revision 3.0 uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1 pchtemp0 at pci0 dev 20 function 2 "Intel 100 Series Thermal" rev 0x31 "Intel 100 Series MEI" rev 0x31 at pci0 dev 22 function 0 not configured ahci0 at pci0 dev 23 function 0 "Intel 100 Series AHCI" rev 0x31: msi, AHCI 1.3.1 ahci0: port 0: 6.0Gb/s ahci0: port 1: 6.0Gb/s scsibus1 at ahci0: 32 targets sd0 at scsibus1 targ 0 lun 0: <ATA, SAMSUNG MZ7L33T8, JXTC> naa.5002538f02212827 sd0: 3662830MB, 512 bytes/sector, 7501476528 sectors, thin sd1 at scsibus1 targ 1 lun 0: <ATA, SAMSUNG MZ7LM3T8, GXT5> naa.5002538c407c5ab3 sd1: 3662830MB, 512 bytes/sector, 7501476528 sectors, thin ppb5 at pci0 dev 29 function 0 "Intel 100 Series PCIE" rev 0xf1: msi pci6 at ppb5 bus 6 em4 at pci6 dev 0 function 0 "Intel I210" rev 0x03: msi, address ac:1f:6b:96:83:30 ppb6 at pci0 dev 29 function 1 "Intel 100 Series PCIE" rev 0xf1: msi pci7 at ppb6 bus 7 em5 at pci7 dev 0 function 0 "Intel I210" rev 0x03: msi, address ac:1f:6b:96:83:31 ppb7 at pci0 dev 29 function 2 "Intel 100 Series PCIE" rev 0xf1: msi pci8 at ppb7 bus 8 ppb8 at pci8 dev 0 function 0 "ASPEED Technology AST1150 PCI" rev 0x03 pci9 at ppb8 bus 9 "ASPEED Technology AST2000" rev 0x30 at pci9 dev 0 function 0 not configured pcib0 at pci0 dev 31 function 0 "Intel C232 LPC" rev 0x31 "Intel 100 Series PMC" rev 0x31 at pci0 dev 31 function 2 not configured ichiic0 at pci0 dev 31 function 4 "Intel 100 Series SMBus" rev 0x31: apic 2 int 16 iic0 at ichiic0 iic0: addr 0x19 00=00 01=00 02=04 03=00 04=06 05=02 06=1c 07=22 08=00 words 00=00ef 01=000d 02=04b0 03=0000 04=0610 05=0268 06=1c85 07=2221 iic0: addr 0x1b 00=00 01=00 02=04 03=00 04=06 05=02 06=1c 07=22 08=00 words 00=00ef 01=000d 02=04b0 03=0000 04=0610 05=0268 06=1c85 07=2221 spdmem0 at iic0 addr 0x51: 16GB DDR4 SDRAM ECC PC4-25600 with thermal sensor spdmem1 at iic0 addr 0x53: 16GB DDR4 SDRAM ECC PC4-25600 with thermal sensor isa0 at pcib0 isadma0 at isa0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT efifb0 at mainbus0: 1024x768, 32bpp wsdisplay0 at efifb0 mux 1 wsdisplay0: screen 0-5 added (std, vt100 emulation) enable mbufs in high memory uplcom0 at uhub0 port 6 configuration 1 interface 0 "Prolific Technology Inc. USB-Serial Controller" rev 1.10/3.00 addr 2 ucom0 at uplcom0: usb0.0.00006.0 uhidev0 at uhub0 port 8 configuration 1 interface 0 "Logitech USB Receiver" rev 2.00/29.00 addr 3 uhidev0: iclass 3/1 ukbd0 at uhidev0: 8 variable keys, 6 key codes wskbd0 at ukbd0 mux 1 wskbd0: connecting to wsdisplay0 uhidev1 at uhub0 port 8 configuration 1 interface 1 "Logitech USB Receiver" rev 2.00/29.00 addr 3 uhidev1: iclass 3/1, 17 report ids uhidpp0 at uhidev1 device 1 keyboard " ", device 2 mouse "" ums0 at uhidev1 reportid 2: 16 buttons, Z and W dir wsmouse0 at ums0 mux 0 ucc0 at uhidev1 reportid 3: 652 usages, 20 keys, array wskbd1 at ucc0 mux 1 wskbd1: connecting to wsdisplay0 uhid0 at uhidev1 reportid 4: input=1, output=0, feature=0 uhub1 at uhub0 port 9 configuration 1 interface 0 "ATEN International product 0x7000" rev 2.00/0.00 addr 4 uhidev2 at uhub1 port 1 configuration 1 interface 0 "ATEN International product 0x2419" rev 1.10/1.00 addr 5 uhidev2: iclass 3/1 ukbd1 at uhidev2: 8 variable keys, 6 key codes wskbd2 at ukbd1 mux 1 wskbd2: connecting to wsdisplay0 uhidev3 at uhub1 port 1 configuration 1 interface 1 "ATEN International product 0x2419" rev 1.10/1.00 addr 5 uhidev3: iclass 3/1 ums1 at uhidev3: 3 buttons, Z dir wsmouse1 at ums1 mux 0 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets sd2 at scsibus3 targ 1 lun 0: <OPENBSD, SR RAID 1, 006> sd2: 953869MB, 512 bytes/sector, 1953524576 sectors sd3 at scsibus3 targ 2 lun 0: <OPENBSD, SR RAID 1, 006> sd3: 953869MB, 512 bytes/sector, 1953524576 sectors sd4 at scsibus3 targ 3 lun 0: <OPENBSD, SR RAID 1, 006> sd4: 915714MB, 512 bytes/sector, 1875383423 sectors root on sd4a (22c9e9d08ea8ad79.a) swap on sd4b dump on sd4b usbdevs: Controller /dev/usb0: addr 01: 8086:0000 Intel, xHCI root hub super speed, self powered, config 1, rev 1.00 driver: uhub0 addr 02: 0557:2008 Prolific Technology Inc., USB-Serial Controller full speed, power 100 mA, config 1, rev 3.00 driver: uplcom0 addr 03: 046d:c534 Logitech, USB Receiver full speed, power 98 mA, config 1, rev 29.00 driver: uhidev0 driver: uhidev1 addr 04: 0557:7000 ATEN International, product 0x7000 high speed, self powered, config 1, rev 0.00 driver: uhub1 addr 05: 0557:2419 ATEN International, product 0x2419 low speed, power 160 mA, config 1, rev 1.00 driver: uhidev2 driver: uhidev3