diff --git a/CHANGELOG.md b/CHANGELOG.md index c35eff7367..46c2c692ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -112,6 +112,54 @@ sync with the newest highlights. - See `local/docs/SLEEP-IMPLEMENTATION-PLAN.md` for the complete design +## 2026-07-01 — Phase J complete: typed-AcPiVerb s2idle / S3 wire + +- **Local syscall fork at `local/sources/syscall/`**: upstream + `redox_syscall 0.8.1` + Red Bear OS commit `cfa7f0c` adding + `AcpiVerb::EnterS2Idle` (= 3) and `AcpiVerb::ExitS2Idle` (= 4) + variants. The version field stays at upstream 0.8.1 per the + AGENTS.md "GOLDEN RULE" — periodic rebase via + `git fetch upstream && git rebase upstream/master` is the + workflow when upstream changes. +- **Local libredox fork at `local/sources/libredox/`**: upstream + `libredox 0.1.17` with the `redox_syscall` dep redirected + to `path = "../syscall"`. This makes + `libredox::error::Error` and `syscall::Error` the same + compile-time type — breaking the type-identity barrier that + previously caused E0277 errors in `scheme-utils` and `daemon`. +- **base `Cargo.toml`**: `[patch.crates-io] libredox = { path = "../libredox" }` + wires the local libredox fork. The existing + `[patch.crates-io] redox_syscall = { path = "../syscall" }` + is redundant (the base's workspace.dependencies already uses + the local path). +- **kernel `Cargo.toml`**: `[workspace] members = [".", "rmm"]` + (so cargo recognizes the kernel as a workspace and applies + the patches). `[patch."https://gitlab.redox-os.org/redox-os/syscall.git"] + redox_syscall = { path = "../syscall" }` (URL-based patch + because the kernel's dep is a git URL, not crates.io). + `[patch.crates-io] libredox = { path = "../libredox" }`. +- **Phase J inner kernel commit** (`6b98c64`): extends the + kernel's `AcpiScheme::kcall` to dispatch on the new + `AcpiVerb::EnterS2Idle` and `AcpiVerb::ExitS2Idle` variants. + The typed-AcPiVerb path runs alongside the kstop string-arg + path (Phase I.5); both are functional. +- **Phase J inner base commit** (`aadf55b`): adds the + `kstop_enter_s2idle()` helper method on `AcpiScheme` in + `scheme.rs` that wraps the typed-AcPiVerb kcall. The acpid + main loop can call this directly. +- **Patch file**: `local/patches/syscall/P1-acpiverb-enter-exit-s2idle.patch` + is the durable overlay patch backing the syscall fork + commit. The libredox fork is created directly from + upstream with the path override in `Cargo.toml.orig` + (the cookbook doesn't apply a patch for libredox since the + change is a single dependency override, not a file diff). +- **Hardware-agnostic**: the Phase J design is identical for + any platform with Modern Standby firmware (Dell, HP, Lenovo, + LG Gram, etc.). +- **Build verification**: `redbear-mini.iso` (512 MB) builds + successfully with all Phase J commits. The patch system + works end-to-end. + ## 2026-07-01 — cpufreqd oscillation fixed (kernel MSR scheme + VM detection) ### Kernel fix: `sys` scheme path-strip ENOENT bug (kernel fork commit `c231262`)