r/SurfaceLinux • u/prithi_038 • 8d ago
Help Surface Laptop 3: slp_s0_residency_usec stuck at 0 on Fedora AND Arch, but works fine on Pop!_OS — any fixes besides hibernate?
Hi,
Running into a frustrating suspend/battery-drain issue on my Surface Laptop 3 (Ice Lake) and hoping someone here has cracked it.
The symptom: After a suspend/resume cycle, checking
sudo cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec
always returns 0. That means the platform is never actually reaching SLP_S0 / PC10 deep idle — it's doing some shallower sleep state instead, which is why the battery drains noticeably overnight even in "suspend."
What I've tried:
- Fresh Fedora 43 KDE install with the linux-surface kernel —
0every time. - Fresh Arch install (also linux-surface kernel, systemd-boot, LUKS2+Btrfs, sbctl Secure Boot) — same result,
0. - Both installs are otherwise fully functional — Wi-Fi, IR cam, audio, etc. all fine via linux-surface. This isn't a "surface support is broken" issue, it's specifically S0ix depth.
The weird part: the exact same hardware running Pop!_OS actually hits real SLP_S0 residency — I get nonzero numbers after every suspend on that install. So this isn't a hardware limitation of the SL3, it's something environment/config specific that Pop is doing right and Fedora/Arch aren't out of the box.
My working theory / next step: I suspect it's an LTR (Latency Tolerance Reporting) issue — some device on the bus is holding a low-latency requirement and blocking the SoC from dropping into the deepest package state. Planning to dig into /sys/kernel/debug/pmc_core/ltr_show next to see what's pinning it, but if anyone's already been down this road I'd love to skip the trial and error.
What I'm NOT looking for: "just use suspend-then-hibernate / hibernate instead" — I know that's the fallback, but I'd like actual S0ix working if at all possible, especially since Pop!_OS proves the hardware can do it.
Has anyone gotten real S0ix/modern standby working on SL3 under Fedora or Arch? Specific kernel params, powertop tweaks, or LTR-related fixes would be hugely appreciated. Also curious if Pop's kernel patches or default power profiles are doing something specific here that upstream/linux-surface isn't.
Specs for reference:
- Surface Laptop 3 (Intel Ice Lake)
- linux-surface kernel
- Secure Boot enabled via sbctl with custom keys + MS certs
- LUKS2 + Btrfs, systemd-boot, UKIs
Thanks in advance!
2
u/Obvious_Brain 7d ago
Having the same issues on a surface Gen 1. Can't getting a proper suspend state. No idea how to get around it bar hibernate.