Now I have a good understanding and a solution to this problem:
The first mistake was, I had disabled DPM, which turns out to be an inappropriate solution for this
- (The setting for
power_dpm_state
shows up only after enabling DPM,
which I did by changing the above value toamdgpu.dpm=1
)
Secondly I was searching for the setting at the wrong place.
I was searching in /sys/class/drm/card0/device/
which turned out to be my integrated Intel card
(The Kernel identifies the GPU cards as card0
, card1
β¦)
My discrete AMD GPU turned out to be identified as card1
As you can have a look here, this directory has the setting power_dpm_state
which I was looking for:
βΞ» cd /sys/class/drm/card1/device/
ββaustin@Austin in /sys/class/drm/card1/deviceπ took 33ms
β°βΞ» ls
lrwxrwxrwx 0 root 12 Sep 17:53 ο driver -> ../../../../bus/pci/drivers/amdgpu
drwxr-xr-x - root 12 Sep 17:53 ο drm
lrwxrwxrwx 0 root 12 Sep 17:53 ο firmware_node -> ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d
drwxr-xr-x - root 13 Sep 08:59 ο fw_version
drwxr-xr-x - root 12 Sep 17:53 ο hwmon
drwxr-xr-x - root 12 Sep 17:53 ο i2c-7
drwxr-xr-x - root 12 Sep 17:53 ο i2c-8
drwxr-xr-x - root 12 Sep 17:53 ο i2c-9
drwxr-xr-x - root 12 Sep 17:53 ο i2c-10
drwxr-xr-x - root 12 Sep 17:53 ο i2c-11
drwxr-xr-x - root 12 Sep 17:53 ο i2c-12
drwxr-xr-x - root 12 Sep 17:53 ο i2c-13
drwxr-xr-x - root 12 Sep 17:53 ο i2c-14
drwxr-xr-x - root 12 Sep 17:53 ο link
drwxr-xr-x - root 12 Sep 23:20 ο msi_irqs
drwxr-xr-x - root 12 Sep 17:53 ο power
lrwxrwxrwx 0 root 12 Sep 23:23 ο subsystem -> ../../../../bus/pci
.r--r--r-- 4.1k root 12 Sep 17:53 ο aer_dev_correctable
.r--r--r-- 4.1k root 12 Sep 17:53 ο aer_dev_fatal
.r--r--r-- 4.1k root 12 Sep 17:53 ο aer_dev_nonfatal
.r--r--r-- 4.1k root 12 Sep 17:53 ο ari_enabled
.rw-r--r-- 4.1k root 12 Sep 17:53 ο broken_parity_status
.r--r--r-- 4.1k root 12 Sep 23:23 ο class
.rw-r--r-- 4.1k root 12 Sep 17:53 ξΌ config
.r--r--r-- 4.1k root 12 Sep 17:53 ο consistent_dma_mask_bits
.r--r--r-- 4.1k root 12 Sep 17:53 ο current_link_speed
.r--r--r-- 4.1k root 12 Sep 17:53 ο current_link_width
.rw-r--r-- 4.1k root 12 Sep 17:53 ο d3cold_allowed
.r--r--r-- 4.1k root 12 Sep 17:53 ο device
.r--r--r-- 4.1k root 12 Sep 17:53 ο dma_mask_bits
.rw-r--r-- 4.1k root 12 Sep 17:53 ο driver_override
.rw-r--r-- 4.1k root 12 Sep 17:53 ο enable
.r--r--r-- 4.1k root 13 Sep 08:59 ο gpu_busy_percent
.r--r--r-- 4.1k root 12 Sep 17:53 ο irq
.r--r--r-- 4.1k root 12 Sep 17:53 ο local_cpulist
.r--r--r-- 4.1k root 12 Sep 17:53 ο local_cpus
.r--r--r-- 4.1k root 12 Sep 17:53 ο max_link_speed
.r--r--r-- 4.1k root 12 Sep 17:53 ο max_link_width
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_busy_percent
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_gtt_total
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_gtt_used
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_preempt_used
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_vis_vram_total
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_vis_vram_used
.r--r--r-- 4.1k root 12 Sep 23:25 ο mem_info_vram_total
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_vram_used
.r--r--r-- 4.1k root 13 Sep 08:59 ο mem_info_vram_vendor
.r--r--r-- 4.1k root 12 Sep 17:53 ο modalias
.rw-r--r-- 4.1k root 12 Sep 17:53 ο msi_bus
.r--r--r-- 4.1k root 13 Sep 08:59 ο pcie_bw
.r--r--r-- 4.1k root 13 Sep 08:59 ο pcie_replay_count
.rw-r--r-- 4.1k root 12 Sep 23:26 ο power_dpm_force_performance_level
.rw-r--r-- 4.1k root 12 Sep 17:53 ο power_dpm_state
.r--r--r-- 4.1k root 12 Sep 17:53 ο power_state
.r--r--r-- 4.1k root 13 Sep 08:59 ο pp_cur_state
.rw-r--r-- 4.1k root 12 Sep 23:25 ο pp_dpm_mclk
.rw-r--r-- 4.1k root 13 Sep 08:59 ο pp_dpm_pcie
.rw-r--r-- 4.1k root 12 Sep 23:25 ο pp_dpm_sclk
.rw-r--r-- 4.1k root 13 Sep 08:59 ο pp_force_state
.rw-r--r-- 4.1k root 13 Sep 08:59 ο pp_mclk_od
.r--r--r-- 4.1k root 13 Sep 08:59 ο pp_num_states
.rw-r--r-- 4.1k root 12 Sep 23:25 ο pp_power_profile_mode
.rw-r--r-- 4.1k root 13 Sep 08:59 ο pp_sclk_od
.rw-r--r-- 4.1k root 13 Sep 08:59 ο pp_table
.r--r--r-- 4.1k root 13 Sep 08:59 ο product_name
.r--r--r-- 4.1k root 13 Sep 08:59 ο product_number
.-w--w---- 4.1k root 12 Sep 17:53 ο remove
.-w------- 4.1k root 12 Sep 17:53 ο rescan
.-w------- 4.1k root 12 Sep 17:53 ο reset
.r--r--r-- 4.1k root 12 Sep 17:53 ο resource
.rw------- 268M root 12 Sep 17:53 ο resource0
.rw------- 268M root 12 Sep 17:53 ο resource0_wc
.rw------- 262k root 12 Sep 17:53 ο resource2
.rw------- 256 root 12 Sep 17:53 ο resource4
.r--r--r-- 4.1k root 12 Sep 17:53 ο revision
.rw------- 131k root 12 Sep 17:53 ο rom
.r--r--r-- 4.1k root 13 Sep 08:59 ο serial_number
.r--r--r-- 4.1k root 12 Sep 17:53 ο subsystem_device
.r--r--r-- 4.1k root 12 Sep 23:20 ο subsystem_vendor
.rw-r--r-- 4.1k root 13 Sep 08:59 ο thermal_throttling_logging
.rw-r--r-- 4.1k root 12 Sep 23:23 ο uevent
.r--r--r-- 4.1k root 12 Sep 23:25 ο vbios_version
.r--r--r-- 4.1k root 12 Sep 23:23 ο vendor
You can find several settings here, which enables us to control and monitor the GPU directly by changing the values (AMDGPU - ArchWiki)
These changes to the settings apply only for the current session and change back to the default values after a reboot.
This directory is like the Radeon software in Windows
These settings can accept only valid arguments.
(in my case I am trying to change power_dpm_state
)
power_dpm_state
it accepts only
battery
or balanced
(default value) or performance
as valid arguments
But balanced
didnβt do the work as to my needs so I changed it to battery
As you change the arguments in these settings you can instantly see the changes reflect in the GPUβs performance i.e. some changes in its clock speeds etc.
corectrl
which we all might be familiar of does the same thing through a GUI (Changes the same settings in the/sys/class/drm/card1/device/
directory)
Since the settings change to the default values after boot, but I wanted power_dpm_state
to retain the battery
mode.
I found a solution to that too - UDEV rules :β
(AMDGPU - ArchWiki)
In my case
GNU nano 5.8 /etc/udev/rules.d/30-amdgpu-pm.rules
KERNEL=="card1", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_state}="battery"
For more details: Reddit - Dive into anything
Thatβs it, I hope I have explained everything clearly and in simple terms.
Thank you