[vfio-users] IGD passthrough: No Seabios output; PTE read access not set

Alex Williamson alex.williamson at redhat.com
Sat Dec 10 17:20:54 UTC 2016


On Sat, 10 Dec 2016 18:11:41 +0100
Manuel Ullmann <ullman.alias at posteo.de> wrote:

> > On Sat, 10 Dec 2016 02:07:43 +0100 > Manuel Ullmann <ullman.alias at posteo.de> wrote: > >>  
> qemu-system-x86_64 -cpu host\ >>                    -usb\
> >>                    -machine type=pc,accel=kvm\ >>                     
> -enable-kvm\ >>                    -vga none\ >>                   
> -nographic\ >>                    -display none\ >>                   
> -nodefconfig\ >>                    -display none\ >>                   
> -boot once=d\ >>                    -bios /usr/share/qemu/bios.bin\
> >>                    -m 2G\ >>                    -drive >>  
> file=/dev/genhd/ReactOS,cache=none,if=virtio,format=raw,index=0\
> >>                    -drive >>  
> file=/mnt/platz/Betriebssystemabbilder/virtio-win-0.1.118.iso,media=cdrom,index=2\
> >>                    -smb /mnt/platz/QemuShare\ >>                    #  
> headphone DAC >>                    -usbdevice host:1019:0011\
> >>                    # mouse >>                    -usbdevice  
> host:046d:c246\ >>                    -device >>
> vfio-pci,host=00:02.0,addr=02.0,bus=pci.0,x-vga=on,romfile=/mnt/platz/Bugs/intelBios/intelHaswell.rom\
> > > The ROM is always suspect, where did you get it?  Why are you  
> passing > one rather than letting QEMU get it?  The typical case for IGD
> ROMs > acquired through the rom file in sysfs is that the device ID does
> not > match and the checksum is off.  Either of these will prevent
> SeaBIOS > from using it.  QEMU will fix both of these automatically when
> it loads > the ROM itself.  If passing a romfile, you need to fix those
> in > advance.  Adding a serial console will generally give you SeaBIOS >
> logging.  Thanks, > > Alex
> 
> Ok, thanks for the hint. So, I get until the following section in your
> patch:
> 
> +                hw_error("vfio-igd: Guest attempted to program IGD GTT
> before "
> +                         "BIOS reserved stolen memory.  Unsupported
> BIOS?");
> 
> The vm will not boot anymore, but I guess that is caused by the pass
> through being tried finally.
> 
> Best regards,
> Manuel
> 
> New log:
> 
> qemu-system-x86_64: -smb /mnt/platz/QemuShare: The -smb option is
> deprecated. Please use '-netdev user,smb=...' instead.
> qemu-system-x86_64: Warning: speed mismatch trying to attach usb device
> "FOSTEX USB AUDIO HP-A4" (high speed) to bus "usb-bus.0", port "1" (full
> speed)
> SeaBIOS (version 1.8.2-20150714_191116-)
> RamSize: 0x80000000 [cmos]
> Relocating init from 0x000e1980 to 0x7ffb0620 (size 63776)
> Found QEMU fw_cfg
> RamBlock: addr 0x0000000000000000 len 0x0000000080000000 [e820]
> Moving pm_base to 0x600
> CPU Mhz=3206
> === PCI bus & bridge init ===
> PCI: pci_bios_init_bus_rec bus = 0x0
> === PCI device probing ===
> Found 9 PCI devices (max PCI bus is 00)
> === PCI new allocation pass #1 ===
> PCI: check devices
> === PCI new allocation pass #2 ===
> PCI: IO: c000 - c0cf
> PCI: 32: 0000000080000000 - 00000000fec00000
> PCI: map device bdf=00:02.0  bar 4, addr 0000c000, size 00000040 [io]
> PCI: map device bdf=00:04.0  bar 0, addr 0000c040, size 00000040 [io]
> PCI: map device bdf=00:01.2  bar 4, addr 0000c080, size 00000020 [io]
> PCI: map device bdf=00:03.0  bar 0, addr 0000c0a0, size 00000020 [io]
> PCI: map device bdf=00:01.1  bar 4, addr 0000c0c0, size 00000010 [io]
> PCI: map device bdf=00:02.0  bar 0, addr fe400000, size 00400000 [mem]
> PCI: map device bdf=00:03.0  bar 6, addr fe800000, size 00040000 [mem]
> PCI: map device bdf=00:02.0  bar 6, addr fe840000, size 00020000 [mem]
> PCI: map device bdf=00:03.0  bar 1, addr fe860000, size 00001000 [mem]
> PCI: map device bdf=00:04.0  bar 1, addr fe861000, size 00001000 [mem]
> PCI: map device bdf=00:02.0  bar 2, addr e0000000, size 10000000 [prefmem]
> PCI: map device bdf=00:03.0  bar 4, addr f0000000, size 00800000 [prefmem]
> PCI: map device bdf=00:04.0  bar 4, addr f0800000, size 00800000 [prefmem]
> PCI: init bdf=00:00.0 id=8086:1237
> PCI: init bdf=00:01.0 id=8086:7000
> PIIX3/PIIX4 init: elcr=00 0c
> PCI: init bdf=00:01.1 id=8086:7010
> PCI: init bdf=00:01.2 id=8086:7020
> PCI: init bdf=00:01.3 id=8086:7113
> Using pmtimer, ioport 0x608
> PCI: init bdf=00:02.0 id=8086:0412
> PCI: init bdf=00:03.0 id=1af4:1000
> PCI: init bdf=00:04.0 id=1af4:1001
> PCI: init bdf=00:1f.0 id=8086:8c4a
> PCI: Using 00:02.0 for primary VGA
> Found 1 cpu(s) max supported 1 cpu(s)
> Copying PIR from 0x7ffbfc80 to 0x000f1220
> Copying MPTABLE from 0x00006e20/7ffa72c0 to 0x000f1120
> Copying SMBIOS entry point from 0x00006e20 to 0x000f0f70
> Scan for VGA option rom
> Running option rom at c000:0003
> qemu: hardware error: vfio-igd: Guest attempted to program IGD GTT
> before BIOS reserved stolen memory.  Unsupported BIOS?

I think this is suggesting the remaining problem, you need a version of
SeaBIOS that supports IGD assignment.  That may be fixed by simply
removing the -bios option from your QEMU invocation such that the
default BIOS installed with QEMU is used.  Why are you running old rc
versions of things that have already been released anyway?  The
x-vga=on option is also unnecessary with IGD assignment.  Thanks,

Alex




More information about the vfio-users mailing list