Using Vega with GNU/linux

Hi, I have been playing with my new Vega 56 in my system the last weeks and noticed some odd behavior.

The pstates seem to be stuck (limited) between the first 2 states, ie. 0 and 1. Is this the default mode of operation?

I could enable all 7 pstates, by enabling overdrive and manually enabling all the states, using the following commands:

echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo "0 1 2 3 4 5 6 7" >  /sys/class/drm/card0/device/pp_dpm_sclk

Next, I wanted to undervolt the higher pstates, to reduce the power consumption. Again using the documented commands, I could set the correct voltages for say the 7th pstate. However, on application the GPU again gets stuck between pstates 0 and 1. I have to manually force it to go to the desired pstate - to confirm that the voltage and freq was correctly applied.

Enabling all 7 pstates, using the previously mentioned command, seems to reset my manually set undervolt and goes back to using the stock freq and voltages on all pstates.

Am I doing something incorrectly, is the order of operation important? Would appreciate some info, if anyone else is using Vega 56 with linux and has no trouble with these settings.

Sample script of what configurations I am trying to do:
https://0x0.st/z8uQ.sh
Note, that these settings are at least short term stable when used under windows.

amdgpu featuremask:
amdgpu.ppfeaturemask=0xfffd7fff

OS: Arch Linux (x86_64 Linux 5.0.2)
CPU: AMD Ryzen 7 1700
GPU: MSI Radeon RX Vega 56 AIR BOOST 8G OC

1 Like