[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