6446d440bf
The usb-kbd behind the QEMU usb-hub now enumerates fully: debounce -> port reset -> enable -> second debounce -> pre-attach -> attach -> ATTACH 5.2 -> slot 3 -> addressed -> descriptors read -> HID class match -> 'Loading subdriver "USB HID" for port 5.2' (class 3.1 proto 1, keyboard boot protocol). Root cause of the final stall: an unconditional SetPortFeature (PORT_INDICATOR) for every connected+enabled port NAK-hung on QEMU's indicator-less hub (no control-transfer timeout), blocking the flow before the post-enable debounce. Now gated on wHubCharacteristics.HUB_CHAR_PORTIND like Linux has_indicators. test-usb-hub-qemu.sh: check #5 now requires the hub-child subdriver line ('Loading subdriver "USB HID" for port <root>.<child>') so a root-port HID (tablet) can no longer satisfy it — closes a false- positive hole. Timeout raised to 360s for slow TT-path driver bring-up. Docs (plan P3-A runtime validation + matrix): full hub + hub-child chain recorded as QEMU-proven; remaining items (intermittent reactor startup race, slow TT-path Evaluate Context) noted.