https://paste.centos.org/view/fcf10f33
amdgpu display lockup: [drm] *ERROR* [CRTC:424:crtc-0] flip_done timed out
Summary
Recurring hard system freeze on a Fedora Linux workstation with a discrete AMD GPU (also driving the display). The GPU is very recent RDNA4-class silicon (GFX12). Freezes require a hard power cycle to recover from. Root cause not yet identified despite ruling out several plausible causes (below).
System
- OS: Fedora Linux, kernel
7.1.7-200.fc44.x86_64 - CPU: AMD Ryzen 7 7800X3D (includes integrated Raphael/RDNA2 graphics, PCI
0000:12:00.0, currently unused for display) - Discrete GPU: AMD Radeon, PCI
0000:03:00.0- PCI Device ID:
1002:7550 - VBIOS:
113-APM7604SL-104, build00146011, ver023.008.000.068.000001, dated 2025/04/01 - VRAM: 16304M GDDR6, 256-bit
- IP blocks report
gfx_v12_0(GFX12 / RDNA4-class architecture)
- PCI Device ID:
- RAM: 32GB DDR5 @ 6000MT/s (dual channel, EXPO enabled)
- Display: connected via HDMI only, monitor is a 500Hz HDR panel
- Kernel boot params (current, after fixes below):
amdgpu.runpm=0 amdgpu.ppfeaturemask=0xfff7bfff - Fully up to date:
dnf check-update kernel* linux-firmwarereports no updates available
Symptom
GPU/display hard-locks under normal desktop use. Recovery requires a hard power cycle (SSH sessions also become unresponsive, ruling out a simple compositor crash recoverable without reboot). Each incident logs exactly one line before the freeze:
amdgpu 0000:03:00.0: [drm] *ERROR* [CRTC:424:crtc-0] flip_done timed out
No corresponding Out of memory: Killed process or other OOM-killer messages in any of the crash logs. No corresponding “Not enough memory for command submission” message except in the very first incident (see Timeline, Incident 1).
Timeline of incidents
| # | Elapsed time before crash | Workload at time of crash | Config in effect |
|---|---|---|---|
| 1 | ~14 min into a model load | Ollama loading a 27B model (qwen3.6:27b, ~17GB) via ROCm |
ppfeaturemask=0xffffffff (default install config) |
| 2 | ~32 min | Ollama running a 9B model (Qwen3.5-DeltaCoder-9B, ~6.4GB) via ROCm, active chat session |
ppfeaturemask=0xffffffff |
| 3 | ~16 min | Same 9B model, active chat session, larger context window (num_ctx 16384, ~7GB) |
ppfeaturemask=0xffffffff removed entirely (back to compiled-in default 0xfff7ffff, which itself still reports Overdrive enabled) |
| 4 | ~4.5 min | qwen3.5:9b, active chat session |
ppfeaturemask=0xfff7bfff (Overdrive bit explicitly cleared from the default) |
| 5 | ~10 min | No model running. Only action taken was running rocminfo, which itself failed instantly with libhsa-runtime64.so.1: cannot open shared object file (ROCm runtime library missing/broken) before any GPU query could occur |
ppfeaturemask=0xfff7bfff |
Incident 1 additionally logged, just before the freeze:
amdgpu 0000:03:00.0: [drm] *ERROR* Not enough memory for command submission!
amdgpu 0000:03:00.0: VM memory stats for proc ptyxis(7233) task ptyxis(7233) is non-zero when fini
amdgpu 0000:03:00.0: VM memory stats for proc RDD Process(9146) task browser 4 :cs0(8047) is non-zero when fini
amdgpu 0000:03:00.0: VM memory stats for proc firefox(7882) task firefox:cs0(7802) is non-zero when fini
amdgpu 0000:03:00.0: VM memory stats for proc gnome-shell(5751) task gnome-shel:cs0(5709) is non-zero when fini
This looks like genuine VRAM exhaustion (17GB model vs 16GB card, no headroom left for the compositor). Incidents 2-5 do not show this message and involve models that fit comfortably within VRAM (6-7GB used of 16GB total, confirmed via rocm-smi showing ~39-42% usage, flat/stable, no leak), which is why VRAM exhaustion has been ruled out as the explanation for incidents 2-5.
What’s been ruled out
- Model size / VRAM exhaustion — incident 1 fits this, but incidents 2-5 do not. Crashes continued at ~6-7GB VRAM usage on a 16GB card.
- Overdrive / unstable PowerPlay feature mask — the machine was originally booting with
amdgpu.ppfeaturemask=0xffffffff(all 32 feature bits enabled, including Overdrive), which the driver itself warns against (“Overdrive is enabled, please disable it before reporting any bugs unrelated to overdrive”). This was removed entirely, then the Overdrive bit (0x4000) was explicitly cleared from the compiled-in default (0xfff7ffff→0xfff7bfff), confirmed viacat /sys/module/amdgpu/parameters/ppfeaturemaskand confirmed the driver’s Overdrive warning no longer appears indmesg. Crash recurred anyway (incident 4). - Stale kernel/firmware —
dnf check-update kernel* linux-firmwarereports fully up to date at time of writing. - Sustained AI compute load specifically — incident 5 occurred with no model loaded and no successful ROCm call (the only ROCm-touching command run,
rocminfo, failed instantly on a missing shared library, before it could have queried or engaged the GPU). - General (non-GPU-compute-related) instability — per the user, the machine has never frozen or shown display glitches during normal use when no Ollama/local-model activity is anywhere in the picture (browsing, terminal work, etc.), which is why suspicion centered on Ollama/ROCm activity in the first place — though incident 5 now complicates that a bit.
Separately noticed, possibly unrelated
rocminfo fails outright:
rocminfo: error while loading shared libraries: libhsa-runtime64.so.1: cannot open shared object file: No such file or directory
This suggests the system-level ROCm install is incomplete or broken, independent of whatever Ollama uses internally (Ollama has its own bundled HIP/ROCm libraries and was successfully running models via GPU offload, confirmed via rocm-smi showing GPU VRAM usage climb and hold during inference). Not yet determined whether this is connected to the freezes.
Hardware/software notes potentially relevant to RDNA4
- GPU IP blocks (
gfx_v12_0, PCI ID1002:7550) place this in the RDNA4/GFX12 generation, which is very recent (VBIOS dated April 2025). - ROCm only added native support for RDNA4 (gfx1200/gfx1201) in version 7.2 (March 2026) — prior to that, RDNA4 required a manual
HSA_OVERRIDE_GFX_VERSIONcompatibility hack. - There is at least one open upstream report of RDNA4 (gfx1201)-specific instability under HIP/ROCm compute workloads (GPU entering a permanent non-idle/hung state), described as a HIP queue initialization/teardown issue specific to this architecture (ROCm/ROCm#5706).
- System-installed ROCm version has not yet been confirmed (blocked by the missing
libhsa-runtime64.so.1library preventingrocminfofrom running) — worth checking whether it predates 7.2, though incident 5 (crash with no successful ROCm call at all) suggests this may not be the whole story.
What would help
- Confirmation of whether this matches a known amdgpu/RDNA4 display-pipeline bug.
- Guidance on whether
[CRTC:424:crtc-0] flip_done timed outin isolation (no preceding OOM or memory-submission error) points to a specific subsystem (DC/DCN display core, PSP/SMU firmware, or something else). - Whether routing display output through a secondary GPU (this system has an unused iGPU, PCI
0000:12:00.0, currently with no display attached) is a reasonable/known workaround for this class of bug, or whether the freezes would be expected to persist regardless of what’s driving the display.