danos/system
Daniel Samson 27f87cb5ba
usb: don't spin on a SuperSpeed hub's change bits; log hub port status
Real-hardware finding: a SuperSpeed hub (the user's Genesys, 4 SS
downstream ports) HUNG the bus driver at boot — it stopped logging with
no fault, and the hub's port power dropped. Cause: a SuperSpeed hub has
change bits a USB2 hub lacks (link-state, BH-reset), and the B4 servicing
— written and tested against QEMU's USB2 hub — never cleared them, so
the hub's status-change endpoint re-reported the same port forever and
the driver spun servicing it, never reaching the USB2 companion hub
where the full-speed keyboard actually lives.

hubPortStatusAck now clears the SuperSpeed-only change features too
(gated on hub speed; a USB2 hub is unaffected), and the tick services a
bounded batch of hub changes (32) before yielding — so even if a hub's
change bits misbehave, the driver cannot spin the machine. A per-port
status log line surfaces exactly what a hub reports, so the next real
boot shows the SS hub's port states and whether the USB2 companion
enumerates. QEMU usb-hub cases still green (the SS clears are gated off
for QEMU's USB2 hub).
2026-07-21 22:44:46 +01:00
..
devices display: pace the frame clock by the panel's EDID refresh rate 2026-07-21 11:37:29 +01:00
drivers usb: don't spin on a SuperSpeed hub's change bits; log hub port status 2026-07-21 22:44:46 +01:00
kernel usb/fat: transfer events matched by slot+endpoint; storage failures heal 2026-07-21 20:27:55 +01:00
services usb/fat: transfer events matched by slot+endpoint; storage failures heal 2026-07-21 20:27:55 +01:00
abi.zig usb/fat: transfer events matched by slot+endpoint; storage failures heal 2026-07-21 20:27:55 +01:00
boot-handoff.zig boot: the /system tree is the system image — loader-built ramdisk, spawn by path 2026-07-21 14:47:26 +01:00
initial-ramdisk.zig boot: survive hand-written sticks — case-fold the /system walk, skip host litter 2026-07-21 18:01:12 +01:00
parameters.zig USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00
vfs-protocol.zig vfs: the root moves into the kernel — resolve + redirect cutover 2026-07-21 16:27:06 +01:00