Hello all,
i am getting a little frustrated trying the passthrough the iGPU of my Ryzen 7 9800X3D to one of my VM's.
Kernel (pve-headers installed): Linux deb 6.11.11-1-pve #1 SMP PREEMPT_DYNAMIC PMX 6.11.11-1 (2025-01-17T15:44Z) x86_64 GNU/Linux
Processor: AMD Ryzen 7 9800X3D
Mainboard: Gigabyte X870E
Both devices are separated in its own iommugroup which has no other devices in it, so no conflicts. I have no problem passing through dedicated GPUs (Nvidia and AMD).
VM configuration:
agent: 1
args: -cpu 'host,-hypervisor,kvm=off'
bios: ovmf
boot: order=scsi0;ide0;net0
cores: 8
cpu: host
hostpci0: 0000:7c:00.0,pcie=1,romfile=vbios_1002_13c0.bin <- tried my own dump as well as the github repo and none at all
hostpci1: 0000:7c:00.1,pcie=1
efidisk0: local:123/vm-123-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
machine: pc-q35-9.2
memory: 8192
meta: creation-qemu=9.2.0,ctime=1234
name: iGPUTest
net0: virtio=AA:BB:CC
D:EE:FF,bridge=vmbr5,firewall=1
numa: 0
ostype: win10
scsi0: local:123/vm-123-disk-1.qcow2,iothread=1,size=50G
scsihw: virtio-scsi-single
smbios1: uuid=aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa
sockets: 1
vmgenid: aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa
dmesg |grep -e DMAR -e IOMMU -e AMD-Vi
[ 0.159159] AMD-Vi: Using global IVHD EFR:0x246577efa2254afa, EFR2:0x0
dmesg | grep 'remapping'
[ 0.480650] AMD-Vi: Interrupt remapping enabled
dmesg | grep -i vfio
[ 11.129426] VFIO - User Level meta-driver version: 0.3
[ 11.146535] vfio-pci 0000:7c:00.0: vgaarb: deactivate vga console
[ 11.146537] vfio-pci 0000:7c:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem
wns=none
[ 11.146643] vfio_pci: add [1002:13c0[ffffffff:ffffffff]] class 0x000000/00000000
[ 11.170511] vfio_pci: add [1002:1640[ffffffff:ffffffff]] class 0x000000/00000000
[ 129.110782] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem
wns=none
[ 129.182108] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem
wns=none
[ 129.182253] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem
wns=none
[ 130.559031] vfio-pci 0000:03:00.0: enabling device (0002 -> 0003)
[ 130.579019] vfio-pci 0000:03:00.1: enabling device (0000 -> 0002)
lspci -nnk (Host)
7c:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] [1002:13c0] (rev cb)
Subsystem: Gigabyte Technology Co., Ltd Granite Ridge [Radeon Graphics] [1458:d000]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
7c:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
I also tried following https://github.com/isc30/ryzen-gpu-passthrough-proxmox by either dumping the vbios myself or using the 9800x3d.bin which the repo provides - or using none at all.
Within Linux, i have tried multiple kernels, and Windows the device is being detected by either lspci or AMD Adrenaline during install.
However, whenever i try to probe the driver (Linux) or to open the Adrenaline App (Windows), both show errors. To be fair, it has worked ONCE on Linux (iGPU listed in /dev/dri*), but never after. Had problems before that as well. Must have been pure luck.
Installing the official AMD drivers on Linux did not help either.
Debian 12 (6.12.12+bpo-amd64) during boot:
shpchp 0000:05:04.0: pci_hp_register failed with error -16
shpchp 0000:05:04.0: Slot initialization failed
snd_hda_intel 0000:00:1b.0: no codecs found!
Debian 12 (6.12.12+bpo-amd64) probing amdgpu:
amdgpu 0000:01:00.0: amdgpu: Failed to load toc
amdgpu 0000:01:00.0: amdgpu: PSP tmr init failed!
amdgpu 0000:01:00.0: amdgpu: PSP firmware loading failed
andgpu_device_fw_loading [amdgpu] *ERROR* hw_init of IP block ‹psp> failed -22
amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_init failed
amdgpu 0000:01:00.0: amdgpu: Fatal error during GPU init
andgpu 0000:01:00.0: probe with driver andgou failed with error -22
Interestingly the sound device seems to be working!
lspci -nnk (VM)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] [1002:13c0] (rev cb)
Subsystem: Gigabyte Technology Co., Ltd Granite Ridge [Radeon Graphics] [1458:d000]
Kernel modules: amdgpu
02:00.0 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
At last, i am suffering the reset bug although using the vendor reset service/ module (Windows VM/ Linux Host). My Host won't reboot proplery (hangs). I must power cycle.
Checking https://linux-hardware.org/?id=pci:1002-13c0-1043-8877 i am not sure if it should be working.
Any help is appreciated, thanks!!!
i am getting a little frustrated trying the passthrough the iGPU of my Ryzen 7 9800X3D to one of my VM's.
Kernel (pve-headers installed): Linux deb 6.11.11-1-pve #1 SMP PREEMPT_DYNAMIC PMX 6.11.11-1 (2025-01-17T15:44Z) x86_64 GNU/Linux
Processor: AMD Ryzen 7 9800X3D
Mainboard: Gigabyte X870E
Both devices are separated in its own iommugroup which has no other devices in it, so no conflicts. I have no problem passing through dedicated GPUs (Nvidia and AMD).
VM configuration:
agent: 1
args: -cpu 'host,-hypervisor,kvm=off'
bios: ovmf
boot: order=scsi0;ide0;net0
cores: 8
cpu: host
hostpci0: 0000:7c:00.0,pcie=1,romfile=vbios_1002_13c0.bin <- tried my own dump as well as the github repo and none at all
hostpci1: 0000:7c:00.1,pcie=1
efidisk0: local:123/vm-123-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
machine: pc-q35-9.2
memory: 8192
meta: creation-qemu=9.2.0,ctime=1234
name: iGPUTest
net0: virtio=AA:BB:CC

numa: 0
ostype: win10
scsi0: local:123/vm-123-disk-1.qcow2,iothread=1,size=50G
scsihw: virtio-scsi-single
smbios1: uuid=aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa
sockets: 1
vmgenid: aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa-aaaaaaa
dmesg |grep -e DMAR -e IOMMU -e AMD-Vi
[ 0.159159] AMD-Vi: Using global IVHD EFR:0x246577efa2254afa, EFR2:0x0
dmesg | grep 'remapping'
[ 0.480650] AMD-Vi: Interrupt remapping enabled
dmesg | grep -i vfio
[ 11.129426] VFIO - User Level meta-driver version: 0.3
[ 11.146535] vfio-pci 0000:7c:00.0: vgaarb: deactivate vga console
[ 11.146537] vfio-pci 0000:7c:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem

[ 11.146643] vfio_pci: add [1002:13c0[ffffffff:ffffffff]] class 0x000000/00000000
[ 11.170511] vfio_pci: add [1002:1640[ffffffff:ffffffff]] class 0x000000/00000000
[ 129.110782] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem

[ 129.182108] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem

[ 129.182253] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem

[ 130.559031] vfio-pci 0000:03:00.0: enabling device (0002 -> 0003)
[ 130.579019] vfio-pci 0000:03:00.1: enabling device (0000 -> 0002)
lspci -nnk (Host)
7c:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] [1002:13c0] (rev cb)
Subsystem: Gigabyte Technology Co., Ltd Granite Ridge [Radeon Graphics] [1458:d000]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
7c:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
I also tried following https://github.com/isc30/ryzen-gpu-passthrough-proxmox by either dumping the vbios myself or using the 9800x3d.bin which the repo provides - or using none at all.
Within Linux, i have tried multiple kernels, and Windows the device is being detected by either lspci or AMD Adrenaline during install.
However, whenever i try to probe the driver (Linux) or to open the Adrenaline App (Windows), both show errors. To be fair, it has worked ONCE on Linux (iGPU listed in /dev/dri*), but never after. Had problems before that as well. Must have been pure luck.
Installing the official AMD drivers on Linux did not help either.
Debian 12 (6.12.12+bpo-amd64) during boot:
shpchp 0000:05:04.0: pci_hp_register failed with error -16
shpchp 0000:05:04.0: Slot initialization failed
snd_hda_intel 0000:00:1b.0: no codecs found!
Debian 12 (6.12.12+bpo-amd64) probing amdgpu:
amdgpu 0000:01:00.0: amdgpu: Failed to load toc
amdgpu 0000:01:00.0: amdgpu: PSP tmr init failed!
amdgpu 0000:01:00.0: amdgpu: PSP firmware loading failed
andgpu_device_fw_loading [amdgpu] *ERROR* hw_init of IP block ‹psp> failed -22
amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_init failed
amdgpu 0000:01:00.0: amdgpu: Fatal error during GPU init
andgpu 0000:01:00.0: probe with driver andgou failed with error -22
Interestingly the sound device seems to be working!
lspci -nnk (VM)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] [1002:13c0] (rev cb)
Subsystem: Gigabyte Technology Co., Ltd Granite Ridge [Radeon Graphics] [1458:d000]
Kernel modules: amdgpu
02:00.0 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
At last, i am suffering the reset bug although using the vendor reset service/ module (Windows VM/ Linux Host). My Host won't reboot proplery (hangs). I must power cycle.
Checking https://linux-hardware.org/?id=pci:1002-13c0-1043-8877 i am not sure if it should be working.
Any help is appreciated, thanks!!!