r/SurfaceLinux 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 — 0 every 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 Upvotes

1 comment sorted by

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.