Tuning the 5700 (XT) on Linux (voltage, clock frequencies, power target, fan-profile)

I recently bought an ASUS Strix 5700 XT, the hardware is great and with some tuning (-99 mV for the GPU at the highest clock frequency, +50 MHz for the GDDR6 clock freuqency) it works great but I can’t really game with it on Linux, if the game runs, but without tuning the settings the fan gets much too loud. ASUS chose a ridiculously high clock frequency for the GPU (much higher than sensible for this architecture and die), because of that the power consumption gets high and there is a lot of heat while adding negligible performance. I don’t know of any GUI-tool which supports the 5700 XT already and it is better anyway to be able to do it yourself.

I would like to do as much gaming on Linux as possible and I would like to learn how to tune all of this on Linux. As I see it these are essential tweaks for any graphics card: GPU clock frequency, memory clock frequency, voltages for both GPU and memory (less heat and more performance when you lower the voltage if the ‘silicon’ can handle it), the fan profile (depending on the model). It also is essential to set a FPS-target for many games. I haven’t found any good tutorial on it on this forum (or anywhere else). If a good tutorial doesn’t exist on this forum yet then I would be willing to write one once it has become clear to me how all of it works.

I looked up on the archwiki how to change the voltages and clock frequencies but what is being explained there does not seem to apply to the 5700 (XT). According to the Archwiki you should have the file “pp_od_clk_voltage” in “/sys/class/drm/card0/device”. That file does not exist on my system (Manjaro). These are the files that do exist.

aer_dev_correctable driver_override max_link_width pp_cur_state resource0
aer_dev_fatal drm mem_busy_percent pp_dpm_dcefclk resource0_wc
aer_dev_nonfatal enable mem_info_gtt_total pp_dpm_fclk resource2
ari_enabled fw_version mem_info_gtt_used pp_dpm_mclk resource2_wc
boot_vga gpu_busy_percent mem_info_vis_vram_total pp_dpm_pcie resource4
broken_parity_status graphics mem_info_vis_vram_used pp_dpm_sclk resource5
class hwmon mem_info_vram_total pp_dpm_socclk revision
config i2c-0 mem_info_vram_used pp_features rom
consistent_dma_mask_bits i2c-2 modalias pp_force_state subsystem
current_link_speed i2c-4 msi_bus pp_mclk_od subsystem_device
current_link_width i2c-6 msi_irqs pp_num_states subsystem_vendor
d3cold_allowed iommu numa_node pp_power_profile_mode uevent
device iommu_group pcie_bw pp_sclk_od vbios_version
dev_rescan irq pcie_replay_count pp_table vendor
devspec local_cpulist power remove
dma_mask_bits local_cpus power_dpm_force_performance_level reset
driver max_link_speed power_dpm_state resourc

As the Archwiki instructed I added the kernel boot parameter amdgpu.ppfeaturemask=0xffffffff in the file /etc/default/grub , the file still doesn’t exist or doesn’t show up, the path ‘device’ contains a symlink to somewhere else. (/sys/devices/pic*?).

1 Like

Looks like the driver support isn’t there yet. Forum won’t let me post links but lookup freedesktop org bug 111762.

There seems to be partial support now but CoreCtrl (is AMD behind this software? It looks a lot like AMD Settings) doesn’t support it yet. :frowning:
Look at the file pp_od_clk_voltage and note that you need the first boot-parameter (edit /etc/default/grub and run update-grub). The second boot-parameter is because of a bug with UMIP. Unfortunately there are more problems than that alone, I still can’t fully start Rise of the Tomb Raider (it gets until the e-mail screen) and Battlenet and Hitman:Absolution won’t start, CS:Go crashes in the menu…
The old Tomb Raider (2013) does work however and smaller games (Invisible, Inc.) are not a problem either. This is what holds Linux back - for the time being - as a Gaming platform.
But with disabling UMIP at least I got until there with Rise of the Tomb Raider and without it it wouldn’t even show anything.


The UMIP kernel code has already offered some instruction emulation and for 32-bit processes while with Linux 5.4, SGDT/SIDT/SMSW is covered for 64-bit processes. This in turn helps some Windows 64-bit games that rely on these instructions. Without this spoofing/emulation support, those games were crashing on recent CPUs when hitting the affected instructions.

Among the prominent 64-bit Windows games affected by the UMIP support include the likes of Metro Exodus, Shadow of the Tomb Raider, Wolfenstein: Youngblood, Soulcalibur VI, Grand Theft Auto, Devil May Cry 5, Team Sonic Racing, and others.

UMIP is supported by Intel Cannonlake CPUs and newer or AMD Ryzen 3000 “Zen 2” processors as well. For those with a UMIP-enabled system, one of the workarounds to disable the UMIP functionality to at least get games running in the meantime until upgrading to Linux 5.4+ is using the clearcpuid=514 kernel parameter.

I noticed a weird issue

Display: x11 server: X.Org 1.20.5 driver: amdgpu FAILED: ati unloaded: modesetting,radeon
resolution: 1920x1080~60Hz

It seems clear that the software on Linux is not ready yet for this GPU.

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.