diff options
| author | 2026-05-29 11:18:15 +0100 | |
|---|---|---|
| committer | 2026-05-29 11:18:15 +0100 | |
| commit | 6e0c5c33438e5e898bd075c33a45b3abf9d1b26b (patch) | |
| tree | c7387db08eaf33f55eb7f1e3cca331f92fbce9be /KEYBINDS.md | |
| parent | ad8e14860fa0ca978f5ef6e02860d24f5e39c361 (diff) | |
| download | dotfiles-6e0c5c33438e5e898bd075c33a45b3abf9d1b26b.tar.gz dotfiles-6e0c5c33438e5e898bd075c33a45b3abf9d1b26b.tar.bz2 dotfiles-6e0c5c33438e5e898bd075c33a45b3abf9d1b26b.zip | |
feat(suspend): re-enable suspend on s2idle, drop diagnostic scaffolding
Confirmed root cause: this hardware's S3 (deep) firmware path triggers a
fatal wake-from-suspend hang only on linux-hardened. INIT_ON_FREE + slab
hardening + tighter locking turn a latent driver race that stock linux
gets away with into an unrecoverable panic so early the journal isn't
even flushed. mem_sleep_default=s2idle bypasses the BIOS S3 path
entirely (s0ix is a pure-kernel low-power state) and suspends/resumes
reliably under hardened.
This is a widespread Lenovo S3 firmware issue across post-2018
ThinkPads (see Ubuntu T560, X1C9/10/11 reports). Lenovo themselves
moved newer firmwares to s2idle-only. Not a linux-hardened bug per se;
just hardened being a strict enough kernel to make the bug fatal.
Keep:
* mem_sleep_default=s2idle in etc/kernel/cmdline-linux-hardened.tmpl
(only the hardened UKI; stock linux keeps unchanged shared cmdline)
Revert (all the diagnostic / speculative scaffolding from the last
few commits):
* MODULES=(intel_lpss_pci) → MODULES=() — Arch wiki touchpad fix was
not the cause here
* nmi_watchdog=panic softlockup_panic=1 panic=10 — only needed to
auto-reboot during diagnosis
* no_console_suspend — diagnostic-only
* etc/systemd/logind.conf.d/20-no-suspend.conf — masking workaround
* sleep-target masking block in run_onchange_after_deploy-etc.sh.tmpl,
replaced with a one-shot cleanup that removes any leftover
/dev/null symlinks from systems that ran the previous version
* systemd-pstore.service from systemd-units/system.txt — added only to
catch the diagnostic panic
* diagnose-suspend.sh helper (and its .gitignore/.chezmoiignore entries)
* sway suspend → lock-session keybind workaround
* power-menu.sh Suspend entry restoration
* KEYBINDS.md docs
Diffstat (limited to 'KEYBINDS.md')
| -rw-r--r-- | KEYBINDS.md | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/KEYBINDS.md b/KEYBINDS.md index 9040c2a..898c78c 100644 --- a/KEYBINDS.md +++ b/KEYBINDS.md @@ -326,7 +326,7 @@ Mod key: `Super` (Mod4). Only personal additions beyond sway defaults listed. | `XF86AudioMicMute` | Mic mute toggle | | `XF86Bluetooth` | Bluetooth power toggle (bluetoothctl) | | `XF86ScreenSaver` | Lock screen + pause media (same as Super+Shift+s) | -| `XF86Sleep` | Lock session (suspend disabled — see logind drop-in) | +| `XF86Sleep` | Suspend system (systemctl suspend) | | `XF86WLAN` | Toggle Wi-Fi (rfkill) | | `XF86RFKill` | Toggle all radios (rfkill) | | `Super+Shift+Return` | Open ghostty with yazi (file manager) | @@ -364,18 +364,18 @@ runs the action and exits the mode; `Escape` or `Return` exits without acting. Provides non-XF86 access to the rare hardware toggles and TUI launchers. -| In `system` mode | XF86 equivalent | Action | -| ----------------- | --------------- | ------------------------------- | -| `b` | `XF86Bluetooth` | Bluetooth power toggle | -| `w` | `XF86WLAN` | Wi-Fi toggle (rfkill wifi) | -| `r` | `XF86RFKill` | Toggle all radios (rfkill) | -| `s` | `XF86Sleep` | Lock session (suspend disabled) | -| `d` | `XF86Display` | Display mode toggle | -| `v` | `XF86Tools` | Floating pulsemixer | -| `k` | `XF86Keyboard` | Floating glow KEYBINDS.md | -| `m` | `XF86Favorites` | Notification picker | -| `n` | — | Toggle Do-Not-Disturb (mako) | -| `Escape`/`Return` | — | exit submode | +| In `system` mode | XF86 equivalent | Action | +| ----------------- | --------------- | ---------------------------- | +| `b` | `XF86Bluetooth` | Bluetooth power toggle | +| `w` | `XF86WLAN` | Wi-Fi toggle (rfkill wifi) | +| `r` | `XF86RFKill` | Toggle all radios (rfkill) | +| `s` | `XF86Sleep` | Suspend (systemctl suspend) | +| `d` | `XF86Display` | Display mode toggle | +| `v` | `XF86Tools` | Floating pulsemixer | +| `k` | `XF86Keyboard` | Floating glow KEYBINDS.md | +| `m` | `XF86Favorites` | Notification picker | +| `n` | — | Toggle Do-Not-Disturb (mako) | +| `Escape`/`Return` | — | exit submode | ## Typing / Input |
