Hardware
- Laptop: Framework Laptop 13 (AMD)
- CPU: AMD Ryzen 5 7640U w/ Radeon 760M Graphics
- GPU: AMD Radeon 760M (integrated,
amdgpu) - OS: Fedora 44 (Forty Four)
- Kernel: 7.0.9-205.fc44.x86_64 (PREEMPT_DYNAMIC)
- Suspend mode:
s2idleonly (nodeep/S3 available)
Symptom
The laptop occasionally becomes completely unresponsive after closing the lid or after auto-suspend. No response to keyboard, trackpad, or power button short-press. The only recovery is a long power-button hold (cold restart). No kernel panic, oops, or crash dump is recorded — the journal simply ends at the last suspend entry.
Reproducibility
Intermittent. Over several weeks I recorded multiple sessions that ended with a crash flag in last -x rather than a clean shutdown, for example:
marcus tty2 local Mon May 25 09:25 - crash (9+08:47)
Each crash session corresponds to the journal ending abruptly after PM: suspend entry (s2idle) with no matching PM: suspend exit.
Kernel Messages
TSC Clocksource Instability
On every boot, the kernel marks the TSC unstable:
clocksource: timekeeping watchdog on CPU4: Marking clocksource 'tsc' as unstable because the skew is too large:
clocksource: 'hpet' wd_nsec: 504572997 wd_now: 234aa383 wd_last: 22dc668c mask: ffffffff
clocksource: 'tsc' cs_nsec: 504165189 cs_now: 23257d18e51e cs_last: 2325141e2a88 mask: ffffffffffffffff
clocksource: Clocksource 'tsc' skewed -407808 ns (0 ms) over watchdog 'hpet' interval of 504572997 ns (504 ms)
TSC found unstable after boot, most likely due to broken BIOS. Use 'tsc=unstable'.
clocksource: Switched to clocksource hpet
This triggers a sched_clock discontinuity which can cause timers to misfire during s2idle resume — a plausible mechanism for the freeze.
UCSI / USB-C Controller Errors
On every boot and after every resume, the ACPI UCSI driver reports errors:
ucsi_acpi USBC000:00: unknown error 0
ucsi_acpi USBC000:00: GET_CABLE_PROPERTY failed (-5)
ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-5)
ucsi_acpi USBC000:00: unknown error 256
These are a known Framework firmware issue but can also delay or block the resume path if the EC is in an unexpected state.
hrtimer Latency Spike
One instance recorded during the previous boot:
hrtimer: interrupt took 4258883 ns
A 4.2 ms hrtimer delay is significant and consistent with the CPU being momentarily non-responsive — exactly what you would see during a partial resume failure.
GNOME Shell / Touchpad Errors
libinput error: event7 - PIXA3854:00 093A:0274 Touchpad: kernel bug: Touch jump detected and discarded.
meta_window_set_stack_position_no_sync: assertion 'window->stack_position >= 0' failed
These are secondary effects of the resume instability rather than the root cause.
Network Manager Warnings (secondary)
The p2p-dev-wlp1s0 IPv4 forwarding errors and imap.mailbox.org DNS resolution failures appear only during suspend/resume transitions — the WiFi disconnects and reconnects each cycle. These are symptoms, not cause.
Root Cause Analysis
The freeze is caused by a failure to resume from s2idle. The most likely sequence of events is:
- Lid closes or auto-suspend triggers
PM: suspend entry (s2idle). - The TSC is already marked unstable (known BIOS bug), forcing a fallback to HPET.
- During resume, a timing or ACPI event race occurs — possibly involving the UCSI controller, the
amdgpuSMU resume, or the TSC/HPET handoff. - The CPU or GPU never fully exits the low-power state. The system is unresponsive to all input.
- No kernel oops is generated because the CPU is halted — the journal has no opportunity to record anything.