Proxmox 9.0 + AMD Radeon iGPU (Granite Ridge) Passthrough: A Desperate Plea for Help
Hardware:- Host: Minisforum MS-A2 (Ryzen 7 9800X3D, Granite Ridge iGPU 1002:13c0)
- VM: Windows 11 Pro (24H2)
- Proxmox Version: 9.0 (Kernel 6.14.11-2-pve)
The Problem: "Loading Initial ramdisk" Hang with Error 43
After weeks of relentless effort, I am stuck at the most frustrating point in GPU passthrough: the VM starts (TASK OK), but then hangs indefinitely at the "Loading Initial ramdisk" screen on the physical monitor connected to my MS-A2's GPU output. The Proxmox web console shows a black screen.I have exhausted every known solution, and I'm now reaching out for help from the community.
What I've Tried (Systematically)
I have followed every guide, forum post, and GitHub thread I could find. Here is a detailed account of my journey:- Initial Setup & Kernel Selection
- I started with the default Proxmox kernel (6.14.11-2-pve).
- This kernel is the latest stable version for Proxmox 9.0.
- I confirmed that the Ubuntu Live CD boots perfectly on the passed-through GPU, proving hardware compatibility.
- Addressing the AMD Reset Bug with vendor-reset
- The error writing '1' to '/sys/bus/pci/devices/0000:01:00.0/reset': Inappropriate ioctl for device message is expected and is the manifestation of the AMD reset bug.
- To fix this, I used the ballerburg9005/vendor-reset fork, which includes patches for newer kernels.
- I manually edited src/device-db.h to add {PCI_VENDOR_ID_ATI, 0x13c0, op, DEVICE_INFO(AMD_NAVI10)}, /* Granite Ridge iGPU */.
- I fixed a compilation error by changing #include <asm/unaligned.h> to #include <linux/unaligned.h> in src/amd/amdgpu/atom.c.
- The module compiled successfully and is loaded at boot (lsmod | grep vendor_reset confirms it).
3.Ensuring GPU Isolation with VFIO
- I configured /etc/modprobe.d/vfio.conf:
options vfio-pci ids=1002:13c0,1002:1640 disable_vga=1
I blacklisted host drivers in /etc/modprobe.d/blacklist.conf:
blacklist amdgpu
blacklist radeon
blacklist snd_hda_intel
- After rebooting, lspci -nnk -s 01:00.0 correctly shows Kernel driver in use: vfio-pci.
- 4.VM Configuration with Hypervisor Hiding
- My VM config (/etc/pve/qemu-server/101.conf) includes:
machine: pc-q35-10.0+pve1
vga: none
# GPU Passthrough
hostpci0: 0000:01:00.0,pcie=1,primary-gpu=1,rombar=1
hostpci1: 0000:01:00.1,pcie=1,rombar=0
args: -cpu 'host,kvm=off,hv_vendor_id=proxmox,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time'
- I have installed VirtIO drivers from the ISO.
- 5. The Clean Install Method (The "Only Way")
- As advised, I performed a clean install of Windows 11 without GPU passthrough first.
- I then added the GPU passthrough after a full installation and shutdown.
- Despite this, the VM still hangs at "Loading Initial ramdisk".
- Testing Alternative Kernels
- I attempted to switch to an older, more stable Proxmox kernel (6.8.12-11-pve), as recommended in several guides.
- However, even on this kernel, the issue persists. The vendor-reset module loads, the GPU is isolated, but the VM still hangs.
- The SeaBIOS Fallback
- As a last resort, I tried switching to bios: seabios and machine: pc-i440fx-9.0.
- This bypasses UEFI entirely and forces a legacy VGA handshake.
- Unfortunately, this did not resolve the hang.
The Current State
- Host Side:
Perfect. All configurations are correct. vendor-reset is loaded, GPU is isolated via vfio-pci, and the kernel is stable.
- Guest Side:
Failed. The VM fails to initialize the GPU correctly during early boot, leading to the "Loading Initial ramdisk" hang.
My Theory
This is not a configuration error. It is a UEFI GOP (Graphics Output Protocol) incompatibility between my specific Granite Ridge iGPU and QEMU/OVMF. Ubuntu works because Linux is more forgiving about early graphics initialization. Windows is not.The vendor-reset module handles the reset bug, but it does not solve the fundamental issue of Windows failing to initialize the GPU's UEFI firmware.
Request for Help
I have done everything possible within my knowledge. I need help from the community.Please, can anyone who has successfully passed through a Granite Ridge iGPU (or similar AMD iGPU) on Proxmox 9.0 with a recent kernel share their exact configuration?
Specifically, I need to know:
- What args line they use in their VM config?
- Did they use vendor-reset? If so, what kernel version and patch were used?
- Did they use seabios or stick with ovmf?
- Are there any specific BIOS settings on the MS-A2 that are critical?
Any insight, suggestion, or alternative approach would be immensely appreciated. I am ready to try anything.
Links to Relevant Resources:
- Forum Post: Working AMD RX 9070XT Support
- GitHub: ballerburg9005/vendor-reset
- Forum Post: Solved - Proxmox 8.3.5 Kernel 6.11.11-1 Unable to Pass Through AMD iGPU
- GitHub: gnif/vendor-reset
Thank you in advance for your time and expertise.