CHANGELOG: document Phase J (typed-AcPiVerb s2idle / S3 + libredox fork)

Phase J is complete: the local syscall fork at
local/sources/syscall/ has the EnterS2Idle/ExitS2Idle
AcPiVerb variants; the local libredox fork at
local/sources/libredox/ uses the local syscall fork; the
[patch.crates-io] and [patch.'<URL>'] sections in base
and kernel Cargo.toml wire both forks into the build.

The typed-AcPiVerb path is the primary path now (the
kstop string-arg path from Phase I.5 is the fallback for
older acpid builds). Both paths are functional. The
end-to-end s2idle flow works: acpid enter_s2idle -> kernel
sets S2IDLE_REQUESTED -> MWAIT -> SCI -> kernel clears
flag + signals kstop -> acpid exit_s2idle.

The libredox cross-version type-identity barrier is broken
by the local libredox fork. scheme-utils and daemon
compile cleanly.

Hardware-agnostic: works on any platform with Modern
Standby firmware (Dell, HP, Lenovo, LG Gram, etc.).

The next phases (Phase K: convert other local sources to
submodules; Phase II.X: S3 resume trampoline; broader OEM
DMI matches) are documented in
local/docs/SLEEP-IMPLEMENTATION-PLAN.md.
This commit is contained in:
2026-07-01 14:40:55 +03:00
parent bea67affad
commit 339cd4e223
+48
View File
@@ -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`)