Not able to execute this command: sudo echo balanced > /sys/class/drm/card0/device/power_dpm_state

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 :point_down:

  • (The setting for power_dpm_state shows up only after enabling DPM,
    which I did by changing the above value to amdgpu.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 :point_down:

 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

3 Likes