FS#72655 - [linux][amdgpu] udev rule can no longer set power_dpm_force_performance_level

Attached to Project: Arch Linux
Opened by noa body (noabody) - Sunday, 07 November 2021, 15:10 GMT
Last edited by Andreas Radke (AndyRTR) - Sunday, 21 November 2021, 09:36 GMT
Task Type Bug Report
Category Kernel
Status Closed
Assigned To No-one
Architecture x86_64
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
udev rule to force power level high is ignored

https://wiki.archlinux.org/title/AMDGPU#Screen_artifacts_and_frequency_problem

...you may create a udev rule:

/etc/udev/rules.d/30-amdgpu-pm.rules

KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"


Additional info:
* core/systemd 247.3-1 [installed: 249.4-2] (both kernel 5.14.10, 5.10.70LTS - Manjaro)
* udevadm info -a -n '/dev/dri/card0'

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:02.1/0000:01:00.0/drm/card0':
KERNEL=="card0"
SUBSYSTEM=="drm"
DRIVER==""
ATTR{power/control}=="auto"
ATTR{power/runtime_active_time}=="0"
ATTR{power/runtime_status}=="unsupported"
ATTR{power/runtime_suspended_time}=="0"

looking at parent device '/devices/pci0000:00/0000:00:02.1/0000:01:00.0':
KERNELS=="0000:01:00.0"
SUBSYSTEMS=="pci"
DRIVERS=="amdgpu"
ATTRS{ari_enabled}=="0"
ATTRS{boot_vga}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x030000"
ATTRS{consistent_dma_mask_bits}=="40"
ATTRS{current_link_speed}=="8.0 GT/s PCIe"
ATTRS{current_link_width}=="16"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x6938"
ATTRS{dma_mask_bits}=="40"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{fw_version/asd_fw_version}=="0x00000000"
ATTRS{fw_version/ce_fw_version}=="0x00000089"
ATTRS{fw_version/dmcu_fw_version}=="0x00000000"
ATTRS{fw_version/mc_fw_version}=="0x00c49200"
ATTRS{fw_version/me_fw_version}=="0x000000a4"
ATTRS{fw_version/mec2_fw_version}=="0x000002ce"
ATTRS{fw_version/mec_fw_version}=="0x000002ce"
ATTRS{fw_version/pfp_fw_version}=="0x000000f3"
ATTRS{fw_version/rlc_fw_version}=="0x000000c8"
ATTRS{fw_version/rlc_srlc_fw_version}=="0x00000000"
ATTRS{fw_version/rlc_srlg_fw_version}=="0x00000000"
ATTRS{fw_version/rlc_srls_fw_version}=="0x00000000"
ATTRS{fw_version/sdma2_fw_version}=="0x00000047"
ATTRS{fw_version/sdma_fw_version}=="0x00000047"
ATTRS{fw_version/smc_fw_version}=="0x00110700"
ATTRS{fw_version/sos_fw_version}=="0x00000000"
ATTRS{fw_version/ta_ras_fw_version}=="0x00000000"
ATTRS{fw_version/ta_xgmi_fw_version}=="0x00000000"
ATTRS{fw_version/uvd_fw_version}=="0x01440a00"
ATTRS{fw_version/vce_fw_version}=="0x34080300"
ATTRS{fw_version/vcn_fw_version}=="0x00000000"
ATTRS{gpu_busy_percent}=="0"
ATTRS{irq}=="50"
ATTRS{link/l0s_aspm}=="0"
ATTRS{link/l1_aspm}=="0"
ATTRS{local_cpulist}=="0-3"
ATTRS{local_cpus}=="f"
ATTRS{max_link_speed}=="8.0 GT/s PCIe"
ATTRS{max_link_width}=="16"
ATTRS{mem_busy_percent}=="0"
ATTRS{mem_info_gtt_total}=="4294967296"
ATTRS{mem_info_gtt_used}=="38268928"
ATTRS{mem_info_preempt_used}=="0"
ATTRS{mem_info_vis_vram_total}=="268435456"
ATTRS{mem_info_vis_vram_used}=="65998848"
ATTRS{mem_info_vram_total}=="4294967296"
ATTRS{mem_info_vram_used}=="502460416"
ATTRS{mem_info_vram_vendor}=="unknown"
ATTRS{msi_bus}=="1"
ATTRS{msi_irqs/50}=="msi"
ATTRS{numa_node}=="-1"
ATTRS{pcie_bw}=="1595 208 256"
ATTRS{pcie_replay_count}=="0"
ATTRS{power/autosuspend_delay_ms}=="5000"
ATTRS{power/control}=="on"
ATTRS{power/runtime_active_time}=="627884"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="disabled"
ATTRS{power/wakeup_abort_count}==""
ATTRS{power/wakeup_active}==""
ATTRS{power/wakeup_active_count}==""
ATTRS{power/wakeup_count}==""
ATTRS{power/wakeup_expire_count}==""
ATTRS{power/wakeup_last_time_ms}==""
ATTRS{power/wakeup_max_time_ms}==""
ATTRS{power/wakeup_total_time_ms}==""
ATTRS{power_dpm_force_performance_level}=="high"
ATTRS{power_dpm_state}=="performance"
ATTRS{power_state}=="D0"
ATTRS{pp_cur_state}=="1"
ATTRS{pp_force_state}==""
ATTRS{pp_mclk_od}=="0"
ATTRS{pp_sclk_od}=="0"
ATTRS{product_name}==""
ATTRS{product_number}==""
ATTRS{revision}=="0xf1"
ATTRS{serial_number}==""
ATTRS{subsystem_device}=="0xe308"
ATTRS{subsystem_vendor}=="0x174b"
ATTRS{thermal_throttling_logging}=="0000:01:00.0: thermal throttling logging enabled, with interval 60 seconds"
ATTRS{vbios_version}=="113-4E3081U-X58"
ATTRS{vendor}=="0x1002"

looking at parent device '/devices/pci0000:00/0000:00:02.1':
KERNELS=="0000:00:02.1"
SUBSYSTEMS=="pci"
DRIVERS=="pcieport"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x060400"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{current_link_speed}=="8.0 GT/s PCIe"
ATTRS{current_link_width}=="16"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x1425"
ATTRS{dma_mask_bits}=="32"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="25"
ATTRS{local_cpulist}=="0-3"
ATTRS{local_cpus}=="f"
ATTRS{max_link_speed}=="8.0 GT/s PCIe"
ATTRS{max_link_width}=="16"
ATTRS{msi_bus}=="1"
ATTRS{msi_irqs/25}=="msi"
ATTRS{numa_node}=="-1"
ATTRS{power/autosuspend_delay_ms}=="100"
ATTRS{power/control}=="on"
ATTRS{power/runtime_active_time}=="628902"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="disabled"
ATTRS{power/wakeup_abort_count}==""
ATTRS{power/wakeup_active}==""
ATTRS{power/wakeup_active_count}==""
ATTRS{power/wakeup_count}==""
ATTRS{power/wakeup_expire_count}==""
ATTRS{power/wakeup_last_time_ms}==""
ATTRS{power/wakeup_max_time_ms}==""
ATTRS{power/wakeup_total_time_ms}==""
ATTRS{power_state}=="D0"
ATTRS{revision}=="0x00"
ATTRS{secondary_bus_number}=="1"
ATTRS{subordinate_bus_number}=="1"
ATTRS{subsystem_device}=="0x1234"
ATTRS{subsystem_vendor}=="0x1022"
ATTRS{vendor}=="0x1022"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="0"
ATTRS{power/runtime_status}=="unsupported"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{waiting_for_supplier}=="0"

* suspect udev rule needs update as shown (still doesn't work):
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTRS{power_dpm_force_performance_level}=="high"

* link to upstream bug report, if any: no

Steps to reproduce:
create udev rule, check to see if setting took with commands (interchangeable):

udevadm info -a -n '/dev/dri/card0' | grep -Pi 'power_dpm'
udevadm info --attribute-walk /sys/class/drm/card0 | grep -Pi 'power_dpm'
This task depends upon

Closed by  Andreas Radke (AndyRTR)
Sunday, 21 November 2021, 09:36 GMT
Reason for closing:  No response
Comment by noa body (noabody) - Sunday, 07 November 2021, 15:15 GMT
Always returns:
ATTRS{power_dpm_force_performance_level}=="auto"

...unless using command:
echo 'high' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level

...which was used before taking snapshot of output provided.
Comment by noa body (noabody) - Wednesday, 10 November 2021, 00:55 GMT
Nov 06 09:56:27 user systemd-udevd[300]: card0: /etc/udev/rules.d/30-radeon-pm.rules:1 Failed to write ATTR{/sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/drm/card0/device/power_dpm_force_performance_level}, ignoring: Permission denied
Comment by noa body (noabody) - Wednesday, 10 November 2021, 03:07 GMT
"Permission denied" no longer being logged by journalctl. Renamed rule to /etc/udev/rules.d/30-amdgpu-pm.rules as noted in current wiki:

KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"

Now here's the really odd thing. After logging in I can issue command:

sudo udevadm trigger

The rule triggers and changes the value as expected.
Comment by Andreas Radke (AndyRTR) - Monday, 15 November 2021, 20:06 GMT
This is the Arch Linux tracker. Report this to your distribution tracker.

But assuming Arch Linux is also affected please get in touch with upstream and search for/file some amdgpu drm bug.

Loading...