Proxmox GPU Passthrough stopped working and dpkg problems

Mar 18, 2022
46
1
13
32
Hello, to all Proxmox fans,
I use a pve host with the following hardware:
Intel i5 10400
Asrock b460m Pro 4
64GB Corsair DDR4 RAM
4 SSD hard disks
2 HDD hard disks
AMD RX 570 from ASUS including vendor reset

Now it stopped working for my Linux VM, but in Windows 10 VM it worked perfect.
I want to try with new kernel but cant install them always dpkg error like :

Code:
apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following package was automatically installed and is no longer required:
  proxmox-headers-6.8.12-5-pve
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  proxmox-kernel-6.8 proxmox-kernel-6.8.12-7-pve-signed
The following packages will be REMOVED:
  proxmox-kernel-6.11.0-2-pve-signed proxmox-kernel-6.8.12-6-pve-signed
The following NEW packages will be installed:
  proxmox-kernel-6.8.12-7-pve-signed
The following packages will be upgraded:
  proxmox-kernel-6.8
1 upgraded, 1 newly installed, 2 to remove and 11 not upgraded.
3 not fully installed or removed.
Need to get 0 B/103 MB of archives.
After this operation, 595 MB disk space will be freed.
Do you want to continue? [Y/n] Y
Reading changelogs... Done
(Reading database ... 214323 files and directories currently installed.)
Removing proxmox-kernel-6.11.0-2-pve-signed (6.11.0-2) ...
Examining /etc/kernel/postrm.d.
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 6.11.0-2-pve /boot/vmlinuz-6.11.0-2-pve
update-initramfs: Deleting /boot/initrd.img-6.11.0-2-pve
run-parts: executing /etc/kernel/postrm.d/proxmox-auto-removal 6.11.0-2-pve /boot/vmlinuz-6.11.0-2-pve
run-parts: executing /etc/kernel/postrm.d/zz-proxmox-boot 6.11.0-2-pve /boot/vmlinuz-6.11.0-2-pve
Re-executing '/etc/kernel/postrm.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 6.11.0-2-pve /boot/vmlinuz-6.11.0-2-pve
/usr/sbin/grub-mkconfig: 9: /etc/default/grub: quiet: not found
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 127
Failed to process /etc/kernel/postrm.d at /var/lib/dpkg/info/proxmox-kernel-6.11.0-2-pve-signed.postrm line 15.
dpkg: error processing package proxmox-kernel-6.11.0-2-pve-signed (--remove):
 installed proxmox-kernel-6.11.0-2-pve-signed package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
 proxmox-kernel-6.11.0-2-pve-signed
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

My pve package versions:

Code:
proxmox-ve: 8.3.0 (running kernel: 6.8.12-4-pve)
pve-manager: 8.3.2 (running version: 8.3.2/3e76eec21c4a14a7)
proxmox-kernel-helper: 8.1.0
pve-kernel-5.15: 7.4-13
proxmox-kernel-6.8.12-5-pve-signed: 6.8.12-5
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
pve-kernel-5.15.152-1-pve: 5.15.152-1
pve-kernel-5.15.102-1-pve: 5.15.102-1
ceph-fuse: 16.2.15+ds-0+deb12u1
corosync: 3.1.7-pve3
criu: 3.17.1-2+deb12u1
dnsmasq: 2.90-4~deb12u1
glusterfs-client: 10.3-5
ifupdown2: 3.2.0-1+pmx11
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libknet1: 1.28-pve1
libproxmox-acme-perl: 1.5.1
libproxmox-backup-qemu0: 1.4.1
libproxmox-rs-perl: 0.3.4
libpve-access-control: 8.2.0
libpve-apiclient-perl: 3.3.2
libpve-cluster-api-perl: 8.0.10
libpve-cluster-perl: 8.0.10
libpve-common-perl: 8.2.9
libpve-guest-common-perl: 5.1.6
libpve-http-server-perl: 5.1.2
libpve-network-perl: 0.10.0
libpve-rs-perl: 0.9.1
libpve-storage-perl: 8.3.3
libspice-server1: 0.15.1-1
lvm2: 2.03.16-2
lxc-pve: 6.0.0-1
lxcfs: 6.0.0-pve2
novnc-pve: 1.5.0-1
proxmox-backup-client: 3.3.2-1
proxmox-backup-file-restore: 3.3.2-2
proxmox-firewall: 0.6.0
proxmox-kernel-helper: 8.1.0
proxmox-mail-forward: 0.3.1
proxmox-mini-journalreader: 1.4.0
proxmox-widget-toolkit: 4.3.3
pve-cluster: 8.0.10
pve-container: 5.2.3
pve-docs: 8.3.1
pve-edk2-firmware: 4.2023.08-4
pve-esxi-import-tools: 0.7.2
pve-firewall: 5.1.0
pve-firmware: 3.14-2
pve-ha-manager: 4.0.6
pve-i18n: 3.3.3
pve-qemu-kvm: 9.0.2-4
pve-xtermjs: 5.3.0-3
qemu-server: 8.3.3
smartmontools: 7.3-pve1
spiceterm: 3.3.0
swtpm: 0.8.0+pve1
vncterm: 1.8.0
zfsutils-linux: 2.2.6-pve1

my Linux VM conf

Code:
agent: 1
bios: ovmf
boot: order=sata0
cores: 6
cpu: host
efidisk0: iso:1005/vm-1005-disk-0.qcow2,efitype=4m,size=528K
hostpci0: 0000:01:00,pcie=1
ide2: none,media=cdrom
machine: pc-q35-6.2
memory: 16384
meta: creation-qemu=9.0.2,ctime=1736421395
name: manjaroxfcemain
net0: virtio=BC:24:11:AB:4F:FD,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
sata0: /dev/disk/by-id/ata-Samsung_SSD_850_EVO_500GB_S21JNXAG682773P,size=488386584K
scsi0: /dev/disk/by-id/nvme-WDS500G3X0C-00SJG0_210767802900,size=488386584K
scsihw: virtio-scsi-single
smbios1: uuid=25e17909-e612-4c26-8c3b-dc477cd09605
sockets: 1
vga: none
vmgenid: 83792061-6fc3-4083-b6a5-1286ef1bc13c

Any help or workaround for this?
 
Last edited:
Code:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=intel_iommu=on "quiet"
GRUB_CMDLINE_LINUX=""

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
 
Also, you don't need intel_iommu=on anymore since Proxmox kernel version 6.8. GRUB_CMDLINE_LINUX_DEFAULT="quiet" should work the same.
Ok thx for that i will give them a try . I changed grub like this and Ioomu worked without intel_iommu=on, but only windows vm got a picture. My Linux VM stays black screen. iam going to update kernel now to 6.8.12-7-pve-signed.
Cant install vendor-reset always get
Code:
modprobe vendor-reset
modprobe: FATAL: Module vendor-reset not found in directory /lib/modules/6.8.12-7-pve

Can anyone help me with older kernel got same error. Im getting back to 6.8.12-4 now vendor reset is working but always black screen for my linux vm. Windows VM works always

On Linux VM always get

Code:
bash: /sys/bus/pci/devices/0000:01:00.1/reset_method: Permission denied

vendor-reset works only half device not resetting audio from gpu but why?

Code:
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x24238
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: Performing BACO reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
 
Last edited:
sporadically i can get a picture of login screen, but after shutdown the vm i cant get picture anymore but vendor-reset still there
 
On Linux VM always get

bash: /sys/bus/pci/devices/0000:01:00.1/reset_method: Permission denied
You should (only) write device_specific to the VGA function: /sys/bus/pci/devices/0000:01:00.0/reset_method . It won't work on the audio function (01:00.1).
Did you make sure to early bind the audio function to vfio-pci (instead of snd_hda_intel)?

Code:
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x24238
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: Performing BACO reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jan 19 16:44:29 pve kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
This looks fine for a RX570.

I also experienced problems with passthrough of my RX570 on some recent kernel version and was not able to fix it. Early binding the VGA function to vfio-pci was a work-around but this has the side effect of not having a Proxmox host console before starting the VM. I think it was cause by the amdgpu Linux driver crashing. I replaced the RX570 with a RX590 and the problem went away.
Maybe the amdgpu driver inside your Linux VM is crashing? Try an earlier Linux kernel inside your VM.
 
Nope Kernel in VM changed to 6.6 and 6.1 but only works twice after that black screen again. Should I downgrade or update my proxmox kernel?
 
Thats always the error but picture coming sometimes and I keep an eye of cpu usage after start VM. When it showes more than 40% then get picture otherwise screen still black

Code:
()
kvm: vfio: Cannot reset device 0000:01:00.1, no available reset mechanism.
kvm: vfio: Cannot reset device 0000:01:00.1, no available reset mechanism.
TASK OK

The only difference between Linux VM and Windows VM is Storage Drive on Windows is direct on Proxmox and other is passthrough SSD to Linux VM. Could this the problem
 
Last edited:
On My System everything is Working Correct and fast.
I Hope this Help for this Topic.

My Grub Options look Like:
Code:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=off net.ifnames=0 biosdevname=0 intel_iommu=on iommu=pt video=efifb:off mitigations=off nopti nospectre_v1 nospectre_v2 noibrs noibpb nospec_store_bypass_disable no_stf_barrier l1tf=off mds=off usbcore.autosuspend=-1"
GRUB_CMDLINE_LINUX="fsck.mode=force fsck.repair=yes ipv6.disable=1"

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

My PVE System @Home:
1737421005216.png

I Dont Use the Default PVE Kernel, i use the XanMOD latest LTS Kernel. I Have a Dedicated Graphicscard too: nVidia GTX 1060 ~3GB

Package Versions
Code:
proxmox-ve: 8.3.0 (running kernel: 6.6.72-x64v3-xanmod1)
pve-manager: 8.3.3 (running version: 8.3.3/f157a38b211595d6)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.8: 6.8.12-7
proxmox-kernel-6.8.12-7-pve-signed: 6.8.12-7
ceph-fuse: 16.2.15+ds-0+deb12u1
corosync: 3.1.7-pve3
criu: 3.17.1-2+deb12u1
glusterfs-client: 10.3-5
ifupdown: not correctly installed
ifupdown2: 3.2.0-1+pmx11
intel-microcode: 3.20241112.1~deb12u1
libjs-extjs: 7.0.0-5
libknet1: 1.28-pve1
libproxmox-acme-perl: 1.5.1
libproxmox-backup-qemu0: 1.4.1
libproxmox-rs-perl: 0.3.4
libpve-access-control: 8.2.0
libpve-apiclient-perl: 3.3.2
libpve-cluster-api-perl: 8.0.10
libpve-cluster-perl: 8.0.10
libpve-common-perl: 8.2.9
libpve-guest-common-perl: 5.1.6
libpve-http-server-perl: 5.1.2
libpve-network-perl: 0.10.0
libpve-rs-perl: 0.9.1
libpve-storage-perl: 8.3.3
libspice-server1: 0.15.1-1
lvm2: 2.03.16-2
lxc-pve: 6.0.0-1
lxcfs: 6.0.0-pve2
novnc-pve: 1.5.0-1
proxmox-backup-client: 3.3.2-1
proxmox-backup-file-restore: 3.3.2-2
proxmox-firewall: 0.6.0
proxmox-kernel-helper: 8.1.0
proxmox-mail-forward: 0.3.1
proxmox-mini-journalreader: 1.4.0
proxmox-offline-mirror-helper: 0.6.7
proxmox-widget-toolkit: 4.3.4
pve-cluster: 8.0.10
pve-container: 5.2.3
pve-docs: 8.3.1
pve-edk2-firmware: 4.2023.08-4
pve-esxi-import-tools: 0.7.2
pve-firewall: 5.1.0
pve-firmware: 3.14-3
pve-ha-manager: 4.0.6
pve-i18n: 3.3.3
pve-qemu-kvm: 9.0.2-4
pve-xtermjs: 5.3.0-3
qemu-server: 8.3.6
smartmontools: 7.3-pve1
spiceterm: 3.3.0
swtpm: 0.8.0+pve1
vncterm: 1.8.0
zfsutils-linux: 2.2.7-pve1

Active Machines:
1737423591944.png
 
Last edited:
When Iam shutdown the VM and restart them serveral times after fourth starts its working. But why I need to do this so often. Actualli use kernel 6.5.13-2pve
 
On My System everything is Working Correct and fast.
I Hope this Help for this Topic.

My Grub Options look Like:
Code:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=off net.ifnames=0 biosdevname=0 intel_iommu=on iommu=pt video=efifb:off mitigations=off nopti nospectre_v1 nospectre_v2 noibrs noibpb nospec_store_bypass_disable no_stf_barrier l1tf=off mds=off usbcore.autosuspend=-1"
GRUB_CMDLINE_LINUX="fsck.mode=force fsck.repair=yes ipv6.disable=1"

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

My PVE System @Home:
View attachment 81073

I Dont Use the Default PVE Kernel, i use the XanMOD latest LTS Kernel. I Have a Dedicated Graphicscard too: nVidia GTX 1060 ~3GB

Package Versions
Code:
proxmox-ve: 8.3.0 (running kernel: 6.6.72-x64v3-xanmod1)
pve-manager: 8.3.3 (running version: 8.3.3/f157a38b211595d6)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.8: 6.8.12-7
proxmox-kernel-6.8.12-7-pve-signed: 6.8.12-7
ceph-fuse: 16.2.15+ds-0+deb12u1
corosync: 3.1.7-pve3
criu: 3.17.1-2+deb12u1
glusterfs-client: 10.3-5
ifupdown: not correctly installed
ifupdown2: 3.2.0-1+pmx11
intel-microcode: 3.20241112.1~deb12u1
libjs-extjs: 7.0.0-5
libknet1: 1.28-pve1
libproxmox-acme-perl: 1.5.1
libproxmox-backup-qemu0: 1.4.1
libproxmox-rs-perl: 0.3.4
libpve-access-control: 8.2.0
libpve-apiclient-perl: 3.3.2
libpve-cluster-api-perl: 8.0.10
libpve-cluster-perl: 8.0.10
libpve-common-perl: 8.2.9
libpve-guest-common-perl: 5.1.6
libpve-http-server-perl: 5.1.2
libpve-network-perl: 0.10.0
libpve-rs-perl: 0.9.1
libpve-storage-perl: 8.3.3
libspice-server1: 0.15.1-1
lvm2: 2.03.16-2
lxc-pve: 6.0.0-1
lxcfs: 6.0.0-pve2
novnc-pve: 1.5.0-1
proxmox-backup-client: 3.3.2-1
proxmox-backup-file-restore: 3.3.2-2
proxmox-firewall: 0.6.0
proxmox-kernel-helper: 8.1.0
proxmox-mail-forward: 0.3.1
proxmox-mini-journalreader: 1.4.0
proxmox-offline-mirror-helper: 0.6.7
proxmox-widget-toolkit: 4.3.4
pve-cluster: 8.0.10
pve-container: 5.2.3
pve-docs: 8.3.1
pve-edk2-firmware: 4.2023.08-4
pve-esxi-import-tools: 0.7.2
pve-firewall: 5.1.0
pve-firmware: 3.14-3
pve-ha-manager: 4.0.6
pve-i18n: 3.3.3
pve-qemu-kvm: 9.0.2-4
pve-xtermjs: 5.3.0-3
qemu-server: 8.3.6
smartmontools: 7.3-pve1
spiceterm: 3.3.0
swtpm: 0.8.0+pve1
vncterm: 1.8.0
zfsutils-linux: 2.2.7-pve1

Active Machines:
View attachment 81074
where can i get this special kernel?
 
Ok I`ve tried mapping but same issue again black screen. Only after 3 times Start&Shutdown of my Linux VM it come up with picture from my ASUS RX 570
I` ve tried internal or external storage but always same issue!
Is this kernel compatible with amd vendor-reset?.
 
Last edited: