Have anyone susscesfully passthroughed the iGPU AMD Radeon 680M to VM?

There is good news, we have achieved an initial victory!

By this url https://github.com/gnif/vendor-reset/issues/59, with the zip file which contains a bios rom named ddsbios_M600.bin and a vbios rom named vbios-6900hx.bin, we can successfully passthrough the APU 680m to Windows 10!
批注 2023-02-14 211134.png

Step1
append "amd_iommu=on initcall_blacklist=sysfb_init" to kenrel cmdline
Code:
# /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on initcall_blacklist=sysfb_init"
...
then run update-grub

Step2

edit /etc/modules as follow:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Step3
edit /etc/modprobe.d/pve-blacklist.conf as follow:
Code:
blacklist amdgpu
blacklist snd_hda_intel

Step4
edit /etc/modprobe.d/vfio.conf as follow:
Code:
options vfio-pci ids=1002:1681,1002:1640
# video card id 1002:1681
# sound card id 1002:1640

Step5
run update-initramfs -k and reboot

Step6

create a vm,the most importance thing is to customize bios and vbios romfile

Code:
args: -bios /root/ddsbios_M600.bin # bios
balloon: 0
cpu: host
hostpci0: 0000:35:00.0,pcie=1,x-vga=1,romfile=vbios-6900hx.bin # the gpu (copy vbios-6900hx.bin to /usr/share/kvm)
hostpci1: 0000:35:00.1 # sound card
machine: pc-q35-7.1  # q35

...

Step7
passthrough keyboard and mouse,plug your monitor, and then start your vm, just start to install system then enjoy yourself.



Unfortunately, there is a reset bug in amd gpu that when we shutdown our vm and start again, there is no display output in our monitor unless reboot the host machine.
 
There is good news, we have achieved an initial victory!

By this url https://github.com/gnif/vendor-reset/issues/59, with the zip file which contains a bios rom named ddsbios_M600.bin and a vbios rom named vbios-6900hx.bin, we can successfully passthrough the APU 680m to Windows 10!
View attachment 46787

Step1
append "amd_iommu=on initcall_blacklist=sysfb_init" to kenrel cmdline
Code:
# /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on initcall_blacklist=sysfb_init"
...
then run update-grub

Step2

edit /etc/modules as follow:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Step3
edit /etc/modprobe.d/pve-blacklist.conf as follow:
Code:
blacklist amdgpu
blacklist snd_hda_intel

Step4
edit /etc/modprobe.d/vfio.conf as follow:
Code:
options vfio-pci ids=1002:1681,1002:1640
# video card id 1002:1681
# sound card id 1002:1640

Step5
run update-initramfs -k and reboot

Step6

create a vm,the most importance thing is to customize bios and vbios romfile

Code:
args: -bios /root/ddsbios_M600.bin # bios
balloon: 0
cpu: host
hostpci0: 0000:35:00.0,pcie=1,x-vga=1,romfile=vbios-6900hx.bin # the gpu (copy vbios-6900hx.bin to /usr/share/kvm)
hostpci1: 0000:35:00.1 # sound card
machine: pc-q35-7.1  # q35

...

Step7
passthrough keyboard and mouse,plug your monitor, and then start your vm, just start to install system then enjoy yourself.



Unfortunately, there is a reset bug in amd gpu that when we shutdown our vm and start again, there is no display output in our monitor unless reboot the host machine.

Thanks for sharing this!!!
 
There is good news, we have achieved an initial victory!

By this url https://github.com/gnif/vendor-reset/issues/59, with the zip file which contains a bios rom named ddsbios_M600.bin and a vbios rom named vbios-6900hx.bin, we can successfully passthrough the APU 680m to Windows 10!
View attachment 46787

Step1
append "amd_iommu=on initcall_blacklist=sysfb_init" to kenrel cmdline
Code:
# /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on initcall_blacklist=sysfb_init"
...
then run update-grub

Step2

edit /etc/modules as follow:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Step3
edit /etc/modprobe.d/pve-blacklist.conf as follow:
Code:
blacklist amdgpu
blacklist snd_hda_intel

Step4
edit /etc/modprobe.d/vfio.conf as follow:
Code:
options vfio-pci ids=1002:1681,1002:1640
# video card id 1002:1681
# sound card id 1002:1640

Step5
run update-initramfs -k and reboot

Step6

create a vm,the most importance thing is to customize bios and vbios romfile

Code:
args: -bios /root/ddsbios_M600.bin # bios
balloon: 0
cpu: host
hostpci0: 0000:35:00.0,pcie=1,x-vga=1,romfile=vbios-6900hx.bin # the gpu (copy vbios-6900hx.bin to /usr/share/kvm)
hostpci1: 0000:35:00.1 # sound card
machine: pc-q35-7.1  # q35

...

Step7
passthrough keyboard and mouse,plug your monitor, and then start your vm, just start to install system then enjoy yourself.



Unfortunately, there is a reset bug in amd gpu that when we shutdown our vm and start again, there is no display output in our monitor unless reboot the host machine.
Could you share the zip file ? I cannot find it in the provided link.
 
Hyper-V update. Server 2022 works with the GPU if you integrate the drivers into the iso. On the other hand, it has a network driver issue because Intel is not signing the consumer-grade network adapter drivers for the server operating system. You need to modify the inf file and disable the driver signature check. With the Server 2022 core host and windows 10 and 11 VM, I could partition the GPU and assign the GPU partitions From %25 to %100 to various VMs. this means the VM you assign %100 can utilise %100 of GPU and the VM you assigned %50 can only utilise up to %50. Server 2022 is licensed software, but Hyper-v Server 2016 is free to use.
Any guide or how to you recommend to test this with the AMD iGPU?
 
There is good news, we have achieved an initial victory!

By this url https://github.com/gnif/vendor-reset/issues/59, with the zip file which contains a bios rom named ddsbios_M600.bin and a vbios rom named vbios-6900hx.bin, we can successfully passthrough the APU 680m to Windows 10!
View attachment 46787

Step1
append "amd_iommu=on initcall_blacklist=sysfb_init" to kenrel cmdline
Code:
# /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on initcall_blacklist=sysfb_init"
...
then run update-grub

Step2

edit /etc/modules as follow:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Step3
edit /etc/modprobe.d/pve-blacklist.conf as follow:
Code:
blacklist amdgpu
blacklist snd_hda_intel

Step4
edit /etc/modprobe.d/vfio.conf as follow:
Code:
options vfio-pci ids=1002:1681,1002:1640
# video card id 1002:1681
# sound card id 1002:1640

Step5
run update-initramfs -k and reboot

Step6

create a vm,the most importance thing is to customize bios and vbios romfile

Code:
args: -bios /root/ddsbios_M600.bin # bios
balloon: 0
cpu: host
hostpci0: 0000:35:00.0,pcie=1,x-vga=1,romfile=vbios-6900hx.bin # the gpu (copy vbios-6900hx.bin to /usr/share/kvm)
hostpci1: 0000:35:00.1 # sound card
machine: pc-q35-7.1  # q35

...

Step7
passthrough keyboard and mouse,plug your monitor, and then start your vm, just start to install system then enjoy yourself.



Unfortunately, there is a reset bug in amd gpu that when we shutdown our vm and start again, there is no display output in our monitor unless reboot the host machine.
I have the same problem as kevinyu211 I can't find the ddsbios_M600.bin and vbios-6900hx.bin files...Can you share them with us again? Thanks for all your work!
 
Here is the method to dump vbios which may help somebody. Compile the following code, and run as root:

C:
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

typedef uint32_t ULONG;
typedef uint8_t UCHAR;
typedef uint16_t USHORT;

typedef struct {
    ULONG Signature;
    ULONG TableLength; // Length
    UCHAR Revision;
    UCHAR Checksum;
    UCHAR OemId[6];
    UCHAR OemTableId[8]; // UINT64  OemTableId;
    ULONG OemRevision;
    ULONG CreatorId;
    ULONG CreatorRevision;
} AMD_ACPI_DESCRIPTION_HEADER;

typedef struct {
    AMD_ACPI_DESCRIPTION_HEADER SHeader;
    UCHAR TableUUID[16]; // 0x24
    ULONG VBIOSImageOffset; // 0x34. Offset to the first GOP_VBIOS_CONTENT block from the beginning of the stucture.
    ULONG Lib1ImageOffset; // 0x38. Offset to the first GOP_LIB1_CONTENT block from the beginning of the stucture.
    ULONG Reserved[4]; // 0x3C
} UEFI_ACPI_VFCT;

typedef struct {
    ULONG PCIBus; // 0x4C
    ULONG PCIDevice; // 0x50
    ULONG PCIFunction; // 0x54
    USHORT VendorID; // 0x58
    USHORT DeviceID; // 0x5A
    USHORT SSVID; // 0x5C
    USHORT SSID; // 0x5E
    ULONG Revision; // 0x60
    ULONG ImageLength; // 0x64
} VFCT_IMAGE_HEADER;

typedef struct {
    VFCT_IMAGE_HEADER VbiosHeader;
    UCHAR VbiosContent[1];
} GOP_VBIOS_CONTENT;

int main(int argc, char** argv)
{
    FILE* fp_vfct;
    FILE* fp_vbios;
    UEFI_ACPI_VFCT* pvfct;
    char vbios_name[0x400];

    if (!(fp_vfct = fopen("/sys/firmware/acpi/tables/VFCT", "r"))) {
        perror(argv[0]);
        return -1;
    }

    if (!(pvfct = malloc(sizeof(UEFI_ACPI_VFCT)))) {
        perror(argv[0]);
        return -1;
    }

    if (sizeof(UEFI_ACPI_VFCT) != fread(pvfct, 1, sizeof(UEFI_ACPI_VFCT), fp_vfct)) {
        fprintf(stderr, "%s: failed to read VFCT header!\n", argv[0]);
        return -1;
    }

    ULONG offset = pvfct->VBIOSImageOffset;
    ULONG tbl_size = pvfct->SHeader.TableLength;

    if (!(pvfct = realloc(pvfct, tbl_size))) {
        perror(argv[0]);
        return -1;
    }

    if (tbl_size - sizeof(UEFI_ACPI_VFCT) != fread(pvfct + 1, 1, tbl_size - sizeof(UEFI_ACPI_VFCT), fp_vfct)) {
        fprintf(stderr, "%s: failed to read VFCT body!\n", argv[0]);
        return -1;
    }

    fclose(fp_vfct);

    while (offset < tbl_size) {
        GOP_VBIOS_CONTENT* vbios = (GOP_VBIOS_CONTENT*)((char*)pvfct + offset);
        VFCT_IMAGE_HEADER* vhdr = &vbios->VbiosHeader;

        if (!vhdr->ImageLength)
            break;

        snprintf(vbios_name, sizeof(vbios_name), "vbios_%x_%x.bin", vhdr->VendorID, vhdr->DeviceID);

        if (!(fp_vbios = fopen(vbios_name, "wb"))) {
            perror(argv[0]);
            return -1;
        }

        if (vhdr->ImageLength != fwrite(&vbios->VbiosContent, 1, vhdr->ImageLength, fp_vbios)) {
            fprintf(stderr, "%s: failed to dump vbios %x:%x\n", argv[0], vhdr->VendorID, vhdr->DeviceID);
            return -1;
        }

        fclose(fp_vbios);

        printf("dump vbios %x:%x to %s\n", vhdr->VendorID, vhdr->DeviceID, vbios_name);

        offset += sizeof(VFCT_IMAGE_HEADER);
        offset += vhdr->ImageLength;
    }

    return 0;
}
Huge thanks to this post, so I can dump my vbios directly from pve, and without bios firmware file. I just successfully made the iGPU pass thought work with AMD 6600U with Radeon 660M in Windows 10. No code 43 at all, everything is perfect!!!, I guess it should be the same for 680M. One key step is you will need to install this RadeonResetBugFix: https://github.com/inga-lovinde/RadeonResetBugFix, or else it will be black after reboot. And if you already failed before and with a 43 error code, you can try to re-install the AMD driver with factory reset option on.
 
Huge thanks to this post, so I can dump my vbios directly from pve, and without bios firmware file. I just successfully made the iGPU pass thought work with AMD 6600U with Radeon 660M in Windows 10. No code 43 at all, everything is perfect!!!, I guess it should be the same for 680M. One key step is you will need to install this RadeonResetBugFix: https://github.com/inga-lovinde/RadeonResetBugFix, or else it will be black after reboot. And if you already failed before and with a 43 error code, you can try to re-install the AMD driver with factory reset option on.
Could you share some step by step guide one could use to get the vbios? I have failed so far trying to do so and using other file always give error 43 to me. Also the reset bug fix should apply to 680M?
 
Could you share some step by step guide one could use to get the vbios? I have failed so far trying to do so and using other file always give error 43 to me. Also the reset bug fix should apply to 680M?
Very easy
1. copy the c source code and paste into a *.c file, e.g. vbios.c
2. install gcc by command
Code:
apt install gcc
3. Compile the vbios.c file by command
Code:
gcc vbios.c -o vbios
4. execute to get the file
Code:
./vbios
5. Now you will get a *.bin file in your current folder, this is the vbios file you need.
6. Remember, if you re-install pve, you will need to generate this vbios file again. I tried to re-install pve and use the old vbios file and get code 43 again. After I re-generate the vbios in current using pve, iGPU pass through successful again.

I refer to this article to setup pve https://blog.csdn.net/qq_42912965/article/details/126815332, It is just copy and paste all the pve settings, no any other trick. Ignore the vbios obtaining part in the article. It is in Chinese however, you may refer to any other article for 5700G iGPU pass though, should be similar.
 
Last edited:
Could you share some step by step guide one could use to get the vbios? I have failed so far trying to do so and using other file always give error 43 to me. Also the reset bug fix should apply to 680M?
I guess it will need to apply the reset bug fix. 660M is quite the same as 680M, as in Unraid my 660M is shown as 680M. You can have a try for apply/not apply cases, to see if works in both cases.
 
Thanks all for the support. My M600 with 6900hx now passthrough the iGPU successfully to the Windows 10 VM. I used the PVE 7.3 with 6.1 kernel and the GCC compiled vbios and instructions shared by skytsai.

I did tried the win11 unsuccessful by the way so windows 10 will do for now.
 
Huge thanks to this post, so I can dump my vbios directly from pve, and without bios firmware file. I just successfully made the iGPU pass thought work with AMD 6600U with Radeon 660M in Windows 10. No code 43 at all, everything is perfect!!!, I guess it should be the same for 680M. One key step is you will need to install this RadeonResetBugFix: https://github.com/inga-lovinde/RadeonResetBugFix, or else it will be black after reboot. And if you already failed before and with a 43 error code, you can try to re-install the AMD driver with factory reset option on.
Thanks a lot, that worked.
 
Hello. I have tried everything and this method could help me with the passthrough. Could someone re-upload de bios file? (the previous link doesn't contain the file anymore and it's impossible to find it anywhere).

Thanks a lot!
 
Last edited:
Hello. I have tried everything and this method could help me with the passthrough. Could someone re-upload de bios file? (the previous link doesn't contain the file anymore and it's impossible to find it anywhere).

Thanks a lot!
To me only getting it from my own proxmox installed in the actual device as per previous post was the only way it worked. Only vbios was required.
 
Huge thanks to this post, so I can dump my vbios directly from pve, and without bios firmware file. I just successfully made the iGPU pass thought work with AMD 6600U with Radeon 660M in Windows 10. No code 43 at all, everything is perfect!!!, I guess it should be the same for 680M. One key step is you will need to install this RadeonResetBugFix: https://github.com/inga-lovinde/RadeonResetBugFix, or else it will be black after reboot. And if you already failed before and with a 43 error code, you can try to re-install the AMD driver with factory reset option on.
Feasible, but with limited performance, and it is black screen after startup before reaching the welcome interface
 
Last edited:
Guys I have this machine https://www.bee-link.com/beelink-minipc-amdcpu-ser6pro-7735hs and I have been trying the method described without any luck.
A few observations.
When using the generated bios from the c program attached before the display goes black, the vm seems to boot in the case of Windows the PCIe is listed but it cannot find the driver for AMD. In the case of a Linux guest, it shows errors in amdgpu driver. When I don't pass the bios file vbios_1002_1681.bin generated the display doesn't even go black.
Bash:
root@prox3:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.15.74-1-pve root=/dev/mapper/pve-root ro quiet video=efifb:off video=vesa:off video:simplefb:off iommu=pt initcall_blacklist=sysfb_init amd_iommu=on drm.debug=0 kvm_amd.nested=1 kvm.ignore_msrs=1 kvm.report_ignored_msrs=0 pci=assign-busses pcie_acs_override=downstream,multifunction vfio_iommu_type1.allow_unsafe_interrupts=1

The pci device attached to the iGPU is 0000:05:00.0 based on lspci

Bash:
root@prox3:~# lspci -D -nnk
0000:00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b5] (rev 01)
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:14b5]
0000:00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b6]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:14b6]
0000:00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b7] (rev 01)
0000:00:01.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14ba]
        Kernel driver in use: pcieport
0000:00:01.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14ba]
        Kernel driver in use: pcieport
0000:00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b7] (rev 01)
0000:00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14ba]
        Kernel driver in use: pcieport
0000:00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b7] (rev 01)
0000:00:03.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14cd]
        Kernel driver in use: pcieport
0000:00:04.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b7] (rev 01)
0000:00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b7] (rev 01)
0000:00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b9] (rev 10)
        Kernel driver in use: pcieport
0000:00:08.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:14b9] (rev 10)
        Kernel driver in use: pcieport
0000:00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 71)
        Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b]
        Kernel driver in use: piix4_smbus
        Kernel modules: i2c_piix4, sp5100_tco
0000:00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
        Subsystem: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e]
0000:00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1679]
0000:00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167a]
0000:00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167b]
0000:00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167c]
        Kernel driver in use: k10temp
        Kernel modules: k10temp
0000:00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167d]
0000:00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167e]
0000:00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:167f]
0000:00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1680]
0000:01:00.0 Non-Volatile memory controller [0108]: Micron Technology Inc Device [1344:5413] (rev 03)
        Subsystem: Micron Technology Inc Device [1344:1100]
        Kernel driver in use: nvme
        Kernel modules: nvme
0000:02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)
        Subsystem: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:0123]
        Kernel driver in use: r8169
        Kernel modules: r8169
0000:03:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a)
        Subsystem: Intel Corporation Wi-Fi 6 AX200 [8086:0084]
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi
0000:05:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:1681] (rev 0a)
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:0124]
        Kernel driver in use: vfio-pci
        Kernel modules: amdgpu
0000:05:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:1640]
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:1640]
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel
0000:05:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] VanGogh PSP/CCP [1022:1649]
        Subsystem: Advanced Micro Devices, Inc. [AMD] VanGogh PSP/CCP [1022:1649]
        Kernel driver in use: ccp
        Kernel modules: ccp
0000:05:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:161d]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:163a]
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
0000:05:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:161e]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:163a]
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
0000:05:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor [1022:15e2] (rev 60)
        Subsystem: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor [1022:15e2]
        Kernel driver in use: snd_pci_acp6x
        Kernel modules: snd_pci_acp3x, snd_rn_pci_acp3x, snd_pci_acp5x, snd_pci_acp6x
0000:05:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller [1022:15e3]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller [1022:d595]
        Kernel modules: snd_hda_intel
0000:06:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:161f]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:163a]
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
0000:06:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:15d6]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:15d6]
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
0000:06:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:15d7]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:15d7]
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
0000:06:00.5 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:162e]
        Subsystem: Advanced Micro Devices, Inc. [AMD] Device [1022:162e]
        Kernel driver in use: thunderbolt
        Kernel modules: thunderbolt
configuration files

Bash:
root@prox3:~# cat /etc/modprobe.d/blacklist.conf
blacklist amdgpu
blacklist snd_hda_intel
root@prox3:~# cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=1002:1681,1002:1640
options vfio-pci disable_idle_d3=1

vm config file
Code:
root@prox3:~# cat /etc/pve/qemu-server/103.conf
agent: 1
bios: seabios
boot: order=sata0;net0
cores: 6
cpu: host,hidden=1
hostpci0: 0000:05:00.0,pcie=1,x-vga=1,romfile=vbios_1002_1681.bin
machine: pc-q35-7.1
memory: 8192
meta: creation-qemu=7.1.0,ctime=1679324988
name: win32
net0: e1000=B2:F0:51:1A:2C:95,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
sata0: local-lvm:vm-103-disk-0,size=128G
scsihw: virtio-scsi-single
smbios1: uuid=6c26da75-8059-4eb1-81f1-0767e3476673
sockets: 1
usb0: host=046d:c52b
vga: std
vmgenid: 52858a5a-86c0-4cda-bee8-7ffc540e84e7

Thank you, any further advices?
 
Any guide or how to you recommend to test this with the AMD iGPU?
Unfortunately, there is no full guidance for the operations I made, but I will try to create some short ones for this device. I used some knowledge from GitHub ofcourse. But I needed to combine some separate information and try fail thing.

for example the Ethernet card is commercial one so there is no server os driver in intel's website you have to download the both server and consumer os drivers for different devices and you need to add you devices hw-id's in the server os driver. It is breaking the signature but it is okay you are the modifier.

for the GPU drivers, it needs to be integrated to iso because on the core OS I couldn't find a way to install it properly so I integrated them.

VM Gpu assign is really similar to the GitHub easy gpup topic. That script is designed to work on Win10 but it is the same kernel. On the other hand you don't need to create the VM with the script. We just need to set up and install a gen 2 vm and after all completed we need to enable the gpup from powershell and copy the driver to the guest os with a script.

It is simpler than explanation. The problems I saw there are some compatibility issues with the directx some games are not even start. But my use case is make an hardware acceleration for remote connection for my VDI setup.

positives:
- You can partition your GPU more than one vm and you have control of %25 of pieces.
- no reset issue, you can power on - off - reboot the vm as you wish and you can use WOL to power on the vm once you need (WOL requires additional ps script to running background it is not supported natively on hyper-v)
Negatives:
- No display output from vm to monitor it is VDI only.
- checkpoints are not supported while this passtrough enabled.
- sometimes a bit complicated because you need to use virtual USB display etc
- ------driver installation to host is pain
 

Attachments

  • Screenshot_1.png
    Screenshot_1.png
    66.9 KB · Views: 46
Thanks all for the support. My M600 with 6900hx now passthrough the iGPU successfully to the Windows 10 VM. I used the PVE 7.3 with 6.1 kernel and the GCC compiled vbios and instructions shared by skytsai.

I did tried the win11 unsuccessful by the way so windows 10 will do for now.
Hi did you tried to get video output from all ports?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!