AMD iGPU passthrough won't work

something like this is what you want to see on the host when you run
dmesg | grep amdgpu

[ 5.084765] amdgpu 0000:06:00.0: enabling device (0006 -> 0007)
[ 5.087448] amdgpu 0000:06:00.0: amdgpu: Fetched VBIOS from VFCT
[ 5.087458] amdgpu: ATOM BIOS: 113-CEZANNE-017

ATOM BIOS: *****

And then other signs like that the driver is properly loaded in the lspci -k output

Only then it is a good time to embark on trying to pass it through
Right, I’ll do a fresh install later, I’m gonna back up my samba vm and then reinstall and I’ll be in touch
 
My write-up on iGPU passthrough for Ryzen 5700U. Should apply to your 5800H as well. Been playing Halo Infinite the past 3 weeks with iGPU passthrough working great. Tested on Ryzen 5700U and 7735HS. The github repo link has everything you need, as well as the correct instructions for configuration. The repo doesn't have the 5800H VBIOS so you'll need to use the instructions for vbios.c to extract the VBIOS yourself.

https://forum.proxmox.com/threads/amd-ryzen-5700u-7735hs-igpu-passthrough-windows-11.142811/
 
Last edited:
  • Like
Reactions: leesteken
I think I have blacklisted the amdgpu driver, I’ve not been able to get hold of a vbios for my motherboard. As i tried saving one in gpu-z and it said it not found. But is there any advice u can give on how to get it working.

See my post above this reply. The github repo link has a vbios.c file that you can use to extract the VBIOS for your Ryzen iGPU.
 
something like this is what you want to see on the host when you run
dmesg | grep amdgpu

[ 5.084765] amdgpu 0000:06:00.0: enabling device (0006 -> 0007)
[ 5.087448] amdgpu 0000:06:00.0: amdgpu: Fetched VBIOS from VFCT
[ 5.087458] amdgpu: ATOM BIOS: 113-CEZANNE-017

ATOM BIOS: *****

And then other signs like that the driver is properly loaded in the lspci -k output

Only then it is a good time to embark on trying to pass it through

@diversity are u still around???, here's my output of dmesg | grep amdgpu after a fresh install:
 

Attachments

  • Screenshot_20240412_001143.png
    Screenshot_20240412_001143.png
    242.7 KB · Views: 34
@diversity are u still around???, here's my output of dmesg | grep amdgpu after a fresh install:

From the github instructions...

Make sure you've performed steps 1 through 4 first to ensure the kernel loads the vfio modules.

5. Load the vfio-pci driver before the original one. This prevents the host from using the GPU and allows for virtualization. These are the default AMD + Sound drivers, but you can find the ones your system is using by running lspci -nnk and checking the "Kernel driver in Use" section.

Code:
echo "softdep radeon pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
echo "softdep amdgpu pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
echo "softdep snd_hda_intel pre: vfio-pci" >> /etc/modprobe.d/vfio.conf

6. Refresh the kernel modules and restart:

Code:
update-initramfs -u -k all
shutdown -r now

7. After the restart, validate that the Kernel driver in Use for these PCI devices is vfio-pci now, with:

Code:
lspci -nnk


This is an example of what my /etc/modprobe.d/vfio.conf looks like. The first line of your vfio.conf will probably be different based on how your computer detects hardware devices.

Code:
options vfio-pci ids=1002:1681,1002:1640
softdep radeon pre: vfio-pci
softdep amdgpu pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci
 
Last edited:
From the github instructions...

Make sure you've performed steps 1 through 4 first to ensure the kernel loads the vfio modules.

5. Load the vfio-pci driver before the original one. This prevents the host from using the GPU and allows for virtualization. These are the default AMD + Sound drivers, but you can find the ones your system is using by running lspci -nnk and checking the "Kernel driver in Use" section.

Code:
echo "softdep radeon pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
echo "softdep amdgpu pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
echo "softdep snd_hda_intel pre: vfio-pci" >> /etc/modprobe.d/vfio.conf

6. Refresh the kernel modules and restart:

Code:
update-initramfs -u -k all
shutdown -r now

7. After the restart, validate that the Kernel driver in Use for these PCI devices is vfio-pci now, with:

Code:
lspci -nnk


This is an example of what my /etc/modprobe.d/vfio.conf looks like. The first line of your vfio.conf will probably be different based on how your computer detects hardware devices.

Code:
options vfio-pci ids=1002:1681,1002:1640
softdep radeon pre: vfio-pci
softdep amdgpu pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci
@jeenam I followed that GitHub tutorial before and it didn’t work

@diversity are you still around
 
Last edited:
@jeenam I followed that GitHub tutorial before and it didn’t work

@diversity are you still around

The dmesg output shows the amdgpu driver i
I just uploaded the correct ROM file. You can find it on github here.

There are instructions on the github page that I linked with a small program called vbios.c that will extract the VBIOS. All that's needed is the build-essential package from the apt repo to compile. Same result. Much less work.
 
Last edited:
Will this work with Docker? I just picked up an AceMagic that has the AMD Ryzen 7 5800U. I'm planning on using OPNsense along with a Plex server or Jellyfin server (ideally i can try one or the other not trying to run both at the same time) and want to use the iGPU for transcoding. However, I'm not sure if it would be better to run them in Docker containers or as VMs, and what the best way to get the iGPU to them would be. Has anyone done something like this? Is it possible to split the IGPU?

The guide at https://github.com/isc30/ryzen-7000-series-proxmox should help make the iGPU available, but I'm not sure of the best approach to get it working with Docker or a VM. Any thoughts or advice would be sincerly aprecciated.
 
Last edited:
My write-up on iGPU passthrough for Ryzen 5700U. Should apply to your 5800H as well. Been playing Halo Infinite the past 3 weeks with iGPU passthrough working great. Tested on Ryzen 5700U and 7735HS. The github repo link has everything you need, as well as the correct instructions for configuration. The repo doesn't have the 5800H VBIOS so you'll need to use the instructions for vbios.c to extract the VBIOS yourself.

https://forum.proxmox.com/threads/amd-ryzen-5700u-7735hs-igpu-passthrough-windows-11.142811/
I followed your guide to the t including extracting the exact vbios etc. Still get Code 43 from Windows 11. So annoying. Is there anyway to figure out what is causing the error such that I can go from there?
 
may I please offer completely useless unrequested advice?

I can't help my self so I will just do it :)

Windows 11? in 2025 while we have so many better alternatives in the meantime?

hahah

But nah I'll be honest.
I still have 2 windows server VMs as the software I need that is running on it I can't get to work using wine/bottles on linux :( So I guess we all have our reasons to want (or perhaps better worded are forced) to still work with the devil :(
 
Last edited:
@diversity Windows 11 iot LTSC with WSLv2 is a nice combo. Best remote desktop experience by far and you can run almost all software ever made. I hate what is happening to windows as well but the LTSC ones are solid. That being said, I did install a ubuntu 22.04 VM on the same ProxMox server today and managed to pass the card through. So it appears to be a windows driver issue of some sort. However, when RDPing into the Ubuntu instance with pass through enabled the UI actually performs worse! The mouse lags and sometimes leaves a trail. Any ideas on both fronts?
 
UPDATE I got it working on Windows and Ubuntu. Please check the end of this thread for how.


basically even new AMD CPUs still require setting up all the kernel parameters to split up each device into its own iommugroup! Yes!
 
  • Like
Reactions: diversity