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

globalgorrilla at fastmail.fm globalgorrilla at fastmail.fm
Thu Jul 28 00:01:21 UTC 2016


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?

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

% dmesg | grep DMAR
[    0.000000] ACPI: DMAR 0x000000008CC7BB20 0000B0 (v01 INTEL  BDW     
00000001 INTL 00000001)
[    0.000000] DMAR: IOMMU enabled
[    0.045040] DMAR: Host address width 39
[    0.045041] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.045045] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap
c0000020660462 ecap f0101a
[    0.045046] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.045049] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap
d2008c20660462 ecap f010da
[    0.045049] DMAR: RMRR base: 0x0000008cbd6000 end: 0x0000008cbe3fff
[    0.045050] DMAR: RMRR base: 0x0000008f000000 end: 0x000000af1fffff
[    0.045051] DMAR-IR: IOAPIC id 8 under DRHD base  0xfed91000 IOMMU 1
[    0.045052] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.045053] DMAR-IR: Queued invalidation will be enabled to support
x2apic and Intr-remapping.
[    0.045249] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.975768] DMAR: No ATSR found
[    0.976140] DMAR: dmar0: Using Queued invalidation
[    0.976145] DMAR: dmar1: Using Queued invalidation
[    1.095073] DMAR: Software identity mapping for device 0000:00:00.0
[    1.095074] DMAR: Software identity mapping for device 0000:00:01.0
[    1.095078] DMAR: Software identity mapping for device 0000:00:02.0
[    1.095079] DMAR: Software identity mapping for device 0000:00:14.0
[    1.095080] DMAR: Software identity mapping for device 0000:00:16.0
[    1.095080] DMAR: Software identity mapping for device 0000:00:19.0
[    1.095081] DMAR: Software identity mapping for device 0000:00:1c.0
[    1.095082] DMAR: Software identity mapping for device 0000:00:1c.3
[    1.095083] DMAR: Software identity mapping for device 0000:00:1d.0
[    1.095083] DMAR: Software identity mapping for device 0000:00:1f.0
[    1.095084] DMAR: Software identity mapping for device 0000:00:1f.2
[    1.095085] DMAR: Software identity mapping for device 0000:00:1f.3
[    1.095089] DMAR: Software identity mapping for device 0000:01:00.0
[    1.095092] DMAR: Software identity mapping for device 0000:02:08.0
[    1.095093] DMAR: Software identity mapping for device 0000:02:10.0
[    1.095094] DMAR: Software identity mapping for device 0000:02:11.0
[    1.095098] DMAR: Software identity mapping for device 0000:04:00.0
[    1.095098] DMAR: Software identity mapping for device 0000:04:00.1
[    1.095102] DMAR: Software identity mapping for device 0000:07:00.0
[    1.095106] DMAR: Software identity mapping for device 0000:08:01.0
[    1.095107] DMAR: Software identity mapping for device 0000:08:02.0
[    1.095108] DMAR: Software identity mapping for device 0000:08:04.0
[    1.095109] DMAR: Software identity mapping for device 0000:08:05.0
[    1.095109] DMAR: Software identity mapping for device 0000:08:06.0
[    1.095113] DMAR: Software identity mapping for device 0000:0d:00.0
[    1.095114] DMAR: Setting RMRR:
[    1.095115] DMAR: Setting identity map for device 0000:00:02.0
[0x8f000000 - 0xaf1fffff]
[    1.097008] DMAR: Setting identity map for device 0000:00:14.0
[0x8cbd6000 - 0x8cbe3fff]
[    1.097012] DMAR: Setting identity map for device 0000:00:1d.0
[0x8cbd6000 - 0x8cbe3fff]
[    1.097013] DMAR: Prepare 0-16MiB unity mapping for LPC
[    1.097014] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 -
0xffffff]
[    1.097110] DMAR: Intel(R) Virtualization Technology for Directed I/O


% /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

---

Thanks




More information about the vfio-users mailing list