Skip to content

arm64: dts: apple: t6050: keep the PMP's power domains on (PMP crash after s2idle) - #1789

Open
sithglan wants to merge 1 commit into
aurora-silicon:integration/aurorafrom
sithglan:thomas/t6050-pmp-always-on
Open

sithglan wants to merge 1 commit into
aurora-silicon:integration/aurorafrom
sithglan:thomas/t6050-pmp-always-on

Conversation

@sithglan

@sithglan sithglan commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Base: integration/aurora (673f618). Branch thomas/t6050-pmp-always-on, one commit.

arm64: dts: apple: t6050: keep the PMP's power domains on.

  • What went wrong: the PMP firmware runs from the moment its driver starts it, and s2idle leaves it running. But pms, pmp and pms-sram were ordinary genpd domains, so at the noirq phase of every s2idle genpd gated pmp and pms-sram under the running firmware. It then tried their parent pms, which the PMGR refuses:

    PS pms: Failed to reach power state 0x0 (requested 0xf0000f0, now: 0x1f0002ff)
    

    At the wake the firmware usually takes a translation fault and stays down until reboot. On the K116s, that happened in 3 of the 4 suspends that reached the noirq phase with a live PMP.

  • The change: all three domains are marked apple,always-on, as the ADT's "critical" flag on PMP asks.

    • Every other SoC description with a pms domain keeps it on.
    • The SoCs whose PMP Linux runs (T6030, T604x, T8122, T8132, T8140 and the T8142 J813) keep pmp on; ceaab64 added it on the J813 for the same crash.
  • Commit message: I changed that sentence, which originally said every other SoC does both, with a [thomas: …] note.

Boards affected: the domains are in t6050-peripherals.dtsi.

Testing:

Authorship: Jens Axboe wrote it on his K116s (Mac17,12, stub macOS 27.2 26B8125). It is from his second update of 2026-11-12, and it carries his Signed-off-by and mine.

cc @Acelogic @DjDeveloperr @RyanTheTide @LiamRay10

The PMP's firmware runs from the moment its driver starts it, and in a
suspend-to-idle the driver leaves it running: only a firmware-driven sleep
stops it. Its three power states were ordinary genpd domains, though, so
at the noirq phase of every s2idle genpd gated the PMP's core (pmp) and
its SRAM (pms-sram) under the running firmware and then tried their parent
(pms), which the PMGR refuses:

  PS pms: Failed to reach power state 0x0 (requested 0xf0000f0, now: 0x1f0002ff)

With power back at the wake the firmware usually takes a translation fault
within the first moments (PC 0x10178b4, 0x1025498 or 0, every register
zero) and reports a crash; it stays down until reboot, and prints its
crash log again at each later wake. On the K116s that was 3 of the 4
suspends that reached the noirq phase with a live PMP.

Mark all three always-on, as the ADT's "critical" flag on PMP asks.
Every other SoC description with a pms domain keeps it on, and those
whose PMP Linux runs (T6030, T604x, T8122, T8132, T8140 and the T8142
J813, which gained it for the same crash) keep pmp on. The PMP then
keeps running through s2idle as it does under macOS, and the pms
message goes away with the power-off request.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
[thomas: name the SoCs that keep pms and pmp on]
Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
@axboe

axboe commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

More cycles on the K116s (16" M5 Pro OLED, 27.2 stub, Linux at EL2) with this change: 4 s2idle cycles so far, all clean. No PS pms: Failed to reach message and no PMP crash at wake in any of them; pms, pmp and pms-sram read on in genpd throughout.

  • 2 cycles on integration/aurora 2b4523c + my K116s series
  • 1 cycle on aa68b3c + the same series
  • 1 cycle on 10dca1d + the eight thomas/ K116s branches (51a64cc5474c), the same boot as the linux#1647 run

Each was a lid close/open of 10 to 20 s. Before the change every suspend on this machine logged the PS failure and the PMP crashed on wake.

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.

2 participants