Proxmox에서 iGPU를 패스스루 하기 위한 설정을 아래와 같이 적용한다.
/etc/modules
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
/etc/modprobe.d/blacklist.conf
blacklist amdgpu blacklist radeon blacklist nouveau blacklist nvidia*
/etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1 report_ignored_msrs=0 options kvm-amd nested=1
lspci -nnv
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix3 [1002:1900] (rev d5) (prog-if 00 [VGA controller])
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:0124]
Flags: bus master, fast devsel, latency 0, IRQ 42, IOMMU group 25
Memory at 7c00000000 (64-bit, prefetchable) [size=256M]
Memory at dc000000 (64-bit, prefetchable) [size=2M]
I/O ports at f000 [size=256]
Memory at dc500000 (32-bit, non-prefetchable) [size=512K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Legacy Endpoint, IntMsgNum 0
Capabilities: [a0] MSI: Enable- Count=1/4 Maskable- 64bit+
Capabilities: [c0] MSI-X: Enable+ Count=4 Masked-
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [270] Secondary PCI Express
Capabilities: [2a0] Access Control Services
Capabilities: [2b0] Address Translation Service (ATS)
Capabilities: [2c0] Page Request Interface (PRI)
Capabilities: [2d0] Process Address Space ID (PASID)
Capabilities: [410] Physical Layer 16.0 GT/s <?>
Capabilities: [450] Lane Margining at the Receiver
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller [Rembrandt/Strix] [1002:1640]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller [Rembrandt/Strix] [1002:1640]
Flags: fast devsel, IRQ 255, IOMMU group 26
Memory at dc5c8000 (32-bit, non-prefetchable) [disabled] [size=16K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Legacy Endpoint, IntMsgNum 0
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [2a0] Access Control Services
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
위에서 VGA의 id값인 1002:1900과 AUDIO의 id 값인 1002:1640을 vfio장치로 등록합니다.
/etc/modprobe.d/vfio.conf
options vfio-pci ids=1002:1900,1002:1640 options vfio-pci disable_idle_d3=1 softdep radeon pre: vfio-pci softdep amdgpu pre: vfio-pci softdep snd_hda_intel pre: vfio-pci
disable_idle_d3는 해당 장치의 절전모드를 비활성화 하는 옵션입니다.
모두 저장 후 적용 하고 리부팅
update-initramfs -u -k all update-grub proxmox-boot-tool refresh reboot
구형 GPU모델인 (Cezanne, Vega 8 iGPU) 같은 경우는 vBios 설정 없이도 패스스루가 잘 되지만 신형 RDNA3 기반 GPU(Phoenix, Radeon 780M RDNA3 iGPU)의 경우는 반드시 vBios를 적용해야지만 정상적으로 부팅 및 Code43 에러가 발생하지 않습니다.
vBios 및 ROM파일은 아래 링크에서 받을수 있습니다.
https://github.com/isc30/ryzen-gpu-passthrough-proxmox
가상머신 생성 후 PCI장치를 아래와 같이 등록해줍니다. 체크박스 확인!
ROM File 설정은 /etc/pve/qemu-server/<VMID>.conf 파일을 열어서 수정해주면 됩니다.
boot: order=scsi0;ide2;net0 cores: 4 cpu: host,hidden=1 hostpci0: 0000:01:00.0,pcie=1,x-vga=1,romfile=vbios_8845hs.bin ide2: none,media=cdrom machine: q35 memory: 8192 meta: creation-qemu=10.1.2,ctime=1772604340 name: plex.koov.net net0: virtio=BC:24:11:D0:FD:94,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 scsi0: data-2T1:vm-106-disk-0,discard=on,iothread=1,size=100G scsihw: virtio-scsi-single smbios1: uuid=6fe8fb7b-1b4c-4d1f-be4d-ac8b83cb7438 sockets: 1 vga: std vmgenid: 6ddb4c34-7aa8-44f4-b373-6fb1e4579b71
이때 주의할점은 hostpci0: 0000:01:00.0,pcie=1,x-vga=1,romfile=vbios_8845hs.bin 와 같이 되어있어야 하는데
장치 주소값이 0000:01:00 까지만 되어있는 경우가 있습니다. 확실하게 VGA장치의 서브주소까지 0000:01:00.0 명기되어야 합니다.
오디오 장치 추가의 경우는 아래 참조링크를 확인하시기 바랍니다.