vasilito
6446d440bf
usb: hub-child enumeration proven end-to-end in QEMU + tighten hub test
...
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.
2026-07-19 19:55:27 +09:00
..
2026-06-19 11:47:25 +03:00
2026-07-18 14:45:41 +09:00
2026-06-19 11:47:25 +03:00
2026-07-12 23:49:04 +03:00
2026-07-05 22:50:33 +03:00
2026-05-02 01:41:17 +01:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-07-15 00:40:23 +09:00
2026-07-12 18:13:31 +03:00
2026-04-16 12:45:24 +01:00
2026-07-18 17:44:16 +09:00
2026-05-02 22:09:36 +01:00
2026-07-18 14:45:41 +09:00
2026-07-18 14:45:41 +09:00
2026-07-18 14:45:41 +09:00
2026-04-28 15:10:59 +01:00
2026-07-01 15:01:26 +03:00
2026-07-18 14:45:41 +09:00
2026-07-12 17:44:21 +03:00
2026-07-13 17:38:38 +03:00
2026-07-13 19:25:14 +03:00
2026-05-04 19:21:02 +01:00
2026-06-28 00:01:47 +03:00
2026-06-19 11:47:25 +03:00
2026-05-02 22:09:36 +01:00
2026-06-21 15:15:57 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-07-12 12:20:29 +03:00
2026-06-28 00:01:47 +03:00
2026-07-05 22:50:33 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-05-03 23:03:24 +01:00
2026-04-16 12:45:24 +01:00
2026-04-18 17:59:15 +01:00
2026-04-18 01:09:13 +01:00
2026-06-19 11:47:25 +03:00
2026-04-18 17:59:15 +01:00
2026-04-16 12:45:24 +01:00
2026-05-03 23:03:24 +01:00
2026-06-19 11:47:25 +03:00
2026-04-18 00:57:57 +01:00
2026-04-17 23:46:20 +01:00
2026-07-12 18:59:19 +03:00
2026-07-18 14:45:41 +09:00
2026-04-18 01:09:29 +01:00
2026-07-15 00:40:23 +09:00
2026-06-29 19:34:35 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-04-16 12:45:24 +01:00
2026-07-12 11:52:28 +03:00
2026-07-18 14:45:41 +09:00
2026-07-12 11:02:27 +03:00
2026-04-16 12:45:24 +01:00
2026-05-02 01:41:17 +01:00
2026-07-12 02:38:12 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-07-01 22:02:26 +03:00
2026-07-18 14:45:41 +09:00
2026-06-28 00:01:47 +03:00
2026-06-19 11:47:25 +03:00
2026-04-28 08:07:14 +01:00
2026-05-03 23:03:24 +01:00
2026-04-16 12:45:24 +01:00
2026-06-19 11:47:25 +03:00
2026-04-28 08:07:14 +01:00
2026-04-16 12:45:24 +01:00
2026-04-28 12:54:31 +01:00
2026-07-11 23:18:41 +03:00
2026-07-19 09:33:07 +09:00
2026-04-18 17:59:15 +01:00
2026-04-18 17:59:15 +01:00
2026-04-26 22:51:09 +01:00
2026-04-16 12:45:24 +01:00
2026-04-16 12:45:24 +01:00
2026-07-13 17:38:38 +03:00
2026-04-29 12:08:09 +01:00
2026-04-19 17:59:58 +01:00
2026-04-18 17:59:15 +01:00
2026-05-01 03:15:20 +01:00
2026-05-08 11:01:02 +01:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-04-29 13:45:39 +01:00
2026-04-16 12:45:24 +01:00
2026-05-01 01:37:27 +01:00
2026-04-26 22:51:09 +01:00
2026-04-22 21:31:19 +01:00
2026-04-20 18:37:35 +01:00
2026-07-18 23:15:00 +09:00
2026-05-04 11:57:48 +01:00
2026-04-20 18:37:35 +01:00
2026-04-29 09:54:06 +01:00
2026-04-29 09:54:06 +01:00
2026-06-19 11:47:25 +03:00
2026-04-29 09:54:06 +01:00
2026-04-29 09:54:06 +01:00
2026-07-09 14:43:10 +03:00
2026-04-18 17:59:15 +01:00
2026-04-29 11:05:22 +01:00
2026-04-29 09:54:06 +01:00
2026-04-18 00:48:58 +01:00
2026-04-20 18:37:35 +01:00
2026-04-29 12:21:17 +01:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-05-04 11:57:48 +01:00
2026-06-19 11:47:25 +03:00
2026-07-19 19:55:27 +09:00
2026-06-19 11:47:25 +03:00
2026-06-19 11:47:25 +03:00
2026-04-29 12:11:13 +01:00
2026-07-18 23:15:00 +09:00
2026-06-19 11:47:25 +03:00
2026-04-14 12:14:50 +01:00
2026-04-16 12:45:24 +01:00
2026-04-16 12:45:24 +01:00
2026-04-16 12:45:24 +01:00
2026-04-29 12:08:09 +01:00
2026-06-19 11:47:25 +03:00
2026-07-18 23:15:00 +09:00
2026-07-18 14:48:53 +09:00
2026-07-12 10:13:12 +03:00
2026-07-19 05:38:30 +09:00
2026-05-03 23:03:24 +01:00
2026-04-23 20:27:13 +01:00
2026-07-09 19:08:34 +03:00
2026-05-02 01:41:17 +01:00
2026-06-19 11:47:25 +03:00
2026-04-16 12:45:24 +01:00
2026-07-12 00:19:30 +03:00
2026-07-12 12:11:23 +03:00
2026-07-10 22:10:33 +03:00
2026-07-12 16:47:57 +03:00
2026-07-12 13:53:57 +03:00
2026-07-12 23:49:04 +03:00
2026-07-12 11:02:27 +03:00
2026-07-12 01:31:03 +03:00
2026-05-02 01:41:17 +01:00
2026-05-02 01:41:17 +01:00
2026-05-03 23:03:24 +01:00