Radeon RX 6800 has no clock-voltage info and memory clock stuck at 1000Mhz on Linux 5.10

So I was lucky enough to acquire a reference Sapphire Radeon RX 6800 and been playing with it for the last few days. While performance has been very good, I noticed that the memory clock seems to be stuck at maximum 1000Mhz at all times. This is using 5.10 mainline kernel, mesa-git, linux-firmware-git from a few hours ago.

I wondered if I needed to set the voltage - clock profiles myself as this is a fairly new GPU, and support is very initial stage. But also /sys/class/drm/card0/device/pp_od_clk_voltage is empty. As far as I could search, it should output a table listing default voltage - clock configurations for memory and core.

So should I set the max clock by manually using the /sys interface?

EDIT: Also it looks like /sys/class/drm/card0/device/pp_od_clk_voltage is non responsive. Something like ‘echo “m 2 1850 850” > /sys/class/drm/card0/device/pp_od_clk_voltage’ and ‘echo “c” > /sys/class/drm/card0/device/pp_od_clk_voltage’ doesn’t seem to change anything.

1 Like

Thanks for raising this brother.
Yes you are right! I have an RX 6800XT and the memory can be run in three modes only and highest is 1000mhz which is 2000mhz on Windows, which is the default freqency.
Same goes to the card freqency which has three available options and highest is 2575 mhz.
I used corectrl and enabled the oc kernel parameter for amdgpus and I wanted to undervolt the card but it did not work. However, I ran sudo watch sensors and I can see the Tedge Tjunction and Tmem with voltage which changes from 1020mv to 1150mv during games. I also can see the wattage of the card which peaks at 300 watt maximum.
I used liquid metal so I honestly do not care if it got fixed or not but I do understand why you want to control the voltage. Those cards run hot and Tjunction can easily reach 100 degrees. I suggest you to take the risk and Liquid metal the reference card, cause I did that myself and Tjunction peaks at 80 degrees as worst case sceniro. Best regards.

Are you sure it’s not just a case of MT/s vs MHz? Because it’s DDR memory 1000MHz is the correct reading for 2000MT/s.

As for the voltage stuff, it may be that they’ve implemented a new thing for big navi, or have yet to implement it. I remember Vega and Vega20 having some different ways of doing things, with the old non-working ways still hanging around to confuse me.

Yes well, indeed the memory clock of 1000MHz seems to be the correct ready of the memory which would be 2000MHz. I guess I was confused by reading some old Polaris configurations using the interface where the Windows standard (or its just a GDDR6 thing).

The other part is that indeed I wished to control better my curve, because by default it doesn’t seem that the fan goes above 50%, so by default, in full load the GPU runs at 77-80C. Though it seemed that for fancontrol its working fine (I used the amdgpu-fancontrol script), with the fans at 100% temp at full load is at 68C max.

Guess we’ll have to wait for proper frequency and voltage control through the sysfs interface for the newer cards, though I’ll have a look at liquid metal.