Skip to content

Comments

suspend: switch from deep -> s2idle for darp11#1715

Merged
brianmcgillion merged 2 commits intotiiuae:mainfrom
kajusnau:s76-suspend
Feb 12, 2026
Merged

suspend: switch from deep -> s2idle for darp11#1715
brianmcgillion merged 2 commits intotiiuae:mainfrom
kajusnau:s76-suspend

Conversation

@kajusnau
Copy link
Collaborator

@kajusnau kajusnau commented Jan 30, 2026

Description of Changes

  1. Darp11: switch to s2idle suspension:
    • switch from deep to s2idle suspension on darp11 target
    • s2idle suspension offers less energy saving, but a lot more compared to simply leaving the system on (ref)
    • s2idle does not power off most hardware, so the GPU does not become wedged
  2. Expanded power-manager cfg:
    • changed allowSuspend option to suspend.enable
    • added suspend.mode option to allow changing suspension mode on any target.
      • suspension mode is set via mem_sleep_default kernel parameter
      • it's also possible to do this via sleep.conf.d(5), but in my testing it disabled keyboard wakeup
  3. Other:
    • Changed host config to ignore power button short press
    • Re-enabled idleManagement on demo-tower-mk1 and tower-5080

Note

s2idle suspension is distinct from typical deep suspension. Some differences include:

  • power LEDs will not pulsate in s2idle suspension
  • fans may spin during and after suspension in s2idle mode
  • wakeup from s2idle should be faster in most cases compared to regular deep suspension

Type of Change

  • New Feature
  • Bug Fix
  • Improvement / Refactor

Related Issues / Tickets

Addresses (does not fully fix) https://jira.tii.ae/browse/SSRCSP-7016
Fixes https://jira.tii.ae/browse/SSRCSP-7932

Checklist

  • Clear summary in PR description
  • Detailed and meaningful commit message(s)
  • Commits are logically organized and squashed if appropriate
  • Contribution guidelines followed
  • Ghaf documentation updated with the commit - https://tiiuae.github.io/ghaf/
  • Author has run make-checks and it passes
  • All automatic GitHub Action checks pass - see actions
  • Author has added reviewers and removed PR draft status

Testing Instructions

Applicable Targets

  • Orin AGX aarch64
  • Orin NX aarch64
  • Lenovo X1 x86_64
  • Dell Latitude x86_64
  • System 76 x86_64

Installation Method

  • Requires full re-installation
  • Can be updated with nixos-rebuild ... switch
  • Other:

Test Steps To Verify:

  1. Verify https://jira.tii.ae/browse/SSRCSP-7016 is addressed
  2. (Optional) check battery usage on darp11-b when suspended
    • In my testing, I found approx. 10%/hr battery usage in s2idle mode
  3. Verify power button short press no longer initiates system shutdown
  4. Verify power button long press still shuts down the system
    • "Long press" time is determined by the firmware. On the darp11, it seem to be around 5 seconds, on x1 gen 11 it may be up to 10.

@kajusnau kajusnau self-assigned this Jan 30, 2026
@kajusnau kajusnau marked this pull request as ready for review January 30, 2026 10:23
@kajusnau kajusnau added the Needs Testing CI Team to pre-verify label Jan 30, 2026
@milva-unikie

This comment was marked as outdated.

@milva-unikie
Copy link

Tested with system76-darp11-b-storeDisk-debug-installer

Issues

  • Screen does not turn on after automatic suspension. The device suspends after 15 minutes and when you press the power button shortly it wakes up and ssh works. The screen however does not turn on. I sent the logs to Kajus.

Working

  • s2idle suspension works from the power menu and from the lock screen. The best way to wake up the laptop seems to be a short press on the power button.
  • Device is suspended if the lid is closed without charger connected.
  • In my test the laptop used 12 % of battery during 80 minute suspension. Not bad.
  • Short power button press does not turn the laptop off anymore, long press still does.

@milva-unikie
Copy link

Tested on Darter Pro (new image)

All good now!

  • Automatic suspension is fixed, the display turns on after suspension
  • Other types of suspension work with one exception

@kajusnau
Copy link
Collaborator Author

kajusnau commented Feb 4, 2026

Latest fix includes toggling the display on and back off right before suspension.
This is questionable, but it appears to fix the issue where the GPU might be in a low power state if the display is left off for 5+ minutes. Briefly turning on the display seems to make the GPU wake up, which prevents it from becoming wedged once suspension occurs.

I tried other options, like changing i915 power management settings, force-disabling PCI power management for the GPU, and others, but none seem to address this specific issue.

  - suspend method deep (suspend-to-RAM) is broken on darp11 (arrow-lake)
    switch to s2idle suspend method to provide some battery saving
    instead of disabling suspension entirely
  - re-enable suspenion on all darp11 targets
  - add suspend.mode option to power cfg

Signed-off-by: Kajus Naujokaitis <kajus.naujokaitis@unikie.com>
- enable idleManagement for all targets
- change power button behavior to ignore short press

Signed-off-by: Kajus Naujokaitis <kajus.naujokaitis@unikie.com>
@brianmcgillion brianmcgillion merged commit 3bfc5ca into tiiuae:main Feb 12, 2026
32 checks passed
@kajusnau kajusnau deleted the s76-suspend branch February 12, 2026 10:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants