qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Driver error: Code 43] Trying to GPU passthrough my IGD (Intel HD G


From: Kai Peter
Subject: Re: [Driver error: Code 43] Trying to GPU passthrough my IGD (Intel HD Graphics 4600) using legacy mode.
Date: Tue, 18 Aug 2020 14:48:19 +0200
User-agent: Roundcube Webmail/1.3.2

Hi,

I did run in a similar issue a few weeks ago. I don't have a solution, but maybe some of my experience is helpful.

After updating Windows 10 to build 1909 I got the error 43 for my passed-through GPU. It doesn't change with build 2004. I did changed the graphic card - no change. For testing purposes I did install a separate Windows 7 vm - and voila, GPU passthru was working! Thus I "believe" it must be a Windows 10 issue.

Now, I'm not a gamer, thus the power of a pass-thru GPU isn't important to me. More over I have passed-thru a sound card and a sata/usb card with pci pass-thru - both are working still fine.

I assume it is an issue with hypervisor detection of Windows 10 (wsl2 ?). VMware does have an option to hide a hypervisor for the guest. I couldn't check if this works. Does qemu have a similar option? I didn't found it.

Anyway, I would appreciate any further information. Unfortunately I don't have enough time to investigate further. It was a short dream to have Linux and Windows running at one time on one PC.

regards
Kai

On 2020-08-04 21:32, Lucas Rizzini wrote:
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

--
Sent with eQmail-1.10.3 beta - a fork of djb's famous qmail



reply via email to

[Prev in Thread] Current Thread [Next in Thread]