Skip to content

T8142: s2idle without PSCI (cpuidle WFI driver, PMP domain always-on) - #1527

Merged
DjDeveloperr merged 2 commits into
aurora-silicon:integration/aurorafrom
m0d16l14n1:j815/t8142-s2idle
Nov 12, 2026
Merged

DjDeveloperr merged 2 commits into
aurora-silicon:integration/aurorafrom
m0d16l14n1:j815/t8142-s2idle

Conversation

@m0d16l14n1

@m0d16l14n1 m0d16l14n1 commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

On T8142 without a PSCI node no cpuidle driver registers, so s2idle never reaches tick_freeze(); and the T8142 ps_pmp domain is not always-on, so genpd gates it at s2idle and the PMP crashes on its own MMIO (SError, "co-processor has crashed").

  • cpuidle: apple: register the WFI driver on T8142 when there is no /psci (as on T8140 and T6050); with PSCI, cpuidle-psci stays in charge.
  • dts: t8142-j813: mark ps_pmp apple,always-on, as T8132 and T8140 do.

Tested on J815 (booted with the J813 pmgr description, same die): lid-close s2idle cycles of 160–843 s, monotonic time stands still across suspend, wakes on lid open, no PMP crash; display, Wi-Fi and Bluetooth come back. The original report did not cover J813; the owner report below now adds that coverage.

Part of the J815 (MacBook Air 15-inch, M5, T8142) bring-up: board results are summarised in discussion #135. Tested on a J815 with a macOS 27.0 stub (firmware 27.0) through aura Stage 2.

Assisted-by: Claude Opus 5.5

Additional J813 owner report

gig3m's6828187208 reports this ceaab64 feature on2b05915f with #1530/#1532/#1538, J813/Mac17,3, firmware26.6.2 and Aura Stage2 1.0.0b10:

  • A67-minute battery/lid-close s2idle resumed on lid open. Energy counter54.40→53.33Wh corresponds to a reported average of about0.96W; no PMP crash/SError appeared in the retained kernel log.
  • Two keyboard-woken systemctl-suspend cycles lasted25s and12s; the kernel clock advanced1.4s across the25s cycle.
  • Display/Wi-Fi and the lock-screen session returned. The BLE mouse reconnected but did not wake the machine; it used the additional J813 N1 address nodes and enable_acl=1/arm_auxiliary_rings=1. Default Bluetooth pairing/wake is not qualified.

These are attributed combined-source s2idle results, not suspend-to-RAM or an isolated whole published-head boot. J813 sleeps longer than67minutes and J813 firmware27.x were not tested. Existing J815 evidence retains its stated firmware27.0 scope. No new hardware or loader action was performed by this review.

Source approval5861238513 remains valid. Exact-head DT run43002010098/job130634645358 passed CHECK_DTBS/bindings/ADT. The one evidence-based targeted Host recovery now passed as job131300083186 on run43002010214, including tool installation and the actual host tests. The earlier package-DNS failures and skipped tests are superseded. No source edit, full/DT rerun or retry loop was used. The merge preview preserves the same two-file net change; later main changes do not overlap those two files.

On T8142 (M5) no cpuidle driver is registered unless the boot chain
provides PSCI (t8142-j813-psci-idle.dtsi). Without PSCI, the CPUs use
the default idle loop. The s2idle path then never reaches
tick_freeze(), so timekeeping keeps running through suspend.

Register cpuidle-apple's WFI driver on T8142 when there is no /psci
node, as on T8140 and T6050. With PSCI, cpuidle-psci stays in charge.

Tested on J815 (MacBook Air 15-inch, M5): s2idle for 160-843 s per
cycle, monotonic time stood still across suspend, and the system woke
on lid open.

Assisted-by: Claude Opus 5.5
Signed-off-by: Nick <nekreshen@yandex.ru>
The PMP firmware keeps running while the system is up. The T8142
ps_pmp domain is not marked always-on, so genpd gates it at s2idle.
The PMP coprocessor then takes an SError on its own MMIO and crashes:

  apple_pmp: RTKit: co-processor has crashed
  SError ... ESR 0xbe000000 FAR 0x380500654

T8132 and T8140 mark ps_pmp apple,always-on. Do the same on T8142.

Tested on J815 (MacBook Air 15-inch, M5) booted with the J813 pmgr
description (same T8142 die): s2idle no longer crashes the PMP.

Assisted-by: Claude Opus 5.5
Signed-off-by: Nick <nekreshen@yandex.ru>

@DjDeveloperr DjDeveloperr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codex (GPT-6.1 Sol), reviewing on @DjDeveloperr’s behalf.

No blocking source findings in the reviewed net change. T8142 WFI-only s2idle fallback is conditional on unavailable PSCI and leaves existing PSCI use intact; retaining PMP avoids a supplier gate during idle. Posted J815 s2idle results support this bounded path. This is not suspend-to-RAM/deep-sleep qualification.

Hosted contributor workflow approvals were unblocked; source approval does not waive any pending CI/native build or dependency gate. Hardware reports are attributed to their authors, not new tests by this thread. No images/default-loader/hardware changes were performed.

@gig3m

gig3m commented Nov 12, 2026

Copy link
Copy Markdown

Tested on a J813 (MacBook Air 13-inch M5, Mac17,3), which the description says was not covered. This PR at ceaab64 carried on 2b05915 together with #1530, #1532 and #1538, 26.6.2 firmware, Stage 2 aura 1.0.0b10.

  • Lid-close s2idle on battery, 67 minutes: resumed when the lid was opened. The battery's energy counter went from 54.40 to 53.33 Wh, about 0.96 W on average. No PMP crash or SError in the kernel log.
  • Two systemctl suspend cycles (25 s and 12 s), woken by the built-in keyboard. The kernel clock advanced 1.4 s over the 25 s.
  • After resume the display and Wi-Fi (N1) came back, and the session resumed at its lock screen.
  • A Bluetooth LE mouse also reconnected after resume, but does not wake it. Bluetooth here needs two things beyond the merged tree: btcentauri loaded with enable_acl=1 arm_auxiliary_rings=1, and the N1 nodes that arm64: dts: apple: MacBook Air 15-inch M5 (J815) device tree #1532 adds for J815 copied to the J813 tree (details in my comment there).

Not tested: sleeps longer than 67 minutes, the 27.x firmware.

Disclosure: the testing and the first draft of this text were done with an LLM coding assistant (Claude Code). I ran the hardware side and have read what is posted here.

@DjDeveloperr DjDeveloperr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accepted @gig3m's6828187208 as additional J813/firmware26.6.2 s2idle evidence at its stated2b05915f +1527/1530/1532/1538/local-DT composition scope. The67-minute lid-open wake and two25s/12s keyboard wakes, no reported PMP crash/SError, display/Wi-Fi/session return support the shared T8142 fallback/PMP retention behavior. The reported battery counter implies about0.96W for that one interval; this is not suspend-to-RAM or all-duration/firmware qualification. BLE reconnect required the reported opt-in flags/N1 nodes, did not provide wake and does not establish default Bluetooth support. No new hardware work requested.

The current-head DT job130634645358 actually passed CHECK_DTBS/binding and ADT steps. Source approval5861238513 remains valid. Host's last attempt failed in Pin the host toolchains before tests. I compared its workflow to current main byte-for-byte; recent passing Host131186546593 successfully fetched/installed the same libfdt1/device-tree-compiler dependencies from Ubuntu security/archive endpoints. Based on that concrete environment recovery evidence, one targeted Host-job recovery was accepted, without source changes or a DT/full-run replay. Await its actual test result; no merge on skipped/pending tests and no further unchanged retry loop.

@DjDeveloperr DjDeveloperr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The remaining gate is satisfied: recovered Host43002010214/job131300083186 passed tool setup and the actual host tests on exactheadceaab64d. DT43002010098/job130634645358 passed its CHECK_DTBS/bindings and ADT steps. The previous pre-test package/DNS failures are superseded, not treated as code failures; the single evidence-based recovery required no source or DT replay.

Source approval5861238513 remains valid. The merge preview retains the original two-file T8142-only WFI fallback/PMP-domain change. Main advanced from that preview's44ff52a2 to26a5a6a1 without changes to either file, so no extra rebase/build is needed.

The original J815 result and the accepted J813 owner report6828187208 support the bounded s2idle behavior at their stated composed-kernel/firmware scopes. J813's67min/25s/12s rows do not qualify suspend-to-RAM, longer sleeps or J81327.x. Bluetooth reconnect used opt-in flags/N1 address nodes and did not wake the machine; no default-Bluetooth or general deep-sleep claim. Proceeding with the expected-head normal source merge; no new hardware/loader/default/image action.

@DjDeveloperr
DjDeveloperr merged commit 3a7a3f9 into aurora-silicon:integration/aurora Nov 12, 2026
2 of 5 checks passed
DjDeveloperr added a commit to m0d16l14n1/linux that referenced this pull request Nov 12, 2026
Inherit the updated parent/main with aurora-silicon#1527's always-on PMP in the shared
PMGR description. Apply the original J815 sound graph without changing
its codec slots, resources or protection configuration. The child audio
net patch is exact; both old histories are retained.

Keep the J813 owner-check evidence at its stated composition scope and
retain the loader-alias qualification/adoption and J815 physical gates.
No new audio build, playback, loader installation or hardware test.

Assisted-by: LLM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants