You are not logged in.
Pages: 1
Hi,
I try to enable VGA passthrough of the integrated GPU to a Windows10 guest. I followed the steps in the wiki:
1) Check that my hardware supports IOMMU:
- CPU is Intel i5-4570 that supports it according to the specs over at Intel
- Mainboard is Gigabyte B85M-DS3H and the chipset B85 supports it according to the XEN wiki
- I did not find a clear answer to whether the integrated GPU does support UEFI but I found other posts in the WWW that used the same integrated GPU and it worked, so I naively concluded that it does work for me too ![]()
2) Enabling IOMMU via cmdline parameter - verified to work via dmesg output:
May 29 19:37:28 HOST kernel: ACPI: DMAR 0x00000000CA66BD40 0000B8 (v01 INTEL HSW 00000001 INTL 00000001)
May 29 19:37:28 HOST kernel: Kernel command line: initrd=\intel-ucode.img initrd=\initramfs-linux.img loglevel=7 root=/dev/sda3 rw intel_iommu=on vfio-pci.ids=8086:0412
May 29 19:37:28 HOST kernel: DMAR: IOMMU enabled
May 29 19:37:28 HOST kernel: DMAR: Host address width 39
May 29 19:37:28 HOST kernel: DMAR: DRHD base: 0x000000fed90000 flags: 0x0
May 29 19:37:28 HOST kernel: DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
May 29 19:37:28 HOST kernel: DMAR: DRHD base: 0x000000fed91000 flags: 0x1
May 29 19:37:28 HOST kernel: DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008020660462 ecap f010da
May 29 19:37:28 HOST kernel: DMAR: RMRR base: 0x000000ca509000 end: 0x000000ca515fff
May 29 19:37:28 HOST kernel: DMAR: RMRR base: 0x000000cb800000 end: 0x000000cf9fffff
May 29 19:37:28 HOST kernel: DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
May 29 19:37:28 HOST kernel: DMAR-IR: HPET id 0 under DRHD base 0xfed91000
May 29 19:37:28 HOST kernel: DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
May 29 19:37:28 HOST kernel: DMAR-IR: Enabled IRQ remapping in x2apic mode
May 29 19:37:28 HOST kernel: iommu: Default domain type: Translated
May 29 19:37:28 HOST kernel: DMAR: No ATSR found
May 29 19:37:28 HOST kernel: DMAR: dmar0: Using Queued invalidation
May 29 19:37:28 HOST kernel: DMAR: dmar1: Using Queued invalidation
May 29 19:37:28 HOST kernel: pci 0000:00:00.0: Adding to iommu group 0
May 29 19:37:28 HOST kernel: pci 0000:00:01.0: Adding to iommu group 1
May 29 19:37:28 HOST kernel: pci 0000:00:02.0: Adding to iommu group 2
May 29 19:37:28 HOST kernel: pci 0000:00:03.0: Adding to iommu group 3
May 29 19:37:28 HOST kernel: pci 0000:00:14.0: Adding to iommu group 4
May 29 19:37:28 HOST kernel: pci 0000:00:1a.0: Adding to iommu group 5
May 29 19:37:28 HOST kernel: pci 0000:00:1b.0: Adding to iommu group 6
May 29 19:37:28 HOST kernel: pci 0000:00:1c.0: Adding to iommu group 7
May 29 19:37:28 HOST kernel: pci 0000:00:1c.2: Adding to iommu group 8
May 29 19:37:28 HOST kernel: pci 0000:00:1d.0: Adding to iommu group 9
May 29 19:37:28 HOST kernel: pci 0000:00:1f.0: Adding to iommu group 10
May 29 19:37:28 HOST kernel: pci 0000:00:1f.2: Adding to iommu group 10
May 29 19:37:28 HOST kernel: pci 0000:00:1f.3: Adding to iommu group 10
May 29 19:37:28 HOST kernel: pci 0000:01:00.0: Adding to iommu group 1
May 29 19:37:28 HOST kernel: pci 0000:01:00.1: Adding to iommu group 1
May 29 19:37:28 HOST kernel: pci 0000:03:00.0: Adding to iommu group 11
May 29 19:37:28 HOST kernel: DMAR: Intel(R) Virtualization Technology for Directed I/O
May 29 19:37:28 HOST kernel: AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
May 29 19:37:28 HOST kernel: AMD-Vi: AMD IOMMUv2 functionality not available on this system
May 29 19:37:28 HOST kernel: intel_iommu=on
3) Getting the relevant group and vendor-device ID pair
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)
4) Declare vendor-device ID pair in cmdline
...
options loglevel=7 root=/dev/sda3 rw intel_iommu=on vfio-pci.ids=8086:0412
5) Enable early vfio loading and rebuild initram
...
MODULES=(vfio_pci vfio vfio_iommu_type1 vfio_virqfd)
6) Verification
[ 1.126635] VFIO - User Level meta-driver version: 0.3
[ 1.130925] vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=mem
[ 1.131542] vfio_pci: add [8086:0412[ffffffff:ffffffff]] class 0x000000/00000000
[ 6995.395949] vfio-pci 0000:00:02.0: enabling device (0002 -> 0003)
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
Subsystem: Gigabyte Technology Co., Ltd Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [1458:d000]
Kernel driver in use: vfio-pci
Kernel modules: i915
7) Setup Win10 VM
Nothing special in the first step, except for setting UEFI
8) Remove spice channel and virtual display, the QXL video adapter and add host PCI device 00:02:0
I did not add mouse + keyboard however
9) Connect second monitor to the integrated GPU HDMI port
10) Start VM -> no output
libvirtd journal output doesn't give any hints. Any ideas?
Edit: By adding both the host PCI VGA device and the virtual devices I was able to check the Windows device manager: it lists the device prperly as Intel HD4600, but says that the driver installation failed:
Windows has stopped this device because it reported problems (Code 43)
Windows website says this about Code 43:
This error occurs when your graphics device driver has notified Windows that the device isn’t working properly. This may mean that the device has a hardware problem, or that the driver or driver software is failing
I also have the i915 module blacklisted that was originally used to drive the integrated GPU - but that should not make much of a difference because early loading of vfio anyway I assume?
Last edited by MK13 (2020-05-29 21:08:39)
Offline
I got some help from https://github.com/jam3st/vfio-hd4600. The author seemed ok but then stopped responding. For me windows works without UEFI BIOS but I needed to passthough the OpRegion.
Offline
Pages: 1