The AML interpreter runs in ring 3: the acpi service parses (M20.1)
The AML module becomes a build module compiled into both the kernel (for the \_S5 sleep state it still needs) and the new acpi service — one source, two builds, no fork. The kernel publishes a single acpi-tables node: the DSDT/SSDT blobs as memory resources, a broad io_port grant (the honest trust boundary — firmware AML names whatever ports it chose, known only after parsing), and the SCI for the M21 event track. The acpi service claims the node, maps each blob through the ordinary mmio grant (which preserves the sub-page offset onto the bytecode), and runs the same parser the kernel does. It self-verifies its namespace Device count against the kernel's — 34 = 34 — deterministically via an argv the acpi-parse test passes, so no racing the shared serial buffer. Parse-only touches no hardware; OperationRegion evaluation waits for _CRS/_STA in M20.2. The manager spawns 'discovery' (the neutral ramdisk name) at startup. Suite 56/56.
This commit is contained in:
@@ -106,13 +106,14 @@ branch is green; keep branches; push everything.
|
||||
skips size-0 BARs. discovery.md updated; suite 55/55 (driver-restart
|
||||
hammered 6×).
|
||||
- [x] **merge** `feat/pci-bus` → main, push (merged 2026-07-13).
|
||||
- [ ] **M20.1** — acpi service, parse only (fills the existing placeholder at
|
||||
system/services/acpi/acpi.zig): kernel publishes `acpi-tables`
|
||||
(decision 5) — memory over the table blobs, the broad io_port grant, and
|
||||
**the SCI as an irq resource** (from the FADT; unused until M21 but free
|
||||
to record now). The service claims it, maps the blobs, runs the shared
|
||||
AML module in ring 3, logs the namespace device count and `_HID`s.
|
||||
Scenario `acpi-parse`: user-space count equals the kernel walk's count.
|
||||
- [x] **M20.1** — acpi service, parse only: the AML interpreter is now a build
|
||||
module compiled into both kernel and service; the kernel publishes the
|
||||
`acpi-tables` node (AML blobs as memory resources, the broad io_port grant,
|
||||
the SCI); the service claims it, maps the blobs, runs the shared parser in
|
||||
ring 3, and self-verifies its Device count against the kernel's (34 = 34,
|
||||
deterministic via argv, no log-scraping); the manager spawns `discovery`
|
||||
at startup. Parse-only touches no hardware. Suite 56/56.
|
||||
|
||||
- [ ] **M20.2** — register + report: namespace devices with `_HID` + `_CRS`
|
||||
resources registered under `acpi-tables` (its io_port + the memory-map
|
||||
holes give containment), reported to the manager. Spawn-from-reports for
|
||||
|
||||
Reference in New Issue
Block a user