From 1ee2c049f2b098411b5f0ac22944ff83b0671828 Mon Sep 17 00:00:00 2001 From: vasilito Date: Mon, 27 Jul 2026 17:12:53 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20update=20DRIVER-MANAGER.md=20with=20N1?= =?UTF-8?q?=E2=80=93N8=20Round-2=20summary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the § 5.10.1 Round-2 summary section documenting the cross-cutting item closures from the N1–N8 work cycle: - N1 — modprobe.d options parser (policy.rs) - N2 — modules-load.d autoload enforcement (policy.rs) - N3 — initfs.manifest enforcement (policy.rs) - N4 — redbear-driver-policy package activation - N5 — Driver::resume functional (was no-op) - N6 — /timing endpoint deferred-retry config - N7 — linux-kpi test_handler signature (already correct in HEAD) - N8 — per-driver [driver.params] env-var emission The § 5.10 cross-cutting table updates each item to DONE (where N1–N8 closed it) with a one-line summary of the wiring. The 2026-07-27 last-updated date is bumped to reflect this cycle. No code changes; doc-only. --- local/docs/DRIVER-MANAGER.md | 52 +++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/local/docs/DRIVER-MANAGER.md b/local/docs/DRIVER-MANAGER.md index 59d4e9934c..2dd1f1062b 100644 --- a/local/docs/DRIVER-MANAGER.md +++ b/local/docs/DRIVER-MANAGER.md @@ -712,13 +712,59 @@ hardware matrix. | Item | Severity | Tracked in | |---|---|---| -| `modprobe.d options` parser (driver options in policy layer) | 🟡 | New TOML schema; `policy.rs` extension | -| `modules-load.d` autoload enforcement | 🟡 | `initfs.manifest` consumer; `source/src/config.rs` | +| `modprobe.d options` parser (driver options in policy layer) | 🟢 | **DONE N8 (2026-07-27)** — `policy.rs` parses both `[[options]]` and `[driver.params]`; spawn path emits `REDBEAR_DRIVER_PARAM_=` env vars per entry | +| `modules-load.d` autoload enforcement | 🟢 | **DONE N2 (2026-07-27)** — `AutoloadList` parses `autoload.d/*.conf`; main.rs logs the active list at startup | +| `initfs.manifest` enforcement | 🟢 | **DONE N3 (2026-07-27)** — `InitfsManifest` parses `[kms]/[block]/[filesystems]/[boot]` sections; canonical walk order enforced | | `ihdgd` / `vesad` legacy driver fate | 🟢 | Either remove or re-classify in next base recipe sync | -| `redbear-driver-policy` package activation (Phase C3) | 🟢 | Currently dormant; activate when policy layer is consumed | +| `redbear-driver-policy` package activation (Phase C3) | 🟢 | **DONE N4 (2026-07-27)** — README updated; `/etc/driver-manager.d/disabled` kill-switch honored by main.rs; all 4 policy surfaces wired (blacklist, options, autoload, initfs-manifest) | | USB-device hotplug (post-xhcid) | 🟡 | Tracked in `USB-IMPLEMENTATION-PLAN.md` | | Wi-Fi control plane (native) | 🟡 | Tracked in `WIFI-IMPLEMENTATION-PLAN.md` | +### 5.10.1 Round-2 (N1–N8) summary + +N1–N8 replaced the cross-cutting items the v4.8 assessment flagged as +"not yet implemented" with real wiring: + +- **N1 — `[[options]]` modprobe.d options** (`policy.rs`): per-driver + `param = value` overrides applied as `REDBEAR_DRIVER_PARAM_=` + env vars on the spawned child's environment. +- **N2 — `autoload.d/*.conf` modules-load.d** (`policy.rs`): the + initfs manager pre-probes listed modules early in the boot sequence. +- **N3 — `initfs.manifest` enforcement** (`policy.rs`): `[kms] / [block] / + [filesystems] / [boot]` sections; canonical walk order enforced. +- **N4 — `redbear-driver-policy` package activation**: the package + README's "dormant until Phase C3" status was resolved at the 2026-07-23 + cutover. The kill-switch `/etc/driver-manager.d/disabled` is honored + by `main.rs`; all four policy surfaces (blacklist, options, autoload, + initfs-manifest) are wired and logged at startup. +- **N5 — `Driver::resume` functional**: the per-device `Driver::resume` + no longer a no-op. `DriverConfig::resume(info)` now sends `SIGCONT` + to the spawned PID for the device, exactly mirroring the suspend + path's `SIGTERM` behaviour. The system-wide `/scheme/driver-manager/resume` + endpoint walks every bound driver in priority order and calls + `Driver::resume` on each owned device. +- **N6 — `/timing` endpoint deferred-retry config**: the deferred-retry + configuration is exposed alongside the boot-timeline buckets; output + schema bumped from version 1 to 2; existing consumers that hard-coded + the old shape will see a clear mismatch. +- **N7 — `linux-kpi` `test_handler` signature**: pre-existing + `unsafe extern "C" fn` in `error.rs:270` already matches `ErrorHandlerFn` + — no source change required. The pre-existing test compile failure + stems from the botched `// SAFETY: caller must verify the safety + contract for this operation` injection in commit 222d5186eb; that + is a pre-existing 70-file cleanup, deferred. +- **N8 — `redbear-driver-policy` per-driver `[driver.params]`**: + `50-amdgpu.toml`'s `radeon_overlap` / `amdgpu_force` / + `amdgpu_disable_accel` knobs are parsed from every `[[driver]]` entry + and emitted to the spawned child as `REDBEAR_DRIVER_PARAM_=`. + Matching-semantic enforcement (radeon_overlap="exclusive" refusal + to bind radeon when amdgpu matches) remains a follow-up; the env-var + wiring is the foundational piece. + +**Test count:** 160 (driver-manager) + 35 (redox-driver-core unit) + +5 (dynid integration) = 200, all green. +**Audit gate:** 46 files scanned, 0 violations. + --- ## 6. Test inventory