# PSR Display Flicker Workaround for Linux

> Internal Display Flicker  Freeze  Panel Self Refresh Workaround  Applies to internal eDP panels on AMD Ryzen AI 300 Series Strix Point and 7040 Series Fi

Source: https://knowledgebase.frame.work/en_us/psr-display-flicker-workaround-for-linux-SJTKb7VMl

Last updated: 2026-07-14T01:01:22.449Z

### Internal Display Flicker / Freeze — Panel Self Refresh Workaround

_Internal (eDP) panel issue on AMD Ryzen AI 300 / 7040 Series. Resolved by disabling PSR and Panel Replay via a kernel boot parameter._

Applies to

Primary platform

Also seen on

Reboot required

Internal eDP panel

Ryzen AI 300 (Strix Point)

Ryzen 7040 Series

Yes

#### Symptom

The internal display flickers — often worst on white or bright content — or intermittently blanks / hangs briefly, especially right after resume from suspend. Log signatures that point to this issue:

```
amdgpu 0000:XX:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error
```

```
amdgpu 0000:XX:00.0: [drm] *ERROR* [CRTC:XX:crtc-0] flip_done timed out
```

```
kwin_wayland: Pageflip timed out!
```

#### Why This Happens

Panel Self Refresh (PSR) lets the display hold a static image without the GPU continuously redrawing it, to save power. It's managed by DMCUB (Display MicroController Unit Block) on the AMD APU. Panel Replay is PSR's successor feature, available on DCN 3.1.4 and newer, and on affected panels it doesn't negotiate cleanly with the compositor, causing flicker or a brief hang on each refresh-state transition.

*   `amdgpu.dcdebugmask=0x10` disables base PSR only (kernel bit `DC_DISABLE_PSR`).
*   `amdgpu.dcdebugmask=0x410` disables PSR (`0x10`) and Panel Replay (`0x400`, `DC_DISABLE_REPLAY`) — this is the fix.
*   Note: PSR Selective Update is a separate bit (`0x200`, `DC_DISABLE_PSR_SU`) not included in 0x410. Whether a given panel negotiates Panel Replay or classic PSR-SU depends on the panel's own capabilities, not just the SoC generation — if flicker persists after 0x410, `0x210` (PSR + PSR-SU) is worth testing as a separate step.

#### The Fix — kernel boot parameter

```
amdgpu.dcdebugmask=0x410
```

#### Apply It

**Ubuntu / Debian-based (GRUB)**

```
sudo nano /etc/default/grub
```

```
# Append to the existing GRUB_CMDLINE_LINUX_DEFAULT line, do not remove what's already there:
```

```
amdgpu.dcdebugmask=0x410
```

```
sudo update-grub
```

```
sudo reboot
```

**Fedora / RHEL-based (grubby)**

```
sudo grubby --update-kernel=ALL --args="amdgpu.dcdebugmask=0x410"
```

```
sudo reboot
```

**Arch-based, systemd-boot**

```
# Edit the relevant entry:
```

```
sudo nano /boot/loader/entries/<your-entry>.conf
```

```
# Add amdgpu.dcdebugmask=0x410 to the "options" line, save, then:
```

```
sudo reboot
```

#### Verify

```
cat /sys/module/amdgpu/parameters/dcdebugmask
```

Should return `0x410` (decimal 1040).

#### Revert

**Ubuntu / Debian-based**

```
# Remove amdgpu.dcdebugmask=0x410 from GRUB_CMDLINE_LINUX_DEFAULT
```

```
# in /etc/default/grub, then:
```

```
sudo update-grub
```

```
sudo reboot
```

**Fedora / RHEL-based**

```
sudo grubby --update-kernel=ALL --remove-args="amdgpu.dcdebugmask=0x410"
```

```
sudo reboot
```

#### Trade-offs

> Slightly higher idle power draw, since the GPU can no longer use the panel self-refresh shortcut while the display is static. In practice the difference is minor and is the accepted trade-off for eliminating the flicker/freeze.
