Host OS: Arch Linux x64
Guest OS: Windows 10 x64
Scenario:
*
Host bios firmware: Tried with pure UEFI firmware and with CSM
enabled.
*
Virtual Machine scheme (xml)<https://pastebin.com/J0zZEvwm>
*
CPU: Intel i5 4590T (Haswell) -> It doesn't have GVT-d nor GVT-g, so
I'm trying the legacy mode.
*
GPUs:
1- Intel HD Graphics 4600(headless - no cable attached). Primary host
GPU.
2-RX580(HDMI cable connected). -> I'll keep this to the host.
*
IOMMU groups list<https://pastebin.com/3JRnAxpR>
*
Seabios log
<https://pastebin.com/pDXbK5rn>
*
Kernel parameters: intel_iommu=on iommu=pt efifb=off simplefb=off nofb
vfio-pci.ids=8086:0412,8086:0c0c
Things I tried:
1- Compile latest rc2 qemu.
2- /etc/modprobe.d/iommu_unsafe_interrupts.conf -> "options
vfio_iommu_type1 allow_unsafe_interrupts=1"
3- Set "pc-i440fx-2.2" to several versions.
4- Compile Seabios with some specific patch I found online.
5- /etc/modprobe.d/kvm.conf -> "options kvm ignore_msrs=1"
6- Set x-vga to "yes" and "no". I know it doesn't make difference on
legacy mode.
7- Some qemu arguments(e. g. -nographic) regarding graphics, setting
all those to off.
Above codes:
Virtual Machine scheme (xml):
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0"
type="kvm">
<name>win10-2</name>
<uuid>6be7332e-a4bf-43c5-a462-c01c4cfd8bf4</uuid>
<metadata>
<libosinfo:libosinfo
xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/10"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">3072000</memory>
<currentMemory unit="KiB">3072000</currentMemory>
<vcpu placement="static">4</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-5.1">hvm</type>
<loader type="rom">/usr/share/qemu/bios.bin</loader>
</os>
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
</hyperv>
<vmport state="off"/>
</features>
<cpu mode="host-model" check="partial">
<topology sockets="1" dies="1" cores="4" threads="1"/>
</cpu>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
<timer name="hypervclock" present="yes"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw" cache="writeback" io="threads"/>
<source
file="/mnt/btr_pool/libvirt_imagens/Win10_2004_BrazilianPortuguese_x64.iso"/>
<target dev="sdb" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0"
unit="1"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source
file="/mnt/btr_pool/libvirt_imagens/virtio-win-0.1.160.iso"/>
<target dev="sdc" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0"
unit="2"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="raw" cache="writeback" io="threads"/>
<source file="/mnt/btr_pool/libvirt_imagens/win10_iGPU.img"/>
<target dev="sdd" bus="sata"/>
<boot order="1"/>
<address type="drive" controller="0" bus="0" target="0"
unit="3"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04"
function="0x0"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<controller type="scsi" index="0" model="virtio-scsi">
<address type="pci" domain="0x0000" bus="0x00" slot="0x05"
function="0x0"/>
</controller>
<controller type="sata" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x06"
function="0x0"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x09"
function="0x0"/>
</controller>
<interface type="network">
<mac address="52:54:00:50:c4:ca"/>
<source network="default"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x11"
function="0x0"/>
</interface>
<interface type="direct">
<mac address="52:54:00:b2:a8:eb"/>
<source dev="enp2s0" mode="bridge"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03"
function="0x0"/>
</interface>
<input type="tablet" bus="usb">
<address type="usb" bus="0" port="1"/>
</input>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x00" slot="0x02"
function="0x0"/>
</source>
<rom bar="on"
file="/mnt/btr_pool/libvirt_imagens/vbios_iGPU.dump"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02"
function="0x0"/>
</hostdev>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x08"
function="0x0"/>
</memballoon>
</devices>
<qemu:commandline>
<qemu:arg value="-chardev"/>
<qemu:arg value="stdio,id=seabios"/>
<qemu:arg value="-device"/>
<qemu:arg value="isa-debugcon,iobase=0x402,chardev=seabios"/>
<qemu:arg value="-nodefaults"/>
</qemu:commandline>
</domain>
IOMMU groups list:
IOMMU Group 0:
00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core
Processor DRAM Controller [8086:0c00] (rev 06)
IOMMU Group 1:
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200
v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev
06)
01:00.0 VGA compatible controller [0300]: Advanced Micro
Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX
470/480/570/570X/580/580X/590] [1002:67df] (rev e7)
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc.
[AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
[1002:aaf0]
IOMMU Group 10:
00:1f.0 ISA bridge [0601]: Intel Corporation H81 Express LPC
Controller [8086:8c5c] (rev 05)
00:1f.2 SATA controller [0106]: Intel Corporation 8
Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
[8086:8c02] (rev 05)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series
Chipset Family SMBus Controller [8086:8c22] (rev 05)
IOMMU Group 11:
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co.,
Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
[10ec:8168] (rev 07)
IOMMU Group 2:
00:02.0 VGA compatible controller [0300]: Intel Corporation
Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
[8086:0412] (rev 06)
IOMMU Group 3:
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200
v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
IOMMU Group 4:
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220
Series Chipset Family USB xHCI [8086:8c31] (rev 05)
IOMMU Group 5:
00:16.0 Communication controller [0780]: Intel Corporation 8
Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev
04)
IOMMU Group 6:
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220
Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 05)
IOMMU Group 7:
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220
Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
IOMMU Group 8:
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220
Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d5)
IOMMU Group 9:
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220
Series Chipset Family USB EHCI #1 [8086:8c26] (rev 05)
Seabios log:
SeaBIOS (version
rel-1.13.0-48-gd9c812d-dirty-20200802_185458-arch-linux)
BUILD: gcc: (GCC) 10.1.0 binutils: (GNU Binutils) 2.34.0
No Xen hypervisor found.
Found QEMU fw_cfg
QEMU fw_cfg DMA interface supported
qemu/e820: addr 0x0000000000000000 len 0x00000000bb800000 [RAM]
Relocating init from 0x000d6220 to 0xbb7ab6a0 (size 84160)
Moving pm_base to 0x600
boot order:
1: /pci@i0cf8/pci8086,2922@6/drive@3/disk@0
2: HALT
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 13 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: IO: c000 - c16f
PCI: 32: 00000000c0000000 - 00000000fec00000
PCI: map device bdf=00:02.0 bar 4, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:05.0 bar 0, addr 0000c040, size 00000040 [io]
PCI: map device bdf=00:08.0 bar 0, addr 0000c080, size 00000040 [io]
PCI: map device bdf=00:09.0 bar 0, addr 0000c0c0, size 00000040 [io]
PCI: map device bdf=00:03.0 bar 0, addr 0000c100, size 00000020 [io]
PCI: map device bdf=00:06.0 bar 4, addr 0000c120, size 00000020 [io]
PCI: map device bdf=00:11.0 bar 0, addr 0000c140, size 00000020 [io]
PCI: map device bdf=00:01.1 bar 4, addr 0000c160, 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:11.0 bar 6, addr fe840000, size 00040000 [mem]
PCI: map device bdf=00:02.0 bar 6, addr fe880000, size 00010000 [mem]
PCI: map device bdf=00:04.0 bar 0, addr fe890000, size 00004000 [mem]
PCI: map device bdf=00:03.0 bar 1, addr fe894000, size 00001000 [mem]
PCI: map device bdf=00:05.0 bar 1, addr fe895000, size 00001000 [mem]
PCI: map device bdf=00:06.0 bar 5, addr fe896000, size 00001000 [mem]
PCI: map device bdf=00:09.0 bar 1, addr fe897000, size 00001000 [mem]
PCI: map device bdf=00:11.0 bar 1, addr fe898000, 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 00004000
[prefmem]
PCI: map device bdf=00:05.0 bar 4, addr f0004000, size 00004000
[prefmem]
PCI: map device bdf=00:08.0 bar 4, addr f0008000, size 00004000
[prefmem]
PCI: map device bdf=00:09.0 bar 4, addr f000c000, size 00004000
[prefmem]
PCI: map device bdf=00:11.0 bar 4, addr f0010000, size 00004000
[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.3 id=8086:7113
Using pmtimer, ioport 0x608
PCI: init bdf=00:02.0 id=8086:0412
Intel IGD OpRegion enabled at 0xbb7fe000, size 8KB, dev 00:02.0
Intel IGD BDSM enabled at 0xbb500000, size 2MB, dev 00:02.0
PCI: init bdf=00:03.0 id=1af4:1000
PCI: init bdf=00:04.0 id=1b36:000d
PCI: init bdf=00:05.0 id=1af4:1004
PCI: init bdf=00:06.0 id=8086:2922
PCI: init bdf=00:08.0 id=1af4:1002
PCI: init bdf=00:09.0 id=1af4:1003
PCI: init bdf=00:11.0 id=1af4:1000
PCI: init bdf=00:1f.0 id=8086:8c5c
PCI: Using 00:02.0 for primary VGA
handle_smp: apic_id=0x2
handle_smp: apic_id=0x1
handle_smp: apic_id=0x3
Found 4 cpu(s) max supported 4 cpu(s)
Copying PIR from 0xbb7bfc40 to 0x000f5dc0
Copying MPTABLE from 0x00006d84/bb7a2070 to 0x000f5ca0
Copying SMBIOS entry point from 0x00006ccd to 0x000f5ad0
table(50434146)=0xbb7df3a0 (via rsdt)
ACPI: parse DSDT at 0xbb7de040 (len 4960)
Scan for VGA option rom
Turning on vga text mode console
SeaBIOS (version
rel-1.13.0-48-gd9c812d-dirty-20200802_185458-arch-linux)
Machine UUID 6be7332e-a4bf-43c5-a462-c01c4cfd8bf4
XHCI init on dev 00:04.0: regs @ 0xfe890000, 30 ports, 64 slots, 32
byte contexts
XHCI protocol USB 2.00, 15 ports (offset 16), def 0
XHCI protocol USB 3.00, 15 ports (offset 1), def 0
ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9)
ATA controller 2 at 170/374/0 (irq 15 dev 9)
AHCI controller at 00:06.0, iobase 0xfe896000, irq 10
Searching bootorder for: /pci@i0cf8/*@6/drive@1/disk@0
Searching bios-geometry for: /pci@i0cf8/*@6/drive@1/disk@0
PS2 keyboard initialized
Searching bootorder for: /pci@i0cf8/*@6/drive@2/disk@0
Searching bios-geometry for: /pci@i0cf8/*@6/drive@2/disk@0
AHCI/1: registering: "DVD/CD [AHCI/1: QEMU DVD-ROM ATAPI-4 DVD/CD]"
Searching bootorder for: /pci@i0cf8/*@6/drive@3/disk@0
AHCI/3: Set transfer mode to UDMA-5
Searching bios-geometry for: /pci@i0cf8/*@6/drive@3/disk@0
AHCI/2: registering: "DVD/CD [AHCI/2: QEMU DVD-ROM ATAPI-4 DVD/CD]"
AHCI/3: registering: "AHCI/3: QEMU HARDDISK ATA-7 Hard-Disk (20480
MiBytes)"
Searching bootorder for: HALT
Searching bootorder for: /pci@i0cf8/*@5
skipping init of a non-bootable virtio-scsi at 00:05.0
Found 0 lpt ports
Found 0 serial ports
XHCI port #16: 0x00220e03, powered, enabled, pls 0, speed 3 [High]
XHCI no devices found
All threads complete.
Scan for option roms
Running option rom at c000:0003
pmm call arg1=1
pmm call arg1=0
pmm call arg1=1
pmm call arg1=0
Running option rom at c100:0003
pmm call arg1=1
pmm call arg1=1
Searching bootorder for: /pci@i0cf8/*@3
Searching bootorder for: /pci@i0cf8/*@11
Searching bootorder for: /rom@genroms/kvmvapic.bin
Searching bootorder for: HALT
drive 0x000f5960: PCHS=16383/16/63 translation=lba LCHS=1024/255/63
s=41943040
Running option rom at c200:0003
Space available for UMB: c4800-e9800, f5640-f5930
Returned 114688 bytes of ZoneHigh
e820 map has 9 items:
0: 0000000000000000 - 000000000009fc00 = 1 RAM
1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
3: 0000000000100000 - 00000000bb500000 = 1 RAM
4: 00000000bb500000 - 00000000bb700000 = 2 RESERVED
5: 00000000bb700000 - 00000000bb7dc000 = 1 RAM
6: 00000000bb7dc000 - 00000000bb800000 = 2 RESERVED
7: 00000000feffc000 - 00000000ff000000 = 2 RESERVED
8: 00000000fffc0000 - 0000000100000000 = 2 RESERVED
enter handle_19:
NULL
Booting from Hard Disk...
Booting from 0000:7c00
Faithfully,
Lucas Rizzini