August 8, 20169 yr So here is my issue: I have a Windows 10 VM running as my HTPC (set up with a launcher for Plex, Dolphin Emu and Steam Big Picture (for Streaming)) using my 660 Ti. I originally used this VM as my main PC for gaming, etc. and thus set it up with Seabios. Here is the (working) XML: <domain type='kvm'> <name>HTPC (alt)</name> <uuid>c3119f94-9643-d55f-ea2d-35ff5d5178fb</uuid> <description>Sichern, dann löschen!</description> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>1048576</currentMemory> <memoryBacking> <nosharepages/> <locked/> </memoryBacking> <vcpu placement='static'>1</vcpu> <cputune> <vcpupin vcpu='0' cpuset='7'/> </cputune> <os> <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor id='none'/> </hyperv> </features> <cpu mode='host-passthrough'> <topology sockets='1' cores='1' threads='1'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source file='/mnt/user/domains/HTPC (alt)/vdisk1.img'/> <target dev='hdc' bus='virtio'/> <boot order='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:04:0e:91'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <source mode='connect'/> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <hostdev mode='subsystem' type='pci' managed='yes' xvga='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x057e'/> <product id='0x0306'/> </source> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x1d57'/> <product id='0xad03'/> </source> </hostdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> </devices> </domain> I have since migrated to a real PC for various reasons (mainly, running games from a network share does not work as well as advertised (see my post on Origin and VHDs). The main VM now only needs to run 4 programs, all accessible through a simple HTPC remote from my couch. Since it was a proper Windows set up it has grown quite bloated and most importantly: won't properly update to build 1607. I thus have decided to move my HTPC VM to a smaller install with only the 4 apps (launcher, plex media player, dolphin emu, steam) and set it up using OVMF/UEFI instead of Seabios. Here is my XML: <domain type='kvm'> <name>HTPC</name> <uuid>ef3baa7f-0cd5-7587-d1bc-a0918488bfab</uuid> <description>Plex/Wii/Steam im Wohnzimmer</description> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>2097152</currentMemory> <memoryBacking> <nosharepages/> <locked/> </memoryBacking> <vcpu placement='static'>4</vcpu> <cputune> <vcpupin vcpu='0' cpuset='2'/> <vcpupin vcpu='1' cpuset='3'/> <vcpupin vcpu='2' cpuset='6'/> <vcpupin vcpu='3' cpuset='7'/> </cputune> <os> <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/ef3baa7f-0cd5-7587-d1bc-a0918488bfab_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor id='none'/> </hyperv> </features> <cpu mode='host-passthrough'> <topology sockets='1' cores='2' threads='2'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source file='/mnt/user/domains/HTPC/vdisk1.img'/> <target dev='hdc' bus='virtio'/> <boot order='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <controller type='usb' index='0' model='nec-xhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller> <controller type='pci' index='0' model='pci-root'/> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:04:0e:91'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <source mode='connect'/> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x057e'/> <product id='0x0306'/> </source> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x1d57'/> <product id='0xad03'/> </source> </hostdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> </devices> </domain> The set up worked flawlessly over VNC. Sadly, my 660Ti is not being passed through (I installed VNC server to confirm my VM is booting, with just the GPU passed through, which it does). My VM only runs at 640x480 now and the GPU shows up as Error 43 in the device manager. What can I do to fix this? I know, that if properly passed through, my VM would also show its bios, but using OVMF the screen just stays dark. It seems like the device is not even passed through before Windows boots. Any help cleaning up my HTPC images (which take up a lot of space right now) is greatly appreciated! My syslog is attached for further insights.. ninja-syslog-20160808-1058.zip
August 8, 20169 yr Access the VM using something like Teamviewer or Remote Desktop. Disable VNC and Hyper-V. See if that makes a difference.
August 8, 20169 yr Have you tried supplying the vbios for the GPU as per the wiki found here? And do your card support UEFI? You are running 6.2 right? Then you don't need to worry about hyper-v. But be sure to disable vnc.
August 8, 20169 yr Author Access the VM using something like Teamviewer or Remote Desktop. Disable VNC and Hyper-V. See if that makes a difference. Neither disabling Hyper-V nor disabling VNC has helped... my old Seabios VM(s) are running fine. I have double checked now. I can't even install windows without KVM-VNC because the GPU is not passed through at all.. seems like OVMF does not like the 660 Ti. Within Windows I have also tried enabling the MSI mode, as well as uninstalling KVM related drivers/the NVIDIA driver.. Have you tried supplying the vbios for the GPU as per the wiki found here? And do your card support UEFI? You are running 6.2 right? Then you don't need to worry about hyper-v. But be sure to disable vnc. Supplying the Bios yielded no success.. I am indeed running 6.2 rc3.. I double checked to disable VNC. Seems the UEFI support is the issue. I had Windows 10 installed on the very same PC (non-virtual) in UEFI mode without issues, strangely.. Anything else I might try? Otherwise I'll just stick with my old, sluggish VM for now Update: Could it be my Motherboard's lack of proper IOMMU grouping? Is Seabios more forgiving if I try this whole setup without the ACS override, etc?
August 8, 20169 yr You should get an error if the problem is other devices in the same iommu group, so that is not the problem. You might want to try to extract the bios yourself as explained in this post. But first try to use the correct way to pass through the bios if you haven't already done that. The below is the new way. <rom bar='on' file='/etc/fake/boot.bin'/>
Archived
This topic is now archived and is closed to further replies.