usb: bump base fork — P7-A USB 2.0 HW LPM implemented in xhcid

base -> 2a3b0d4e: per-device USB 2.0 hardware LPM (L1) enablement at
attach in xhcid (full Linux xhci.c:4650 gate chain, BESL/HIRD params,
MEL Evaluate Context, PORTHLPMC/PORTPMSC sequence). Plan P7-A updated:
xhcid side done; ehcid USBCMD.HIRD and hardware L1 validation remain.
This commit is contained in:
2026-07-20 19:22:18 +09:00
parent 9245ad426a
commit a83be41585
2 changed files with 14 additions and 2 deletions
+13 -1
View File
@@ -659,6 +659,17 @@ A `redbear-usbtest` tool that exercises:
**Reference:** `linux-7.1/drivers/usb/host/xhci-port.h:135-173`, `xhci-hub.c`.
**Status (2026-07-20):** xhcid per-device enablement **implemented** (base fork
`2a3b0d4e`): full Linux xhci.c:4650 gate chain at attach
(`hw_lpm_support` && per-port HLC && device `USB_LPM_SUPPORT` in BOS &&
non-hub && root-hub-direct), BESL vs HIRD parameter selection
(`calculate_hird_besl`, Linux xhci.c:4594), MEL Evaluate Context
(`change_max_exit_latency`, Linux xhci.c:4520), and the PORTHLPMC/PORTPMSC
programming sequence. LPM enable failure logs and continues (device works
in U0). Compile-verified; 3 BOS accessor unit tests. **Runtime validation
requires LPM-capable hardware** — QEMU's xHCI does not advertise HLC, so
the L1-entry exit criterion remains hardware-validation debt (P8-A).
**Status (2026-07-18):** Substrate done in P2-B — HLC/BLC/L1C parsed from the
Supported Protocol capability (NOT `HCCPARAMS1`: an earlier plan version and
driver accessor were wrong; HLC lives in the protocol caps port_info DWORD per
@@ -670,8 +681,9 @@ defensive LPM clear runs on USB2 ports at attach when unsupported.
1. ~~Parse HLC~~ ✅ done (P2-B, protocol caps).
2. Implement `usb_set_device_initiated_lpm()` (port hardware LPM control via PORTSC.PORT_L1DEV).
3. xhcid: per-device `PORT_HLE` enablement at attach — gate chain per Linux xhci.c:4650: `!HW_LPM_DISABLE && hw_lpm_support && udev->lpm_capable && root-hub-direct && non-hub`, then BESL params + MEL Evaluate Context + `enable_lpm()`.
3. ~~xhcid: per-device `PORT_HLE` enablement at attach~~ ✅ done (2026-07-20, `2a3b0d4e`).
4. ehcid: implement via USBCMD.HIRD (Host Initiated Resume Duration).
5. Runtime L1-entry validation on LPM-capable hardware (P8-A hardware matrix).
**Exit:** USB 2.0 devices on HWA LPM-capable hubs enter L1 state when idle.