ryzen-7000-series-proxmox icon indicating copy to clipboard operation
ryzen-7000-series-proxmox copied to clipboard

Passthrough of iGPU Audio Controller May Prevent VM from Rebooting

Open ChrisKimZHT opened this issue 7 months ago • 9 comments

My hardware configuration is as follows:

Minisforum MS-A1 AMD Ryzen 7 8700G with Radeon 780M Graphics.

Initially, following common advice found online, I passed through both the iGPU (0000:68:00.0) and its audio controller (0000:68:00.1) to the virtual machine via PCI passthrough. Additionally, I configured the RadeonResetBugFix within the VM. However, I still encountered an issue where the VM could not reboot:

  • The first boot of the VM worked perfectly fine.
  • Once the VM was shut down (including during a restart), it would fail to start again (with a timeout waiting on systemd).
  • Even after the VM was powered off, the memory allocated to it would not be released and remained occupied, even though Proxmox VE (PVE) indicated that the VM was already powered off.

Image

However, to my surprise today, when I removed the passthrough for the iGPU's audio controller (0000:68:00.1), the issue was completely resolved. The VM can now boot and shut down normally, and the memory is properly freed afterward. Therefore, I am sharing my experience here in hopes of helping others who may encounter the same problem.

P.s. It is important to note that if the system is booted via UEFI, both the vbios and AMDGopDriver need to be added to the PCI device. After removing the audio controller, only the iGPU allows the addition of a ROM file. Therefore, it is necessary to merge the vbios and AMDGopDriver into a single ROM file and mount it to the iGPU.

ChrisKimZHT avatar Apr 30 '25 13:04 ChrisKimZHT

"Therefore, it is necessary to merge the vbios and AMDGopDriver into a single ROM file and mount it to the iGPU." How do we do this?

fma965 avatar May 04 '25 09:05 fma965

"Therefore, it is necessary to merge the vbios and AMDGopDriver into a single ROM file and mount it to the iGPU." How do we do this?

I’m using a tool developed by a Bilibili creator, and here’s the download link for it. (https://diyforfun.cn/1058.html) This tool can merge AMDGopDriver.efi and vbios.bin into a single file.

ChrisKimZHT avatar May 05 '25 04:05 ChrisKimZHT

Thanks will give it a try, did you still use the Radeon Reset service? or any other vendor-reset fix?

fma965 avatar May 05 '25 10:05 fma965

Thanks will give it a try, did you still use the Radeon Reset service? or any other vendor-reset fix?

I use https://github.com/inga-lovinde/RadeonResetBugFix

ChrisKimZHT avatar May 05 '25 10:05 ChrisKimZHT

Yeah i ain't running this 😆 without a completely isolated sandbox

Image https://www.virustotal.com/gui/file/7e543a1b39f672c44fb022d89e9a5052c374a211aeb022849382dd2b77bf2649 https://www.hybrid-analysis.com/sample/7e543a1b39f672c44fb022d89e9a5052c374a211aeb022849382dd2b77bf2649

EDIT: ok so i ran it in a sandboxed enviroment and to be fair it did work, without passing through my audio controller and after rebooting 2 times the AMD reset bug didn't happen. I'm now going to try it without the Radeon Reset service and with and without the vendor-reset kernel module (i'm on arch)

EDIT2: Doesn't work without the Radeon Reset service and without vendor-reset, now going to try the vendor-reset with updated dev id's

EDIT3: Doesn't work with vendor-reset set to NAVI10, possible it may work with other modes but most other iGPU's need to be NAVI10, so using RadeonResetBugFix works, i'm specifically using this fork of it since it reduces the delays massively https://github.com/yegor-usoltsev/RadeonResetBugFix/releases

fma965 avatar May 05 '25 10:05 fma965

ok, solved that problem without combining any files I think:

I found in an old thread on the proxmox forum that someone passed all things related to audio to his win11 to make passthrough work at all for him at that time and I just tried that (even if that was nod needed before on my machine):

root@k8plus:~# lspci -nn | grep -e 'Audio' c6:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640] c6:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor [1022:15e2] (rev 63) c6:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller [1022:15e3]

The hostpci0 & 1 were there before, I just neeed to add the hostpci 2 & 3 and it just worked. I also use as machine: pc-q35-9.2+pve1,viommu=virtio

hostpci0: 0000:c6:00.0,pcie=1,romfile=vbios_7xxx.bin,x-vga=1 hostpci1: 0000:c6:00.1,pcie=1,romfile=AMDGopDriver.rom hostpci2: 0000:c6:00.5,pcie=1 hostpci3: 0000:c6:00.6,pcie=1

kobold81 avatar May 11 '25 08:05 kobold81

did you have the reset problem?

pve-noob avatar Sep 11 '25 08:09 pve-noob

ok, solved that problem without combining any files I think:

I found in an old thread on the proxmox forum that someone passed all things related to audio to his win11 to make passthrough work at all for him at that time and I just tried that (even if that was nod needed before on my machine):

root@k8plus:~# lspci -nn | grep -e 'Audio' c6:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640] c6:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor [1022:15e2] (rev 63) c6:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller [1022:15e3]

The hostpci0 & 1 were there before, I just neeed to add the hostpci 2 & 3 and it just worked. I also use as machine: pc-q35-9.2+pve1,viommu=virtio

hostpci0: 0000:c6:00.0,pcie=1,romfile=vbios_7xxx.bin,x-vga=1 hostpci1: 0000:c6:00.1,pcie=1,romfile=AMDGopDriver.rom hostpci2: 0000:c6:00.5,pcie=1 hostpci3: 0000:c6:00.6,pcie=1

Did you have to install the RadeonResetBugFixService.exe in the VM for your solution?

Arrmm avatar Oct 02 '25 22:10 Arrmm

If you want to not use VMs anymore and to use LXCs that dont hang and block with thoose kind of pass-throughs, feel free to checkout my answer here: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/issues/139#issuecomment-3508645552

https://github.com/jammsen/proxmox-setup-scripts - 😎

jammsen avatar Nov 09 '25 18:11 jammsen