I'm attempting to setup a Linux kvm machine. I'm running into some strange issues. a little background. the host machine is a uefi h170 board, that being said, I know that the MSI Radeon R7 240 supports uefi since prior to playing with kvm I had to install the host OS using it.

If I use seabios, pci passthrough works fine. I actually do the full windows install via a passed through mouse, keyboard and the monitor on the radeon card.

However, if I build the same machine with virt-manager and passthrough the video, it does not work.

If I use uefi via virt-manager or cli, video passthrough does not work.

Here is my working string (although I end up with two nics somehow!?)

qemu-system-x86_64 -enable-kvm -M q35 -m 3072 -cpu host \
-smp 2,sockets=1,cores=2,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device virtio-scsi-pci,id=scsi \
-drive file=/srv/wip.img,format=raw,id=disk,if=none,cache=directsync,aio=native \
-device scsi-hd,drive=disk \
-cdrom /home/driz/win10.iso \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device virtio-net-pci,mac=52:54:00:ea:c8:8d \
-usb -usbdevice host:040b:2000 -usbdevice host:046d:c01e -usbdevice host:0d8c:0014 \
-boot menu=on

Here is a test string that does not work

qemu-system-x86_64 -enable-kvm -M q35 -m 3072 -cpu host \
-smp 2,sockets=1,cores=2,threads=1 \
-mem-path /dev/hugepages \
-mem-prealloc \
-drive file=/srv/ovmf-x64/OVMF_CODE-pure-efi.fd,if=pflash,format=raw,unit=0,readonly=on \
-drive file=/srv/ovmf-x64/OVMF_VARS-pure-efi.fd,if=pflash,format=raw,unit=1 \
-device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
-device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x0 \
-device virtio-scsi-pci,id=scsi0,bus=pci.2,addr=0x2 \
-drive file=/srv/wip2.img,format=raw,if=none,id=drive-scsi0-0-0-0 \
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0 \
-cdrom /srv/win10.iso \
-device virtio-net-pci,mac=52:54:00:ea:c8:8d \
-device vfio-pci,host=01:00.0,multifunction=on \
-nographic \
-usb -usbdevice host:040b:2000 -usbdevice host:046d:c01e -usbdevice host:0d8c:0014 \
-device virtio-balloon-pci,id=balloon0,bus=pci.2,addr=0x4 \
-boot menu=on

I've spent about 4 days working on this now and researching everywhere I can, and my kids are finally getting upset with the delays. any help is appreciated!


Manually specifying the video rom corrected the issue on the CLI version. In virsh you can define the rom (with an appropriate version) as shown below

     <rom file='/etc/fake/boot.bin'/>

on the cli

add romfile=/path/to/your/rom/romfile.rom to the end of your pci passthrough device

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.