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
