[vfio-users] Linux guest needs a Windows guest to boot first

Steve Freitas sflist at ihonk.com
Sun Jan 29 06:50:07 UTC 2017


Hi,

On an Ubuntu 16.10 host I'm running a Linux Mint 18.1 guest, passing 
through a Quadro FX4800. The guest is using the official Nvidia drivers. 
I can run the Mint guest once. If I try starting it again, it pegs the 
CPU and that's it. However, if I then start a Windows instance with that 
card, it starts fine, I stop it, and then I can run the Mint guest 
again. But just once. (In that case I notice that the screen comes up 
immediately on the Linux guest and I can see the entire boot process, 
which is unusual for my configuration .)

Unsuccessful fixes: echo "1" > /sys/bus/pci/devices/0000:02:00.0/reset. 
I extracted the card's ROM and put it in a "<rom file='...'/>" tag. 
Turning the ROM BAR off.

So it sounds like maybe the FX4800 isn't resetting properly after the 
Linux guest has used it, but since Windows doesn't have that issue, 
perhaps it's something else.

Any ideas would be appreciated. My config file follows. Thanks,

Steve

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
   <name>mint</name>
   <uuid>957e51ce-1377-4cf8-9cce-81af5112fa90</uuid>
   <memory unit='KiB'>8388608</memory>
   <currentMemory unit='KiB'>8388608</currentMemory>
   <vcpu placement='static'>2</vcpu>
   <os>
     <type arch='x86_64' machine='pc-q35-2.6'>hvm</type>
     <bootmenu enable='yes'/>
   </os>
   <features>
     <acpi/>
     <apic/>
   </features>
   <cpu mode='host-model'>
     <model fallback='allow'/>
   </cpu>
   <clock offset='utc'>
     <timer name='rtc' tickpolicy='catchup'/>
     <timer name='pit' tickpolicy='delay'/>
     <timer name='hpet' present='no'/>
   </clock>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
   <on_crash>restart</on_crash>
   <pm>
     <suspend-to-mem enabled='no'/>
     <suspend-to-disk enabled='no'/>
   </pm>
   <devices>
     <emulator>/usr/bin/kvm-spice</emulator>
     <disk type='block' device='disk'>
       <driver name='qemu' type='raw' cache='writeback'/>
       <source dev='/dev/mapper/vgBigSmoke-lvMint'/>
       <target dev='vda' bus='virtio'/>
       <boot order='2'/>
       <address type='pci' domain='0x0000' bus='0x02' slot='0x02' 
function='0x0'/>
     </disk>
     <disk type='file' device='cdrom'>
       <driver name='qemu' type='raw'/>
       <target dev='sda' bus='sata'/>
       <readonly/>
       <boot order='1'/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
     </disk>
     <controller type='usb' index='0' model='ich9-ehci1'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' 
function='0x7'/>
     </controller>
     <controller type='usb' index='0' model='ich9-uhci1'>
       <master startport='0'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' 
function='0x0' multifunction='on'/>
     </controller>
     <controller type='usb' index='0' model='ich9-uhci2'>
       <master startport='2'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' 
function='0x1'/>
     </controller>
     <controller type='usb' index='0' model='ich9-uhci3'>
       <master startport='4'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' 
function='0x2'/>
     </controller>
     <controller type='sata' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
function='0x2'/>
     </controller>
     <controller type='pci' index='0' model='pcie-root'/>
     <controller type='pci' index='1' model='dmi-to-pci-bridge'>
       <model name='i82801b11-bridge'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' 
function='0x0'/>
     </controller>
     <controller type='pci' index='2' model='pci-bridge'>
       <model name='pci-bridge'/>
       <target chassisNr='2'/>
       <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
function='0x0'/>
     </controller>
     <controller type='pci' index='3' model='pcie-root-port'>
       <model name='ioh3420'/>
       <target chassis='1' port='0x1'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x1c' 
function='0x0' multifunction='on'/>
     </controller>
     <interface type='network'>
       <mac address='52:54:00:88:58:04'/>
       <source network='g2bridge'/>
       <model type='virtio'/>
       <address type='pci' domain='0x0000' bus='0x02' slot='0x01' 
function='0x0'/>
     </interface>
     <serial type='pty'>
       <target port='0'/>
     </serial>
     <console type='pty'>
       <target type='serial' port='0'/>
     </console>
     <input type='mouse' bus='ps2'/>
     <input type='keyboard' bus='ps2'/>
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <driver name='vfio'/>
       <source>
         <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
       </source>
       <rom file='/var/lib/libvirt/images/NvidiaFX4800.rom'/>
       <address type='pci' domain='0x0000' bus='0x03' slot='0x00' 
function='0x0'/>
     </hostdev>
     <hostdev mode='subsystem' type='usb' managed='yes'>
       <source>
         <vendor id='0x17ef'/>
         <product id='0x6009'/>
       </source>
       <address type='usb' bus='0' port='1'/>
     </hostdev>
     <memballoon model='virtio'>
       <address type='pci' domain='0x0000' bus='0x02' slot='0x05' 
function='0x0'/>
     </memballoon>
   </devices>
   <qemu:commandline>
     <qemu:arg value='-set'/>
     <qemu:arg value='device.hostdev0.x-vga=on'/>
   </qemu:commandline>
</domain>




More information about the vfio-users mailing list