I’ve spent quite a bit of time perfecting the process of enabling iGPU passthrough for the AMD 8700G/8700GE with Radeon 780M in Proxmox. This setup lets you tap into the integrated graphics horsepower directly inside a Windows VM, offering improved performance for video editing, gaming, or just creating a smoother desktop experience.

In this post, I’ll walk you through every step, show you how to solve common issues like the AMD reset bug, and ensure you get the most out of your hardware. By the end, you’ll have a fully configured environment that harnesses the AMD Radeon 780M iGPU for hardware-accelerated performance.

Understanding iGPU Passthrough and Why It Matters

Enabling iGPU passthrough in Proxmox lets you allocate your AMD 8700G/8700GE’s Radeon 780M integrated graphics directly to a Windows VM. This allows the VM to use the GPU for hardware-accelerated tasks, bypassing standard software emulation and delivering near-native performance.

You’ll see smoother graphics in Windows, faster video rendering, and the ability to run GPU-accelerated applications that previously struggled in a virtualized environment. It’s all about leveraging the hardware you already have, making virtualization a more powerful solution.

Key Components of iGPU Passthrough

This process involves multiple layers: Proxmox VE as the hypervisor, VFIO for PCI device passthrough, IOMMU for hardware-level mapping, and Windows running inside a VM configured with VirtIO drivers and the AMD GPU driver. Getting them all aligned is the magic recipe.

Don’t worry if some of these terms sound technical. I’ll guide you step-by-step, so you can get it done even if you’re not a Linux or networking pro.

Prerequisites: Preparing Your Proxmox Environment

Before getting started, make sure you have a working Proxmox VE installation, preferably Version 8.x or higher. This ensures a more recent kernel and better compatibility. You’ll also need a Windows ISO and VirtIO driver ISO ready.

Your hardware should support IOMMU (check your motherboard’s BIOS). Also, confirm that your AMD 8700G/8700GE iGPU (Radeon 780M) is recognized by the system. Basic Linux knowledge helps, but I’ll keep commands and steps clear and concise.

If paths or IPs appear, remember to replace them with your actual server details, like or .

What You’ll Need

  • Proxmox VE 8.x or later
  • Windows ISO and VirtIO drivers ISO
  • AMD 8700G/8700GE processor with Radeon 780M iGPU
  • Basic command-line skills

Step 1: Enable IOMMU on the Proxmox Host

IOMMU allows direct access of the VM to the GPU. Without it, the passthrough won’t function. This is a crucial step to ensure Proxmox can handle device assignment correctly.

First, edit the bootloader configuration to enable IOMMU in “pt” mode. Then, update and reboot.

Use the following commands on your Proxmox host:

sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt"/g' /etc/default/grub
update-grub
reboot

After rebooting, verify IOMMU is active:

Terminal display showing IOMMU information
Terminal output with dmesg IOMMU detection

dmesg | grep -e DMAR -e IOMMU

If you see IOMMU-related lines, you’re all set. If not, double-check BIOS settings for IOMMU or AMD-Vi.

Step 2: Identify the AMD Radeon 780M iGPU

To proceed, you need the iGPU’s PCI ID. This ensures the host knows which device to passthrough to the VM. The following command helps you locate the device:

lspci -nn | grep -e 'AMD/ATI'

Look for a line mentioning something like “Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf].” In this example, the PCI ID might be 0d:00.0 and the device ID is 1002:15bf.

Terminal output showing PCI device information
Terminal command output for AMD/ATI PCI device

Note that for the AMD 8700G/8700GE iGPU, you typically don’t have a separate audio device like discrete GPUs. This simplifies configuration since you only have to passthrough one PCI device.

💡
The iGPU is a single PCI function, so no separate audio passthrough is needed.

Step 3: Configure VFIO for the iGPU Passthrough

VFIO ensures that the PCI device is detached from the host and made available exclusively to the VM. By using VFIO, the guest OS can interact with the GPU as if it was physically installed in that system.

First, load the necessary VFIO modules at boot:

echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules

Next, bind the iGPU’s PCI ID to vfio-pci:

echo "options vfio-pci ids=1002:15bf" >> /etc/modprobe.d/vfio.conf

To ensure the host’s amdgpu driver doesn’t grab the iGPU first, add a soft dependency:

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

Finally, update the initramfs and reboot:

update-initramfs -u -k all
reboot

After reboot, verify the GPU is using vfio-pci:

lspci -nnk | grep -A 3 '0d:00.0'

If it shows “vfio-pci” as the driver, you’re on the right track.

Terminal output showing details of a PCI device
Details of an AMD/ATI graphics card
✔️
Your iGPU is now reserved for passthrough and not used by the host.

Step 4: Extract and Configure the VBIOS

The VM often needs a proper VBIOS to initialize the GPU correctly. This can be critical for some AMD GPUs to ensure proper startup and avoid issues like blank screens. In order to pass the GPU device properly, we need to specify which GPU BIOS to use. We can extract it directly from the host or obtain it from a repository.

First, create a vbios.c file on your Proxmox host with the following content and compile it. Then, run the resulting binary to extract the VBIOS file. If you encounter difficulties, refer to this nofollow link for additional info: https://github.com/isc30/ryzen-7000-series-proxmox

After compiling and running vbios.c you’ll get a vbios_*.bin file. Place it in the proper directory:

gcc vbios.c -o vbios
./vbios
mv vbios_*.bin /usr/share/kvm/vbios_780m.bin

Having the correct VBIOS ensures the GPU initializes properly within the Windows VM, reducing issues like corrupted displays or failed driver installs.

Step 5: Create and Configure the Windows VM

Now it’s time to build the Windows VM in Proxmox and assign the iGPU. Using a Q35 machine type and UEFI OVMF BIOS helps with compatibility and performance, while enabling features like Discard and SSD emulation for storage helps with speed and longevity.

Create a new Windows VM via the Proxmox web interface. Use the Windows ISO and VirtIO drivers ISO you prepared. After the VM is created, you’ll edit its configuration file directly to add the passthrough device and romfile.

Open the VM’s configuration file:

nano /etc/pve/qemu-server/<VM_ID>.conf

Add or modify entries as needed, for example:

agent: 1
args: -cpu 'host,-hypervisor,kvm=off'
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 8
cpu: host
efidisk0: local-zfs:vm-<VM_ID>-disk-0,efitype=4m,pre-enrolled-keys=1,size=1M
hostpci0: 0000:0d:00.0,pcie=1,romfile=vbios_780m.bin
ide2: none,media=cdrom
machine: pc-q35-9.0
memory: 16384
name: windows
net0: virtio=<MAC_ADDRESS>,bridge=vmbr0,firewall=1
numa: 0
ostype: win11
scsi0: local-zfs:vm-<VM_ID>-disk-1,discard=on,iothread=1,size=100G
scsihw: virtio-scsi-single
smbios1: uuid=<UUID>
sockets: 1
tpmstate0: local-zfs:vm-<VM_ID>-disk-2,size=4M,version=v2.0
vmgenid: <GENID>

Adjust the VM_ID, MAC_ADDRESS, UUID, and GENID placeholders. Once saved, start the VM and begin Windows installation. The iGPU is now passed through to the VM, but you still need drivers.

Proxmox virtual machine hardware configuration screen
Proxmox VM 1010 hardware settings on node
💪
If the VM doesn’t start, double-check your PCI ID and VBIOS file paths.

Step 6: Install VirtIO Drivers and AMD GPU Drivers

With Windows installed, you’ll need to ensure that the VM uses the best drivers. VirtIO drivers improve disk, network, and other performance aspects. The AMD GPU drivers let Windows directly use the Radeon 780M.

First, mount the VirtIO ISO and install all required drivers: VirtIO Storage, VirtIO Network, VirtIO Balloon, and so forth.

After that, grab the AMD GPU driver (use the official AMD installer). Offline versions are best to avoid unnecessary compatibility checks. Once installed, you should see the GPU recognized correctly in the Windows Device Manager.

💡
Installing the correct VirtIO and AMD drivers ensures optimal performance and stability.

Step 7: Addressing the AMD Reset Bug

The AMD reset bug is a well-known issue where the GPU doesn’t reset properly after a VM reboot, requiring a full host reboot. Thankfully, there’s a workaround: the vendor-reset module.

Install and enable vendor-reset:

git clone https://github.com/gnif/vendor-reset.git
cd vendor-reset
make
make install
modprobe vendor-reset
echo "vendor-reset" >> /etc/modules

With vendor-reset, your iGPU will have a better chance of resetting cleanly after VM shutdowns. However, note that some situations still require a full Proxmox host reboot.

💪
If the iGPU fails to initialize after a VM reboot, restarting the entire host may be necessary.

Known Issues and Workarounds

Error 43 in Windows

If Windows displays “Error 43” for the GPU, it indicates the GPU failed to start. Often, a simple host reboot fixes this. This error can occur after changing configurations or drivers.

Remote Desktop Disables the iGPU

Sometimes using Windows Remote Desktop can disable the GPU in Device Manager. If that happens, just re-enable it manually.

Device Manager window showing hardware components
Device Manager showing display adapters

Dealing with Reset Bugs

While vendor-reset helps, the reset bug isn’t always fully resolved. If the VM won’t start after a reboot, try rebooting the entire Proxmox host.

If you consistently encounter reset issues, consider updating to the latest kernels or checking community forums for new patches.

Optimizing Performance and Stability

Once your iGPU passthrough is working, you can fine-tune the setup. Tweak CPU and memory allocations, enable huge pages for better memory performance, and consider adding a dedicated SSD for your VM. The goal is to give your VM the best environment possible.

Using Q35 Machine Type and OVMF

The Q35 machine type and OVMF (UEFI BIOS) improve compatibility and performance. Q35 provides a modern chipset that works well with PCIe passthrough, while OVMF helps ensure Windows boots using UEFI. This combination often leads to a smoother experience.

Improving Disk Throughput

Use VirtIO SCSI for better disk performance and enable Discard and SSD emulation. This helps improve responsiveness and reduces disk wear. You can also consider caching options, but always test stability before going into production environments.

Networking Considerations

Use VirtIO network drivers for better throughput and lower latency. If you plan to run GPU-accelerated workloads that rely on network storage or streaming, a stable and fast virtual NIC is essential. Assign a dedicated NIC or VLAN if needed.

Testing and Validation

After setup, you’ll want to test performance. Run a few GPU benchmarks in the Windows VM and compare results to a native environment if possible. Test video playback, gaming, or 3D rendering tasks. You should see a substantial improvement over software-based graphics.

If something isn’t performing as expected, review your steps. Double-check IOMMU configuration, VFIO settings, and whether the vendor-reset module is loaded. Patience and careful troubleshooting go a long way.

Conclusion

By following these steps, you’ve unlocked the full potential of the AMD 8700G/8700GE with Radeon 780M iGPU inside a Proxmox Windows VM. This isn’t just a tech experiment; it’s a way to get near-native GPU performance for virtualized workloads, which can transform how you use your system.

Whether you’re into media editing, light gaming, or high-performance computing, having the iGPU directly accessible can make a huge difference. I hope you find this guide useful and that it helps you make the most of your Proxmox environment.

If you’re curious about more advanced tweaks or other GPU models, the principles remain the same: enable IOMMU, load VFIO, provide a proper VBIOS, and pass the device through. Happy virtualizing!

Categorized in:

Code, Proxmox, Tech, Tutorials,