CachyOS / CachyOS/linux-cachyos

Arrow Lake-H S0ix never engages on ASUS ROG Zephyrus G16 (Core Ultra 9 285H)

Open
#1,026 0 comments 0 reactions 2 assignees Claimed by @ptr1337 View on GitHub
bug
Dominant language
Shell
Stars
4.5k
Forks
160
Avg merge
2d 12h
Merged PRs (30d)
1

Description

### Pre-flight checklist

- [x] I have searched existing issues and this is not a duplicate.
- [x] I have read the [Contributing Guidelines](https://github.com/CachyOS/linux-cachyos/blob/master/CONTRIBUTING.md).
- [x] I have verified the issue is reproducible with the latest available CachyOS kernel.
- [x] I have tried to reproduce the issue on Arch Linux's `linux` kernel.

### Upstream / vanilla kernel check

Fully tested with Arch's vanilla/upstream kernel.

### Kernel variant

linux-cachyos (EEVDF, Clang)

### System information (cachyos-bugreport.sh)

```text
https://paste.cachyos.org/p/e2f995b.log

the log is more than 65536 characters
```

### Manual system information (if cachyos-bugreport.sh is unavailable)

```text
7.2.2-1-cachyos
Core ultra 9 285H
RTX 5070 Ti Mobile (not relevant to the reproduced failure; dGPU branch was separately eliminated)
x86_64
```

### Bug description

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865587/s0ix-github-issue-revised.md)

Suspend-to-idle itself works, but this Arrow Lake-H system never enters Intel SLP_S0 / S0ix.

A genuine 20–60 second s2idle cycle completes successfully, yet:

/sys/kernel/debug/pmc_core/slp_s0_residency_usec = 0

and Intel's own PMC diagnostics report:

PM: suspend entry (s2idle)
Timekeeping suspended for 59.344 seconds
intel_pmc_core INT33A1:00: CPU did not enter SLP_S0!!! (S0ix cnt=0)
PM: suspend exit

This also reproduces after a fresh reboot into a TTY-only baseline before starting Hyprland, Caelestia, ddcutil, etc., so it is not dependent on the desktop session.

The CPU/package itself reaches deep package idle: CPU_C10_REQ_STS=1 on both PMCs and Package C10 residency accumulates. However, the main PMC never sees the IOE conditions required for S0i2.0:

PMC0:CPU_C10_REQ_STS 1
PMC0:IOE_COND_MET_S02I2_0_REQ_STS 0
PMC0:IOE_COND_MET_S02I2_1_REQ_STS 0
PMC0:IOE_COND_MET_S02I2_2_REQ_STS 0
PMC0:ITSS_CLK_SRC_REQ_STS 0
PMC0:ARC_IDLE_REQ_STS 0

A reproducible additional asymmetry is:

PMC0:PCIE_DEEP_PM_REQ_STS 0
PMC1:PCIE_DEEP_PM_REQ_STS 1

I am not claiming PCIE_DEEP_PM_REQ_STS alone is the root cause. The stronger observation is that the main PMC never receives the required IOE S0i2 conditions while the IOE/platform power-gating path fails to fully quiesce.

Firmware also denies Linux control of PCIe ASPM:

ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
FADT indicates ASPM is unsupported, using BIOS configuration
can't override BIOS ASPM; OS doesn't have ASPM control

This may be relevant but has not yet been proven to be the root cause.

### Steps to reproduce

1. Ensure s2idle is selected:
echo s2idle | sudo tee /sys/power/mem_sleep

2. Enable Intel PMC S0ix failure diagnostics:
echo 1 | sudo tee /sys/module/intel_pmc_core/parameters/warn_on_s0ix_failures

3. Suspend for 60 seconds:
sudo rtcwake -m mem -s 60

4. Check S0ix residency:
sudo cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec

5. Inspect the kernel log:
sudo journalctl -b -k | grep -E 'Timekeeping suspended|CPU did not enter SLP_S0|PM: suspend'

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865596/s0ix-github-issue-revised.md)

### Expected behavior

A successful s2idle cycle should accumulate non-zero SLP_S0/S0ix residency when the platform is quiescent.

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865596/s0ix-github-issue-revised.md)

### Actual behavior

s2idle completes for the requested interval, but slp_s0_residency_usec remains 0 and intel_pmc_core logs:
CPU did not enter SLP_S0!!! (S0ix cnt=0)

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865596/s0ix-github-issue-revised.md)

### Logs / stack traces

```text
PM: suspend entry (s2idle)
Timekeeping suspended for 59.344 seconds
intel_pmc_core INT33A1:00: CPU did not enter SLP_S0!!! (S0ix cnt=0)
PM: suspend exit

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865596/s0ix-github-issue-revised.md)
```

### Additional system information

[s0ix-github-issue-revised.md](https://github.com/user-attachments/files/31865596/s0ix-github-issue-revised.md)

64 gb ddr5
hyprland

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.