RX 6600 XT / RDNA2 VRAM clock stuck at lowest state on high refresh rate monitors

Hi, I want to document this RDNA2 issue more clearly since it took me a long time to diagnose and I couldn’t find much about it specific to CachyOS. Hopefully this helps others with RDNA2 cards hitting the same problem.

System:

  • GPU: AMD RX 6600 XT (RDNA2)
  • CPU: Intel i5-12400F
  • OS: CachyOS, kernel 6.14, Wayland (KDE)

The Problem:
When running at my monitor’s maximum refresh rate (164.96Hz), the VRAM clock randomly initializes into a low power state at game launch and locks there for the entire session regardless of GPU load.

Stuck states observed:

  • 96MHz (state 0) — unplayable framerates
  • 541MHz (state 1)
  • 675MHz (state 2)

This is the known RDNA2 blanking period bug — at high refresh rates the monitor’s blanking periods are too short for the amdgpu driver to safely switch VRAM states, so it locks at initialization. Confirmed on RX 6600 XT, RX 6700 XT, and RX 6800 XT from a reddit post I saw.

What did NOT work:

  • Manual sysfs override mid-session
  • Switching power_dpm_force_performance_level between manual and automatic
  • LACT power state restrictions

Workaround:
Dropping to 144Hz or something lower resolves it completely. A quick refresh rate toggle mid-session also unsticks the VRAM.

Has anyone found a proper fix beyond the refresh rate workaround? Is an EDID modification the right path forward here?

Welcome to the forum!

I do not know if the EDID override would be “the right path”, but it is a path.

Have you tried disabling “panel self-refresh” amdgpu.dcdebugmask=0x10 through kernel parameter? It probably does not work for your specific case, but I think it could be worth trying first.

I think I was experiencing the same issue. @Privacy_Goblin’s suggestion (amdgpu.dcdebugmask=0x10) seems to prevent it so far, but I need more time to confirm this.

It happens with other games too, but most of my debugging was done with The Last of Us Part II.

The issue usually occurred after the GPU had been idle long enough for VRAM to enter its lowest power state before launching a game. When the issue happened, the GPU core clock would increase normally, but the VRAM clock would be stuck at 96 MHz.

Changing the monitor refresh rate restored the VRAM frequency and performance.

System:
GPU: Radeon RX 6600 (Navi23 RDNA2)
Kernel: Linux 7.1.3-2-cachyos
DE: Sway/Wayland
Monitor: 3440x1440@144Hz

Issue:
After idle, 
launching Vulkan games can leave VRAM MCLK stuck at 96 MHz,
SCLK boosts normally,
Refresh rate toggling fixes it immediately, 

I used an AI to help me with some of the wording and terminology in this post so I hope that is okay.