如何使 amdgpu.ppfeaturemask 与 ubuntu 20.04 的内核 5.4.0 一起工作?

如何使 amdgpu.ppfeaturemask 与 ubuntu 20.04 的内核 5.4.0 一起工作?

amdgpu.ppfeaturemask=0xffffffff我可以通过在 Ubuntu 20.04 的内核 5.8.x 中附加内核参数来解锁调整 AMD GPU 时钟和电压的权限,但不能在内核 5.4 中这样做。为什么内核 5.4 不行?使用内核 5.8,我可以编辑文件/sys/class/drm/card0/device/pp_od_clk_voltage,但使用内核 5.4,我不能,因为文件未解锁,即使使用 root 权限也会被拒绝。我确认每次修改后都会更新 grub。我遵循了以下步骤:https://wiki.archlinux.org/index.php/AMDGPU

Wiki Achlinux:§ 超频自 Linux 4.17 起,可以通过 /sys/class/drm/card0/device/pp_od_clk_voltage 调整显卡的时钟和电压。

我的一些数据:

$ cat /etc/default/grub | grep GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffffff"
$ ls /sys/class/drm/card0/device | grep pp_od
pp_od_clk_voltage
$ cat /sys/class/drm/card0/device/pp_od_clk_voltage
$ uname -a
Linux ASUS-xxx 5.4.0-45-generic #49-Ubuntu SMP Wed Aug 26 13:38:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

答案1

你没有提到哪个 GPU 型号,R9/RX/Vega64/Vega7/等之间存在很多差异,尤其是在 sysfs 的工作方式上

模块选项的内核命令行参数是 caveman technology 将模块选项放在适当的位置,/etc/modprobe.d 文件:

# cat /etc/modprobe.d/amdgpu.conf 
blacklist radeon
blacklist fglrx
options amdgpu si_support=1 cik_support=1 vm_fragment_size=9 audio=0 dc=0 aspm=0 ppfeaturemask=0xffffffff

黑名单是为了确保(对于较旧的卡、SI 和 CIK 系列)较旧的驱动程序不会加载,并且 amdgpu 应该处理它们。例如 R9-390 或 HD7870。您可能只需要 ppfeaturemask,特别是如果您将卡用于显示(dc=0)或想要 HDMI 音频(audio=0)

在创建或更改 modprobe/module 文件时更新 initramfs,因为它会将更改后的 modprobe 配置抓取到图像中,以防 amdgpu 模块提前加载。

为了能够写入控制文件,您必须首先将设置power_dpm_force_performance_levelmanual(默认为自动,这会锁定几乎所有的调整写入)。也许有些型号直到手动模式才会读取设置(?)而 Hawaii 型号甚至根本没有该文件。我从未见过文件存在但为空的情况。

观察 dmesg 中有关 powerplay 的投诉,一些卡 bios 存在错误,新手修改的也存在错误。由于某种原因,它可能无法读取 powerplay 表,这可能导致无声空白输出。使用dmesg -ew &然后在 sysfs 中执行操作应该会喷出任何后台错误,与触发它们的原因大致相同。别忘了 dmesg 在后台,用它恢复,fg然后你可以按 ctrl-c

相关内容