[vfio-users] Nvidia Code 43 on Fedora 24 host and Windows 10 guest.

Alex Williamson alex.williamson at redhat.com
Tue Oct 4 18:28:26 UTC 2016

On Tue, 4 Oct 2016 19:43:58 +0200
Dawid Osuchowski <tulphoon at openmailbox.org> wrote:

> Hello! I'm trying to do a PCI passthrough of my GPU to Windows 10 guest
> machine using libvirt and vfio-pci. I've followed Alex Williamson's
> guide from vfio-blog
> http://vfio.blogspot.com/2015/05/vfio-gpu-how-to-series-part-3-host.html
> and it still doesn't work as i'm getting Code 43 on my MSI nVidia GTX
> 660 graphics card. Dumping all necessary info below (if you need me to
> supply more, i'll be happy to do it):

Looks like a pretty thorough following of the guide.

Is the below lspci the state immediately after booting the host?  Just
to verify that steps to make sure the device is initially claimed by
vfio-pci are actually working.

> lspci-nnv output:
> 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106
> [GeForce GTX 660] [10de:11c0] (rev a1) (prog-if 00 [VGA controller])
>     Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:2877]
>     Flags: fast devsel, IRQ 16
>     Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
>     Memory at e0000000 (64-bit, prefetchable) [size=128M]
>     Memory at e8000000 (64-bit, prefetchable) [size=32M]
>     I/O ports at e000 [size=128]
>     Expansion ROM at f7000000 [disabled] [size=512K]
>     Capabilities: <access denied>
>     Kernel driver in use: vfio-pci
>     Kernel modules: nouveau
>   <features>
>     <acpi/>
>     <apic/>
>     <hyperv>
>       <relaxed state='on'/>
>       <vapic state='on'/>
>       <spinlocks state='on' retries='8191'/>
>       <vendor_id state='on' value='KeenlyKVM'/>
>     </hyperv>
>     <kvm>
>       <hidden state='on'/>
>     </kvm>
>   </features>
>   <cpu mode='host-passthrough'>
>     <topology sockets='1' cores='2' threads='2'/>
>   </cpu>
>   <clock offset='localtime'>
>     <timer name='rtc' tickpolicy='catchup'/>
>     <timer name='pit' tickpolicy='delay'/>
>     <timer name='hpet' present='no'/>
>   </clock>

All looks ok to me.

>     <hostdev mode='subsystem' type='pci' managed='yes'>
>       <source>
>         <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
>       </source>
>       <rom bar='on' file='/opt/strip.rom'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
> 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='0x07'
> function='0x0'/>  
>     </hostdev>

Is libvirt able to access this ROM file?  Do you actually see the OVMF
boot splash screen?  You could place the rom in /usr/share/qemu and run
restorecon on it to make sure it's somewhere accessible.

Another maybe subtle thing here is that I wonder if guest PCI bus
address 00:02.0 should be avoided since that's often where IGD lives.
Maybe change slot='0x02' to 0x08, just for a quick and easy test.

You're sure the aux power is connected to the card, right?

I wish NVIDIA still hosted the drivers before the hypervisor detection
"bug" so you could try those, but they were probably pre-win10 anyway.
What driver are you trying to use in the guest?  Thanks,


More information about the vfio-users mailing list