[vfio-users] BIOS memory mapping or chipset issue with MMIO prevents IGD pass-through in legacy mode?

Alex Williamson alex.williamson at redhat.com
Thu Jul 28 00:20:57 UTC 2016


On Wed, 27 Jul 2016 17:01:21 -0700
globalgorrilla at fastmail.fm wrote:

> Hello,
> 
> Do you reckon this is what some bugzilla's find to be a motherboard
> memory mapping issue or a chipset issue? 
> 
> Any ideas on working around it besides opting the IGD out of MMIO? 
> 
> Doing that prevents it from being used with vfio-pci and qemu.
> 
> ---
> 
> i7-4790k, ASUS Z97-WS (BIOS 2403), kernel 4.7, qemu v2.7.0-rc0
> 
> % lspci -vvn -s 00:02
> 00:02.0 0300: 8086:0412 (rev 06) (prog-if 00 [VGA controller])
>         Subsystem: 1043:8534
>         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-
>         Latency: 0
>         Interrupt: pin A routed to IRQ 11
>         Region 0: Memory at df800000 (64-bit, non-prefetchable)
>         [size=4M]
>         Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
>         Region 4: I/O ports at f000 [size=64]
>         [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
>         Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
>                 Address: 00000000  Data: 0000
>         Capabilities: [d0] Power Management version 2
>                 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
>                 PME(D0-,D1-,D2-,D3hot-,D3cold-)
>                 Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>         Capabilities: [a4] PCI Advanced Features
>                 AFCap: TP+ FLR+
>                 AFCtrl: FLR-
>                 AFStatus: TP-
>         Kernel driver in use: vfio-pci
>         Kernel modules: i915
> 
> % cat /proc/cmdline
> ... intel_iommu=on iommu=pt default_hugepagesz=1G hugepagesz=1G
> hugepages=16 kvm.ignore_msrs=1 intremap=no_x2apic_optout console=ttyS0
> video=vesafb:off,efifb:off ...
> 
> % cat /etc/modprobe.d/blacklist.conf 
> blacklist efifb
> install efifb /bin/false
> 
> % cat /etc/modprobe.d/vfio.conf 
> options vfio-pci ids=8086:0412
> ---
> 
> First  I re-built the kernel with efifb as a module for the modprobe
> blacklist to prevent efifb from binding.  Something in systemd-boot?

Not necessary, the video=efifb:off should take care of it.
 
> Now enabling CSM in the BIOS has made the Video ROM available (whilst
> still booting with UEFI) but qemu still can't enable VGA access and
> legacy pass-through mode is disabled.
> 
> ---
> 
> % grep Video /proc/iomem        
> 00000000-00000000 : Video ROM

Recent kernels won't show /proc/iomem or /proc/ioport to regular users
as a security measure.  You need sudo to see anything.

> % /usr/bin/qemu-system-x86_64 -name guest=win10_1 -S \
> -machine pc-i440fx-2.6,accel=kvm,usb=off \
> -cpu host -m 8192 \
> -mem-prealloc -mem-path /dev/hugepages/libvirt/qemu \
> -smp 6,sockets=1,cores=3,threads=2 \
> -nographic -no-user-config -nodefaults \
> -device vfio-pci,host=00:02.0,id=hostdev0,bus=pci.0,addr=0x2 \
> -msg timestamp=on \
> -bios /usr/share/qemu/bios.bin
> 
> ...
> [   45.426546] DMAR: DRHD: handling fault status reg 3
> [   45.484901] DMAR: [DMA Read] Request device [00:02.0] fault addr
> 8f2c0000 [fault reason 06] PTE Read access is not set
> [   45.612929] DMAR: DRHD: handling fault status reg 2
> [   45.671267] DMAR: [DMA Read] Request device [00:02.0] fault addr
> 8f314000 [fault reason 06] PTE Read access is not set
> [   45.799288] DMAR: DRHD: handling fault status reg 2
> [   45.857634] DMAR: [DMA Read] Request device [00:02.0] fault addr
> 8f3a7000 [fault reason 06] PTE Read access is not set
> 
> qemu.log:
> qemu-system-x86_64: -device
> vfio-pci,host=00:02.0,id=hostdev0,bus=pci.0,addr=0x2: IGD device
> 0000:00:02.0 failed to enable VGA access, legacy mode disabled

Is you kernel built with CONFIG_VFIO_PCI_VGA=y?




More information about the vfio-users mailing list