[vfio-users] Passed GPU not working or cause guest Windows to go BSoD

Andrew V. Dromaretsky dromaretsky at gmail.com
Wed Aug 12 22:06:46 UTC 2015


I was able to get working guest Windows OS with GPU passthrough on my hardware 
with Ubuntu 14.04 (hardware still the same). But seems things have changed 
when using archlinux.

My hardware:
MB: GA-990FXA-UD5
CPU: FX-8320
GPU Host: GeForce 7600 GS (5th PCI-E slot) default in BIOS
GPU Guest: Radeon HD 6950 (upgraded to HD 6970 long time ago, 1st PCI-E slot)

Sometimes Windows Device Manager show code 10 or code 43 for passed GPU. But 
commonly result in BSoD. Sometimes BSoD appears on boot, other times ~1 minute 
after desktop loaded. Tried with VM BIOS and UEFI OVMF (from archlinux ovmf 
package).

List of PCI devices

lspci -nn | grep -iP "radeon|nvidia"

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. 
[AMD/ATI] Cayman PRO [Radeon HD 6950] [1002:6719]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] 
Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] [1002:aa80]
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation G73 [GeForce 7600 
GS] [10de:0392] (rev a1)

Managing virtual machine using virt-manager GUI. Config for VM

<domain type='kvm'>
  <name>win-8.1</name>
  <uuid>6d4d4553-5853-42d7-bd08-31bc48198d94</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.3'>hvm</type>
    <loader type='rom'>/usr/share/ovmf/ovmf_x64.bin</loader>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <vmport state='off'/>
  </features>
  <cpu mode='host-model'>
    <model fallback='allow'/>
    <topology sockets='1' cores='4' threads='1'/>
  </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/sbin/qemu-system-x86_64</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/sdc'/>
      <target dev='vda' bus='virtio'/>
      <boot order='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' 
function='0x0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <boot order='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source file='/home/avi9526/Setup/Drivers/virtio-win-0.1.105.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='nec-xhci'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' 
function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:51:11:23'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <image compression='off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' 
function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' 
function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' 
function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' 
function='0x0'/>
    </memballoon>
  </devices>
</domain>

Related dmesg output
dmesg | grep -iP "pci-stub|nouveau|nvidia|radeon|iommu"

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=8c3f7451-
e2b8-4721-b32b-d01c938bdd17 rw quiet pci-stub.ids=1002:6719,1002:aa80
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux 
root=UUID=8c3f7451-e2b8-4721-b32b-d01c938bdd17 rw quiet pci-
stub.ids=1002:6719,1002:aa80
[    0.898152] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    2.520853] pci-stub: add 1002:6719 sub=FFFFFFFF:FFFFFFFF 
cls=00000000/00000000
[    2.520865] pci-stub 0000:01:00.0: claimed by stub
[    2.520872] pci-stub: add 1002:AA80 sub=FFFFFFFF:FFFFFFFF 
cls=00000000/00000000
[    2.520879] pci-stub 0000:01:00.1: claimed by stub
[    2.728611] [drm] radeon kernel modesetting enabled.
[    2.733101] AMD IOMMUv2 driver by Joerg Roedel <jroedel at suse.de>
[    2.733103] AMD IOMMUv2 functionality not available on this system
[    2.758199] nvidia: module license 'NVIDIA' taints kernel.
[    2.768396] [drm] Initialized nvidia-drm 0.0.0 20140818 for 0000:04:00.0 on 
minor 0
[    2.768404] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  304.125  Mon 
Dec  1 19:58:28 PST 2014
[    4.149428] NVRM: on the primary VGA device. The NVIDIA Linux graphics 
driver

Any idea how to fix this or investigate further?




More information about the vfio-users mailing list