[vfio-users] Nvidia device not recognised / nouveau 0000:00:04.0: unknown chipset (ffffffff)

Woody vfio at wood.id.au
Wed Jun 20 00:17:56 UTC 2018


Hi VFIOers!

new to VFIO and trying a Metabox (clevo) P950ER.

Laptop has Nvidia 1070M with Max-Q, no UEFI in the Bios.

I have an older Metabox with a 970M (also no UEFI in the nvidia) to try 
things on to, but I'm using that for work until the P950ER is up and 
running.

Following: 
https://heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/
with a bit of 
https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28

Not using bumblebee/bbswitch on the host.
Using seabios but I can't see heaps about it on the web.

Have qemu starting up and windows 10 installed running off the kvm 
default graphics card.

Cannot get nvidia drivers (389.04) to recognise the card (not getting 
Error 43 that I can see, maybe ).:
(X) NVIDIA Installer cannot continue
This graphics driver could not find compatible graphics hardware.

I can see the vfio-pci driver attaching to the card in the host dmesg:

[    4.908861] vfio-pci 0000:01:00.0: vgaarb: changed VGA decodes: 
olddecodes=io+mem,decodes=none:owns=none
[    4.932351] vfio_pci: add [10de:1ba1[ffff:ffff]] class 0x000000/00000000

lspci -vv (host)

01:00.0 VGA compatible controller: NVIDIA Corporation GP104M [GeForce 
GTX 1070 Mobile] (rev a1) (prog-if 00 [VGA controller])
     Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR+ FastB2B- DisINTx-
     Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- 
<TAbort- <MAbort- >SERR+ <PERR- INTx-
     Interrupt: pin A routed to IRQ 16
     Region 0: [virtual] Memory at a4000000 (32-bit, non-prefetchable) 
[size=16M]
     Region 1: Memory at 90000000 (64-bit, prefetchable) [size=256M]
     Region 3: Memory at a0000000 (64-bit, prefetchable) [size=32M]
     Region 5: I/O ports at 4000 [size=128]
     [virtual] Expansion ROM at a5000000 [disabled] [size=512K]
     Capabilities: <access denied>
     Kernel driver in use: vfio-pci
     Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

And when qemu launches getting enabled:

[  235.549500] vfio-pci 0000:01:00.0: enabling device (0002 -> 0003)

But in windows the nvidia driver can't find hardware as above.

Booting a linux mint 18.03 iso I get the nouveau driver not knowing what 
to do with chipset "ffffffff".

[    5.001593] ata6: SATA max UDMA/133 abar m4096 at 0xfe0f7000 port 
0xfe0f7380 irq 26
[    5.001796] ACPI: PCI Interrupt Link [GSIE] enabled at IRQ 20
[    5.001837] nouveau 0000:00:04.0: unknown chipset (ffffffff)
[    5.002010] nouveau: probe of 0000:00:04.0 failed with error -12
[    5.104355] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[    5.486893] ata4: SATA link down (SStatus 0 SControl 300)


Not sure if the nouveau "ffffffff" corresponds to the [ffff:ffff] in 
this line from dmesg:
vfio_pci: add [10de:1ba1[ffff:ffff]] class 0x000000/00000000

have seen similar dmesg lines with ffff:ffff and 0x000000/00000000 on 
VFIO howto's which don't seem to be a problem.

The GP104M_image.rom I got from the card itself:

rom-parser says it's non-UEFI:

Valid ROM signature found @0h, PCIR offset 170h
     PCIR: type 0 (x86 PC-AT), vendor: 10de, device: 1ba1, class: 030000
     PCIR: revision 3, vendor revision: 1
     Last image

Omitting the romfile from the qemu commandline was what I tried first.

Next I tried building a UEFI ROM with GOP_Upd which gets me to the same 
error with nouveau (unknown chipset (ffffffff))

Open to suggestions :-)

cheers,
Woody

Kernel command line (from dmesg): - everything in here is for VFIO, 
happy to try new things.
BOOT_IMAGE=/boot/vmlinuz-4.15.0-23-generic 
root=UUID=69e42b1f-6eb0-11e8-a77a-80fa5b5a9d89 ro 
modprobe.blacklist=nouveau intel_iommu=on,igfx_off kvm.ignore_msrs=1 
nogpumanager acpi_osi=! acpi_osi=Linux "acpi_osi=Windows 2015" 
pcie_port_pm=off default_hugepagesz=1G hugepagesz=1G hugepages=12 
transparent_hugepage=never i915.modeset=1 rd.driver.pre=vfio-pci 
video=efifb:off

VM startup script:

#!/bin/bash

vmname="windows10vm"

if ps -A | grep -q $vmname; then
echo "$vmname is already running." &
exit 1

else

# use pulseaudio
export QEMU_AUDIO_DRV=pa
export QEMU_PA_SAMPLES=8192
export QEMU_AUDIO_TIMER_PERIOD=99
export QEMU_PA_SERVER=/run/user/1000/pulse/native

#cp /usr/share/OVMF/OVMF_VARS.fd /tmp/my_vars.fd

# turn on nvidia card
modprobe acpi_call
echo '\_SB_.PCI0.PEG0.PEGP._ON' > /proc/acpi/call


qemu-system-x86_64 -d trace:vfio_rom_read \
-name $vmname,process=$vmname \
-machine type=q35,accel=kvm \
-cpu 
host,kvm=off,hv_vapic,hv_relaxed,hv_spinlocks=0x1fff,hv_time,hv_vendor_id=12alphanum 
\
-smp 4,sockets=1,cores=2,threads=2 \
-m 12G \
-mem-path /dev/hugepages \
-mem-prealloc \
-balloon none \
-rtc clock=host,base=localtime \
-serial none \
-parallel none \
-soundhw hda \
-usb -usbdevice host:046d:c52b \
-device vfio-pci,host=01:00.0,romfile=GP104M_image.rom \
-boot order=dc \
-drive id=disk0,if=virtio,cache=none,format=raw,file=/home/woody/win.img \
-drive 
file=/home/woody/Downloads/virtio-win-0.1.141.iso,index=2,media=cdrom \
-drive file=/home/woody/linux.iso,index=1,media=cdrom \
#-drive file=/home/woody/win10dvd.iso,index=1,media=cdrom \
#-nographic \
#-vga none \
#-drive file=/home/woody/winXPdvd.iso,index=1,media=cdrom \
#-drive file=/usr/lib/memtest86+/memtest86+.iso,index=1,media=cdrom \
#-drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
#-drive if=pflash,format=raw,file=/tmp/my_vars.fd \
#-netdev type=tap,id=net0,ifname=vmtap0,vhost=on \
#-device virtio-net-pci,netdev=net0,mac=00:16:3e:11:03:76

# turn off nvidia card
echo '\_SB_.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call

exit 0
fi




More information about the vfio-users mailing list