J’utilise Proxmox 4.2 (basé sur debian).
J’ai suivi les indications de cette page: https://pve.proxmox.com/wiki/Pci_passthrough et un autre (blog vfio) mais je n’ai pas le droit de mettre plus de lien en tant que nouveau sur le forum.
Modifié /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
> update-grub
Créé: /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
La commande dmesg | grep ecap répond:
[ 0.037273] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c9008020660262 ecap f0105a
Le code après ecap fini par un “a” donc normalement mon système supporte le interrupt remapping donc je ne crée pas le fichier /etc/modprobe.d/iommu_unsafe_interrupts.conf
J’ai trois devices dans le groupe 1 avec find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.1
/sys/kernel/iommu_groups/2/devices/0000:00:14.0
/sys/kernel/iommu_groups/3/devices/0000:00:16.0
/sys/kernel/iommu_groups/4/devices/0000:00:1a.0
/sys/kernel/iommu_groups/5/devices/0000:00:1b.0
/sys/kernel/iommu_groups/6/devices/0000:00:1c.0
/sys/kernel/iommu_groups/7/devices/0000:00:1c.1
/sys/kernel/iommu_groups/8/devices/0000:00:1d.0
/sys/kernel/iommu_groups/9/devices/0000:00:1f.0
/sys/kernel/iommu_groups/9/devices/0000:00:1f.2
/sys/kernel/iommu_groups/9/devices/0000:00:1f.3
/sys/kernel/iommu_groups/10/devices/0000:03:00.0
Ils correspondent à:
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series]
Je n’ai pas compris si c’était grave d’avoir les trois dans le même groupe. À priori je n’ai bien que les deux composantes de la carte graphique qui ont le driver vfio:
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port [8086:0151] (rev 09)
Kernel driver in use: pcieport
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] [1002:679a]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3000]
Kernel driver in use: vfio-pci
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series] [1002:aaa0]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aaa0]
Kernel driver in use: vfio-pci
J’ai crée /etc/modprobe.d/vfio.conf
options vfio-pci ids=1002:679a,1002:aaa0 disable_vga=1
avec les numéros venant de > lspci -n -s 1:.
Et /etc/modprobe.d/blacklist.conf
blacklist radeon
J’ai aussi créé après pour essayer de règler le soucis un fichier /etc/modprobe.d/radeon.conf contenant aussi:
blacklist radeon
Puis
depmod -ae
update-initramfs -u
Au boot l’écran branché sur la carte graphique reste figé sur:

Mais en dehors de ça Proxmox fonctionne très bien.
Pour ma carte graphique, je suis un peu perdu, à priori elle ne possède pas de Rom EFI. Le programme rom-parser renvoie:
Valid ROM signature found @0h, PCIR offset 238h
PCIR: type 0 (x86 PC-AT), vendor: 1002, device: 679a, class: 030000
PCIR: revision 0, vendor revision: f18
Last image
Alors que si j’ai bien compris, cette carte (Sapphire Radeon HD7950-3072) devrait en avoir une.
J’ai essayé les 4 options proposées pour /etc/pve/qemu-server/.conf, à savoir avec ou sans PCIexpress et avec UEFI ou avec un BIOS mais rien ne fonctionne.
Avec OVMF:
TASK ERROR: start failed: command '/usr/bin/kvm -id 150 -chardev 'socket,id=qmp,path=/var/run/qemu-server/150.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/150.pid -daemonize -smbios 'type=1,uuid=2ff66503-20a6-4997-8d88-17744469e300' -drive 'if=pflash,format=raw,readonly,file=/usr/share/kvm/OVMF-pure-efi.fd' -drive 'if=pflash,format=raw,file=/tmp/150-OVMF_VARS-pure-efi.fd' -name WinTest -smp '8,sockets=4,cores=2,maxcpus=8' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000' -vga none -nographic -no-hpet -cpu 'kvm64,hv_vendor_id=proxmox,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_relaxed,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,kvm=off' -m 8192 -k en-us -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'vfio-pci,host=01:00.0,id=hostpci0,bus=pci.0,addr=0x10' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:ad28f62a7aaf' -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/pve/vm-150-disk-1,if=none,id=drive-scsi0,cache=writeback,format=raw,aio=threads,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' -drive 'file=/dev/pve/vm-150-disk-1,if=none,id=drive-virtio0,cache=writeback,format=raw,aio=threads,detect-zeroes=on' -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa' -netdev 'type=tap,id=net0,ifname=tap150i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=62:66:36:33:32:63,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -rtc 'driftfix=slew,base=localtime' -global 'kvm-pit.lost_tick_policy=discard'' failed: exit code 1
Avec BIOS:
TASK ERROR: start failed: command '/usr/bin/kvm -id 150 -chardev 'socket,id=qmp,path=/var/run/qemu-server/150.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/150.pid -daemonize -smbios 'type=1,uuid=2ff66503-20a6-4997-8d88-17744469e300' -name WinTest -smp '8,sockets=4,cores=2,maxcpus=8' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000' -vga none -nographic -no-hpet -cpu 'kvm64,hv_vendor_id=proxmox,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_relaxed,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,kvm=off' -m 8192 -k en-us -readconfig /usr/share/qemu-server/pve-q35.cfg -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' -device 'vfio-pci,host=01:00.0,id=hostpci0,bus=ich9-pcie-port-1,addr=0x0,x-vga=on' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:ad28f62a7aaf' -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -drive 'file=/dev/pve/vm-150-disk-1,if=none,id=drive-virtio0,cache=writeback,format=raw,aio=threads,detect-zeroes=on' -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap150i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=62:66:36:33:32:63,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -rtc 'driftfix=slew,base=localtime' -machine 'type=q35' -global 'kvm-pit.lost_tick_policy=discard'' failed: exit code 1
Vous voyez ce que j’ai de mauvais ?
Merci !