Need help to build/install AMD vendor-reset on Proxmox

Hi

I need to install AMD vendor-reset on my Proxmox host. I’m quite new to Linux and have never compiled and built software.

In order to install the vendor-reset I followed this tutorial

Unfortunately I get error messages and the build/install process does not complete. I have no clue how to fix this. Please help. Thank you very much!!!

Below details and logs:

root@gateway:/tmp/vendor-reset/vendor-reset# dkms install .
Creating symlink /var/lib/dkms/vendor-reset/0.1.1/source -> /usr/src/vendor-reset-0.1.1

Sign command: /lib/modules/6.14.11-2-pve/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Building module(s)...(bad exit status: 2)
Failed command:
make -j24 KERNELRELEASE=6.14.11-2-pve KDIR=/lib/modules/6.14.11-2-pve/build

Error! Bad return status for module build on kernel: 6.14.11-2-pve (x86_64)
Consult /var/lib/dkms/vendor-reset/0.1.1/build/make.log for more information.
root@gateway:/tmp/vendor-reset/vendor-reset# 
root@gateway:/tmp/vendor-reset/vendor-reset# cat /var/lib/dkms/vendor-reset/0.1.1/build/make.log
DKMS (dkms-3.2.0) make.log for vendor-reset/0.1.1 for kernel 6.14.11-2-pve (x86_64)
Sun Sep 14 01:03:03 PM CEST 2025

Building module(s)
# command: make -j24 KERNELRELEASE=6.14.11-2-pve KDIR=/lib/modules/6.14.11-2-pve/build
make -C /lib/modules/6.14.11-2-pve/build M=/var/lib/dkms/vendor-reset/0.1.1/build modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.11-2-pve'
make[2]: Entering directory '/var/lib/dkms/vendor-reset/0.1.1/build'
  CC [M]  src/module.o
  CC [M]  src/vendor-reset-dev.o
  CC [M]  src/ioctl.o
  CC [M]  src/ftrace.o
  CC [M]  src/hook.o
  CC [M]  src/amd/common.o
  CC [M]  src/amd/compat.o
  CC [M]  src/amd/firmware.o
  CC [M]  src/amd/navi10.o
  CC [M]  src/amd/polaris10.o
  CC [M]  src/amd/vega10.o
  CC [M]  src/amd/vega20.o
  CC [M]  src/amd/amdgpu/amdgpu_device.o
  CC [M]  src/amd/amdgpu/amdgpu_discovery.o
  CC [M]  src/amd/amdgpu/amdgpu_bios.o
  CC [M]  src/amd/amdgpu/amdgpu_atomfirmware.o
  CC [M]  src/amd/amdgpu/atom.o
  CC [M]  src/amd/amdgpu/common_baco.o
  CC [M]  src/amd/amdgpu/navi10_reg_init.o
  CC [M]  src/amd/amdgpu/navi12_reg_init.o
  CC [M]  src/amd/amdgpu/navi14_reg_init.o
  CC [M]  src/amd/amdgpu/polaris_baco.o
  CC [M]  src/amd/amdgpu/smu7_baco.o
  CC [M]  src/amd/amdgpu/vega10_reg_init.o
  CC [M]  src/amd/amdgpu/vega20_reg_init.o
src/ftrace.c:66:5: warning: no previous prototype for ‘fh_install_hook’ [-Wmissing-prototypes]
   66 | int fh_install_hook(struct ftrace_hook *hook)
      |     ^~~~~~~~~~~~~~~
src/ftrace.c:96:6: warning: no previous prototype for ‘fh_remove_hook’ [-Wmissing-prototypes]
   96 | void fh_remove_hook(struct ftrace_hook *hook)
      |      ^~~~~~~~~~~~~~
src/amd/amdgpu/amdgpu_bios.c:91:6: warning: no previous prototype for ‘amdgpu_read_bios’ [-Wmissing-prototypes]
   91 | bool amdgpu_read_bios(struct amd_fake_dev *adev)
      |      ^~~~~~~~~~~~~~~~
src/amd/amdgpu/amdgpu_bios.c:156:6: warning: no previous prototype for ‘amdgpu_get_bios’ [-Wmissing-prototypes]
  156 | bool amdgpu_get_bios(struct amd_fake_dev *adev)
      |      ^~~~~~~~~~~~~~~
src/amd/amdgpu/vega10_reg_init.c:29:5: warning: no previous prototype for ‘vega10_reg_base_init’ [-Wmissing-prototypes]
   29 | int vega10_reg_base_init(struct amd_fake_dev *adev)
      |     ^~~~~~~~~~~~~~~~~~~~
src/ioctl.c:91:5: warning: no previous prototype for ‘vendor_reset_ioctl_init’ [-Wmissing-prototypes]
   91 | int vendor_reset_ioctl_init(void)
      |     ^~~~~~~~~~~~~~~~~~~~~~~
src/ioctl.c:96:6: warning: no previous prototype for ‘vendor_reset_ioctl_exit’ [-Wmissing-prototypes]
   96 | void vendor_reset_ioctl_exit(void)
      |      ^~~~~~~~~~~~~~~~~~~~~~~
src/amd/firmware.c:40:5: warning: no previous prototype for ‘amdgpu_io_rreg’ [-Wmissing-prototypes]
   40 | u32 amdgpu_io_rreg(struct amd_fake_dev *adev, u32 reg)
      |     ^~~~~~~~~~~~~~
src/amd/firmware.c:60:6: warning: no previous prototype for ‘amdgpu_io_wreg’ [-Wmissing-prototypes]
   60 | void amdgpu_io_wreg(struct amd_fake_dev *adev, u32 reg, u32 v)
      |      ^~~~~~~~~~~~~~
src/amd/amdgpu/atom.c:32:10: fatal error: asm/unaligned.h: No such file or directory
   32 | #include <asm/unaligned.h>
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.
make[4]: *** [/usr/src/linux-headers-6.14.11-2-pve/scripts/Makefile.build:207: src/amd/amdgpu/atom.o] Error 1
make[4]: *** Waiting for unfinished jobs....
src/amd/amdgpu/amdgpu_device.c:47:6: warning: no previous prototype for ‘amdgpu_device_vram_access’ [-Wmissing-prototypes]
   47 | void amdgpu_device_vram_access(struct amd_fake_dev *adev, loff_t pos,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~
src/amd/amdgpu/vega20_reg_init.c:29:5: warning: no previous prototype for ‘vega20_reg_base_init’ [-Wmissing-prototypes]
   29 | int vega20_reg_base_init(struct amd_fake_dev *adev)
      |     ^~~~~~~~~~~~~~~~~~~~
src/amd/vega10.c:96:5: warning: no previous prototype for ‘vega10_baco_set_state’ [-Wmissing-prototypes]
   96 | int vega10_baco_set_state(struct amd_fake_dev *adev, enum BACO_STATE state)
      |     ^~~~~~~~~~~~~~~~~~~~~
make[3]: *** [/usr/src/linux-headers-6.14.11-2-pve/Makefile:1997: .] Error 2
make[2]: *** [/usr/src/linux-headers-6.14.11-2-pve/Makefile:251: __sub-make] Error 2
make[2]: Leaving directory '/var/lib/dkms/vendor-reset/0.1.1/build'
make[1]: *** [Makefile:251: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.14.11-2-pve'
make: *** [Makefile:8: build] Error 2

# exit code: 2
# elapsed time: 00:00:02
----------------------------------------------------------------
root@gateway:/tmp/vendor-reset/vendor-reset# 

I had to change the following:

nano ./src/amd/amdgpu/atom.c

//#include <asm/unaligned.h>
#include <linux/unaligned.h>

save and run

dkms remove -m vendor-reset -v 0.1.1 --all
dkms install .

dkms status

root@gateway:/tmp/vendor-reset/vendor-reset# dkms status
vendor-reset/0.1.1, 6.14.11-2-pve, x86_64: installed
root@gateway:/tmp/vendor-reset/vendor-reset# 
2 Likes

Next issue. According to this post, It seems I have to change the reset method of my igpu.

however this fails:

root@gateway:~# echo "device_specific" > /sys/bus/pci/devices/0000\:c5\:00.0/reset_method 
-bash: echo: write error: Invalid argument
root@gateway:~# echo "device_specific" > /sys/bus/pci/devices/0000\:c5\:00.1/reset_method 
-bash: echo: write error: Invalid argument
root@gateway:~# cat /sys/bus/pci/devices/0000\:c5\:00.0/reset_method 
pm bus
root@gateway:~# cat /sys/bus/pci/devices/0000\:c5\:00.1/reset_method 
pm
root@gateway:~# 

my igpu (incl the audio) is bound to vfio and I have blacklisted its drivers

root@gateway:~# cat /etc/modprobe.d/blacklist.conf 
blacklist amdgpu
blacklist radeon
root@gateway:~# lspci -nnk
...
c5:00.0 Display controller [0380]: Advanced Micro Devices, Inc. [AMD/ATI] Strix [Radeon 880M / 890M] [1002:150e] (rev c1)
        Subsystem: Device [1f4c:b020]
        Kernel driver in use: vfio-pci
        Kernel modules: amdgpu
c5:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller [Rembrandt/Strix] [1002:1640]
        Subsystem: Device [1f4c:b020]
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel
...
root@gateway:~# 

How do I have to do this? Thank you!

I found this and this. Unfortunately I still get the same error:

Sep 14 21:25:33 gateway systemd[1]: Started vreset.service - AMD GPU reset method to 'device_specific'.
Sep 14 21:25:33 gateway bash[2571]: /usr/bin/bash: line 1: echo: write error: Invalid argument
Sep 14 21:25:33 gateway kernel: vfio-pci 0000:c5:00.0: Unsupported reset method 'device_specific'
Sep 14 21:25:33 gateway systemd[1]: vreset.service: Main process exited, code=exited, status=1/FAILURE
Sep 14 21:25:33 gateway systemd[1]: vreset.service: Failed with result 'exit-code'.

vendor-reset is loaded:

root@gateway:~# dmesg | grep vendor_reset
[    3.398403] vendor_reset: loading out-of-tree module taints kernel.
[    3.398407] vendor_reset: module verification failed: signature and/or required key missing - tainting kernel
[    3.426588] vendor_reset_hook: installed
root@gateway:~# 

but produces the same error:

root@gateway:~# systemctl status vreset.service
× vreset.service - AMD GPU reset method to 'device_specific'
     Loaded: loaded (/etc/systemd/system/vreset.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2025-09-14 21:25:33 CEST; 10h ago
   Duration: 28ms
 Invocation: 7bdb5094ad924146b4e7e76aa62a360d
    Process: 2571 ExecStart=/usr/bin/bash -c echo device_specific > /sys/bus/pci/devices/0000:c5:00.0/reset_method (code=exited, status=1/FAILURE)
   Main PID: 2571 (code=exited, status=1/FAILURE)
   Mem peak: 1.7M
        CPU: 5ms

Sep 14 21:25:33 gateway systemd[1]: Started vreset.service - AMD GPU reset method to 'device_specific'.
Sep 14 21:25:33 gateway bash[2571]: /usr/bin/bash: line 1: echo: write error: Invalid argument
Sep 14 21:25:33 gateway systemd[1]: vreset.service: Main process exited, code=exited, status=1/FAILURE
Sep 14 21:25:33 gateway systemd[1]: vreset.service: Failed with result 'exit-code'.
root@gateway:~# 

According to AI this is because of a kernel limitation. It tells me that I only have a limited proxmox-kernel installed and that I should upgrade to the full proxmox-kernel. However I’m not so sure this is the case. So far I could not find more information about this.

Please help. Thank you.

Well it looks like AI was hallucinating.

Gnif’s vendor_reset simply does not support Strix-Point APUs.