Intel IGD (integrated graphics) Pass Through Support - March 2016 Update


Recommended Posts

On 7/31/2019 at 10:19 PM, emod said:

Hello,

 

I read through all posts and it seems that GPU passthrough for i7-8700 (integrated GPU  - HDU 630) on Asus MoBo is not available to run OSX VM.

Here is my post with all details on CPU, MoBo, errors and other stuff.

 

 

My CPU is compatible with iGTV project (which supports Intel i-7 8th generation)

 

Are there any solutions as of July 31, 2019, to pass through this GPU?

 

Any step by step guide would be appreciated!

 

Btw, I entered BIOS, and ensured that primary Graphics is set to use the Integrated GPU on my CPU. I can start OSX VM but I get frozen login screen and cannot proceed.

 

Thank you!

 

Hi emod, I'm running an i-7 8700 with and Asus h370-I and I have tried every single solution I could find and none of them have been successful. The furthest I have got is when running a VM on Seabios I can get a display of the Seabios Post screen but it just sits there with a flashing cursor. I'm desperate to find a solution.

Link to comment
  • 4 weeks later...

I had a couple of questions related to this:

 

Does this work with the mediated passthrough? (multiple virtual GPUs created from one real devices) or only GVT-d (single device)?

 

Reading around it sounds like coffeelake support exists but its a pretty recent development and there aren't a lot of reports in the wild. Some people claim they have it working on arch though, I believe it requires 5.1 or 5.2 linux kernel. Are there plans to merge this in?

Link to comment
  • 1 month later...

Hello - I have a haswell chip with an IGPU i'm trying to passthrough to Catalina MacOS vm. However i dont see the iGPU in the iommu. I see my discrete gpu but thats it.. is there something im missing here to get it to show up?

 

many thanks.

Edited by pimogo
Link to comment
  • 2 weeks later...
  • 2 weeks later...

I have this working on my z370+i5 8400 machine with Windows 10 and linux VMs.

 

Not sure what I'm doing that others aren't but I'm using the igpu has the host GPU (so it loses output when VM starts), the VMs have to be seabios, I have vesafb and efifb disabled but I doubt that is needed.

 

I may have added i915.enable_gvt=1 to syslinux, but I think that was just in an attempt to get mediated passthrough to work. I can't remember if I blacklisted the i915 driver or not.

 

I'm using 6.6.7 unraid

Edited by scorcho99
Link to comment
On 11/22/2019 at 2:09 PM, scorcho99 said:

I have this working on my z370+i5 8400 machine with Windows 10 and linux VMs.

 

Not sure what I'm doing that others aren't but I'm using the igpu has the host GPU (so it loses output when VM starts), the VMs have to be seabios, I have vesafb and efifb disabled but I doubt that is needed.

 

I may have added i915.enable_gvt=1 to syslinux, but I think that was just in an attempt to get mediated passthrough to work. I can't remember if I blacklisted the i915 driver or not.

 

I'm using 6.6.7 unraid

Thanks, that sounds promising. I really want to move back to unraid but only if i can get a 9th gen cpu to passthrough its igpu to a vm (to do plex transcoding)

Link to comment

I too just got this working.. i7 8700 630 iGPU on Win10 vm.

 

Done nothing fancy just Seabios and passthrough the 630 iGPU, I was having issues with getting the driver to work correctly (I think it was error code 43) but after googling I found someone having a similar issue with Proxmox. To resolve this I had to up the RAM from 4GB to 8GB.

 

Hope this helps others!

 

 

Link to comment
  • 5 weeks later...

So I have a Asrock Z97 Extreme6 w/ I5-4590. I created a Windows 10 Pro VM and appended the neccessary command into the syslinux for the GPU passthrough. I managed to install the Intel HD Graphics driver within the VM and I do not see any errors and things seem to be running ok.

 

I am using the latest Intel HD4600 drivers from Intel (15.40.42.5063)

 

However, I do have a question and that is. Are you suppose to see the GPU column inside the Windows Task Manager within the VM as I do not see the column either in the Processes Tab or the Performance Tab. Am I missing something here?

 

Edited by CyberFunk
Link to comment
  • 1 month later...
On 12/3/2019 at 11:52 AM, Aussybob said:

I too just got this working.. i7 8700 630 iGPU on Win10 vm.

 

Done nothing fancy just Seabios and passthrough the 630 iGPU, I was having issues with getting the driver to work correctly (I think it was error code 43) but after googling I found someone having a similar issue with Proxmox. To resolve this I had to up the RAM from 4GB to 8GB.

 

Hope this helps others!

 

 

Yes, it helps a lot!:) My UHD610 is working without any additional changes, just had to set the memory to 5GB or above, everything below 5GB will result in an error message in Windows... but audio via HDMI isn't working for me (as far as I know the UHD 610 is supposed to have audio support). I only get the onboard audio listed in the vm settings, but there's no way to use this one since its in the same IOMMU group as many other devices 

Link to comment
  • 1 month later...

So far so good i didn't have luck, im a bit newbie, but altough i have installed hd 630 drivers from intel and it's listed below system devices i am not getting video from my vga port. I am a bit lost, should i use another port, should i disable efi support, should i need to dump vbios?. My specs are:
CPU Core i5 7500

MB Asus z170k
IGPU HD Graphics 630
Added this line below Label Unraid OS:


 kernel /bzimage
  append append pcie_acs_override=downstream,multifunction vfio-pci.ids=8086:0412,8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus,snd_hda_intel,snd_hda_codec_hdmi,i915,drm,drm_kms_helper,i2c_algo_bit video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

thanks in advance.

Link to comment

I am sorry to write this late, apparently i managed to get video from my vga port, seems that i just had to disable "Permit UEFI boot mode" under main/flash/syslinux configuration and voila, that made the trick:

Syslinux conf:
 kernel /bzimage
append pcie_acs_override=downstream,multifunction vfio-pci.ids=8086:0412,8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus,snd_hda_intel,snd_hda_codec_hdmi,i915,drm,drm_kms_helper,i2c_algo_bit video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

Added IGPU (8086:0412) to vm and Integrated sound card (8086:a170). Also switched PCIE ACS override to BOTH and VFIO allow safe interrupts to YES under Settings-VM manager. Good luck and thanks you guys for sharing info.

Edited by ABNESIS
Link to comment
  • 2 weeks later...

Hello,

I'm hoping someone can help me figure this out and get passthrough working.

I have an Asrock J4105 with an Intel Quad-core processor and onboard Intel UHD605 graphics.

 

I've installed Unraid (loving it), but it's also a real desire of mine to use the machine as a media player. I've been trying to passthrough the UHD605 to a VM of Ubuntu. (Though I'll take any OS, if passthrough to it can work.). After much scouring of forums, I've gotten to a point where Ubuntu VM runs happily from the DVI output. But the video card is still never recognised properly and I can't get hardware acceleration to effectively play video files.

A bare metal host install of Ubuntu works absolutely fine with the UHD605 card.

 

In 'good' host Ubuntu settings I see this, and it's what I want:

ubuntu-working.jpg.5b3b4b2a531d61c720ae5b05576c096b.jpg

 

But in VM Ubuntu what I get instead is:

ubuntu-notWorking.jpg.68792082a040ede68a99d7bdfbbb4a11.jpg

 

My Unraid OS syslinux config is:

Unraid OS:

kernel /bzimage
append pcie_acs_override=downstream,multifunction vfio-pci.ids=8086:0412,8086:a170 video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

I was using a modprobe.blacklist=.... But it didn't seem to make any difference.

I'm even supplying a Video Rom bios of the UHD605 - which doesn't seem to make much difference either way.

 

My VMS settings has PCIe override set to: Both, and VFIO Allow unsafe interrupts is: Yes.

 

But still with all that, I can't get proper passthrough.

 

When I look through Dmesg in Ubuntu I see the following error that I think is the culprit:

[drm:i915_gem_init_stolen [i915]] *ERROR* conflict detected with stolen region: [mem 0x70000000-0x7fffffff]

 

My Ubuntu VM log from Unraid looks like this:



ErrorWarningSystemArrayLogin

-overcommit mem-lock=off \
-smp 2,sockets=1,cores=2,threads=1 \
-uuid a2e91254-bd7c-8e33-fcf6-cc9a5f85ce29 \
-display none \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=33,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-shutdown \
-boot strict=on \
-device pcie-root-port,port=0xb,chassis=4,id=pci.4,bus=pcie.0,addr=0x1.0x3 \
-device pcie-root-port,port=0x8,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x1 \
-device pcie-root-port,port=0x9,chassis=2,id=pci.2,bus=pcie.0,addr=0x1.0x1 \
-device pcie-root-port,port=0xa,chassis=3,id=pci.3,bus=pcie.0,addr=0x1.0x2 \
-device ich9-usb-ehci1,id=usb,bus=pcie.0,addr=0x7.0x7 \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pcie.0,multifunction=on,addr=0x7 \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pcie.0,addr=0x7.0x1 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pcie.0,addr=0x7.0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.2,addr=0x0 \
-blockdev '{"driver":"file","filename":"/mnt/user/domains/Ubuntu-19_2nd/vdisk1.img","node-name":"libvirt-1-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"}' \
-device ide-hd,bus=ide.2,drive=libvirt-1-format,id=sata0-0-2,bootindex=1,write-cache=on \
-netdev tap,fd=35,id=hostnet0,vhost=on,vhostfd=36 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:2b:b5:3f,bus=pci.1,addr=0x0 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,fd=38,server,nowait \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
-device vfio-pci,host=0000:00:02.0,id=hostdev0,bus=pcie.0,addr=0x2,romfile=/mnt/user/isos/VBIOS/intel_uhd_605_vbios/intel_uhd_605_vbios.rom \
-device vfio-pci,host=0000:00:0e.0,id=hostdev1,bus=pci.3,addr=0x0 \
-device usb-host,hostbus=1,hostaddr=2,id=hostdev2,bus=usb.0,port=1 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2020-03-18 12:43:33.085+0000: Domain id=3 is tainted: high-privileges
2020-03-18 12:43:33.085+0000: Domain id=3 is tainted: host-cpu
char device redirected to /dev/pts/0 (label charserial0)
2020-03-18T12:43:34.592367Z qemu-system-x86_64: -device vfio-pci,host=0000:00:02.0,id=hostdev0,bus=pcie.0,addr=0x2,romfile=/mnt/disk1/isos/VBIOS/intel_uhd_605_vbios/intel_uhd_605_vbios.rom: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0

And the Dmesg grepped for only i915 stuff looks like this: You'll see there's errors about failing to initialise GPU and declaring it wedged!

sim@sim-Standard-PC-Q35-ICH9-2009:~$ dmesg | grep -iC 3 "i915"
[    7.401484] intel_telemetry_core Init
[    7.413539] Invalid pltconfig, ensure IPC1 device is enabled in BIOS
[    7.443107] Invalid pltconfig, ensure IPC1 device is enabled in BIOS
[    7.516713] i915 0000:00:02.0: vgaarb: deactivate vga console
[    7.516844] [drm:i915_gem_init_stolen [i915]] *ERROR* conflict detected with stolen region: [mem 0x70000000-0x7fffffff]
[    7.521727] [drm] couldn't get memory information
[    7.572927] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    7.572929] [drm] Driver supports precise vblank timestamp query.
[    7.572972] i915 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000
[    7.572976] [drm] Failed to find VBIOS tables (VBT)
[    7.587479] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    7.598615] [drm] Applying Increase DDI Disabled quirk
[    7.641456] [drm] Finished loading DMC firmware i915/glk_dmc_ver1_04.bin (v1.4)
[    8.288163] audit: type=1400 audit(1584535434.498:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=485 comm="apparmor_parser"
[    8.289205] audit: type=1400 audit(1584535434.498:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=485 comm="apparmor_parser"
[    8.290194] audit: type=1400 audit(1584535434.498:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=485 comm="apparmor_parser"
--
[    8.403693] [drm] RC6 disabled by BIOS
[    8.403694] [drm] RC6 disabled, disabling runtime PM support
[    8.501351] audit: type=1400 audit(1584535434.710:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=489 comm="apparmor_parser"
[    8.626603] i915 0000:00:02.0: Failed to idle engines, declaring wedged!
[    8.664155] audit: type=1400 audit(1584535434.874:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=490 comm="apparmor_parser"
[    8.698558] i915 0000:00:02.0: Failed to initialize GPU, declaring it wedged!
[    8.698565] i915 0000:00:02.0: Please file a bug at https://bugs.freedesktop.org/enter_bug.cgi?product=DRI against DRM/Intel providing the dmesg log by booting with drm.debug=0xf
[    8.719360] [drm] Initialized i915 1.6.0 20190619 for 0000:00:02.0 on minor 0
[    8.719589] snd_hda_intel 0000:03:00.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    9.014624] fbcon: i915drmfb (fb0) is primary device
[    9.014694] Console: switching to colour frame buffer device 240x75
[    9.014736] i915 0000:00:02.0: fb0: i915drmfb frame buffer device
[    9.252442] audit: type=1400 audit(1584535435.462:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=491 comm="apparmor_parser"
[    9.257476] audit: type=1400 audit(1584535435.466:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=491 comm="apparmor_parser"
[    9.260483] audit: type=1400 audit(1584535435.470:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=491 comm="apparmor_parser"

The LSPCI look like this:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.1 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.2 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.3 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:02.0 VGA compatible controller: Intel Corporation Device 3185 (rev 03)
00:07.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:07.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:07.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:07.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 Ethernet controller: Red Hat, Inc. Virtio network device (rev 01)
02:00.0 Communication controller: Red Hat, Inc. Virtio console (rev 01)
03:00.0 Audio device: Intel Corporation Device 3198 (rev 03)

If anyone has any ideas, I would greatly appreciate it.

-Simt

Link to comment

I would also love to get some progress on the J4105 with the Intel UDH 605

 

I have an Odroid H2 myself and it's currently running unraid with a PFSense VM really nicely. 

If I was able to use the igd in a VM this would be perfect. 

 

I have seen reports that it is possible to pass through the UHD 605 to a VM, check out the top post in the following link. 

 

https://forum.proxmox.com/threads/proxmox-5-2-gemini-lake-and-igd-graphics-passthrough-for-ubuntu-18.47129/page-2

 

I haven't had time the last few weeks to tinker and try to get it to work but my previous attempts I could get the pass through and the UHD 605 to show up in windows device manager, but no output displayed via HDMI...

 

Let me know your mileage. 

 

Also if you could send or attach your UHD605 video ROM bios that would be much appreciated, as I can see if that gives me any more progress. I know that was the key with my 9900k passthrough setup. 

Edited by WizP
Link to comment
On 3/20/2020 at 12:12 PM, WizP said:

I would also love to get some progress on the J4105 with the Intel UDH 605

 

I have an Odroid H2 myself and it's currently running unraid with a PFSense VM really nicely. 

If I was able to use the igd in a VM this would be perfect. 

 

I have seen reports that it is possible to pass through the UHD 605 to a VM, check out the top post in the following link. 

 

https://forum.proxmox.com/threads/proxmox-5-2-gemini-lake-and-igd-graphics-passthrough-for-ubuntu-18.47129/page-2

 

I haven't had time the last few weeks to tinker and try to get it to work but my previous attempts I could get the pass through and the UHD 605 to show up in windows device manager, but no output displayed via HDMI...

 

Let me know your mileage. 

 

Also if you could send or attach your UHD605 video ROM bios that would be much appreciated, as I can see if that gives me any more progress. I know that was the key with my 9900k passthrough setup. 

Hi Wizp, I saw that post early on in my efforts to get passthrough working. Back then it seemed way too arcane and complicated to try. But looking at it again now, it's like a nonchalant 'oh yeah, doesn't look to hard to follow, I could give that a good try.' 

I'm out camping at the moment (possibly last time for awhile as I just heard that some state borders are being shut here in Australia due to Coronavirus) But when we're back, I'll give it a try. 

 

-Simt

Link to comment

okay, I've been working through the solution from here: https://forum.proxmox.com/threads/proxmox-5-2-gemini-lake-and-igd-graphics-passthrough-for-ubuntu-18.47129/page-2

 

I'm good right until the very end. At that point in Proxmox, Steffen makes a new VM, with regular settings, but then he does this:

Video:
add PCI Device 0000 00:02.0 -> select advanced + select PCI-Express + Primary GPU + All Functions +ROM-Bar
Sound (HDMI)
add PCI Device 0000 00:0e.0 -> select advanced + select PCI-Express + All Functions +ROM-Bar

And the resulting lines in the config file (I guess is Proxmox XML equivalent:

hostpci0: 00:02,pcie=1,x-vga=1
hostpci1: 00:0e,pcie=1

 

I'm not sure how to do this in Unraid. Could anyone help please? And up to here with everything else, passthorugh isn't working.

 

I tried adding a QEMU section at the end of the XML:

<qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=00:02.0,bus=pcie.0,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=00:0e.0,bus=pcie.0'/>
  </qemu:commandline>

But this gives me an execution error on starting the VM:

internal error: qemu unexpectedly closed the monitor:
2020-03-23T12:58:48.602152Z qemu-system-x86_64: -device vfio-pci,host=0000:00:02.0,id=hostdev0,bus=pcie.0,addr=0x2: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0

2020-03-23T12:58:48.760743Z qemu-system-x86_64: -device vfio-pci,host=00:02.0,bus=pcie.0,x-vga=on: vfio 0000:00:02.0: device is already attached

By the way, when I look at what's at 1f.0 in Unraid (Unraid terminal> lspci -knn) I see:

00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:31e8] (rev 03)

 

Lastly, I'll add that everything that Steffenprox did, tranlsated to a bunch of arguments that went into the Unraid sysconfig file. Mine looks like this:

kernel /bzimage
append intel_iommu=on vfio_virqfd vfio_pci vfio-pci.ids=8086:3185,8086:3198 modprobe.blacklist=snd_hda_intel,snd_hda_codec_hdmi,i915 pcie_acs_override=downstream,multifunction video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

 

 

 

Link to comment

Hi Simt, 

I'll have a look at this tomorrow, but I think you are almost there, just a few changes to the QEMU xml, which I think I can help with. You need to map your real igpu device to a virtual pcie bus in the virtual machine. It's straight forward, but just done slightly different in unraid. I'm not at my rig or I'd send the info now. 

 

If you can send me or point me in the direction of your vbios for the UHD605 I would much appreciate it.

 

 

Link to comment
20 minutes ago, WizP said:

Hi Simt, 

I'll have a look at this tomorrow, but I think you are almost there, just a few changes to the QEMU xml, which I think I can help with. You need to map your real igpu device to a virtual pcie bus in the virtual machine. It's straight forward, but just done slightly different in unraid. I'm not at my rig or I'd send the info now. 

 

If you can send me or point me in the direction of your vbios for the UHD605 I would much appreciate it.

 

 

I'd appreciate it, if you could have a look.

intel_uhd_605_vbios.zip

I've attached the vbios file I have. I downloaded it from another forum, Proxmox maybe..? I've been trying to figure out where I got it from last week. But can't. If I remember I'll edit this post.

Edit: Got the vbios from: https://forum.proxmox.com/threads/proxmox-6-0-gemini-lake-and-igd-graphics-passthrough-for-windows-10.60415/post-287483

 

-Simt

Edited by simt
Link to comment
On 3/8/2020 at 5:38 PM, ABNESIS said:

I am sorry to write this late, apparently i managed to get video from my vga port, seems that i just had to disable "Permit UEFI boot mode" under main/flash/syslinux configuration and voila, that made the trick:

Syslinux conf:
 kernel /bzimage
append pcie_acs_override=downstream,multifunction vfio-pci.ids=8086:0412,8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus,snd_hda_intel,snd_hda_codec_hdmi,i915,drm,drm_kms_helper,i2c_algo_bit video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

Added IGPU (8086:0412) to vm and Integrated sound card (8086:a170). Also switched PCIE ACS override to BOTH and VFIO allow safe interrupts to YES under Settings-VM manager. Good luck and thanks you guys for sharing info.

I’ve tried that, but I always get the same error, when also using the sound card:

 

internal error: qemu unexpectedly closed the monitor: 2020-03-31T12:19:09.054286Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev1,bus=pci.0,addr=0x6: vfio 0000:00:1f.3: group 9 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.

 

The iGPU alone seems to work so far. I did of course change the vfio-pci.ids entries, so that they match my gpu and sound card.

 

My Windows 10 VM is set up as i440fx-4.0 and SeaBIOS. I’m using an H370M-ITX/ac board with a Pentium G5400 (UHD610). If also tried passing through the iGPU on my non-unRaid machine (using the trial and a spare disk), which has an Designare Z390 board and an i5-9600K (UHD630) and the same thing happens, iGPU alone would work, but as soon as I try to passthrough the sound card too, I get the same error.

 

By the way group 9 looks like this on my unraid machine:

IOMMU group 9:[8086:a304] 00:1f.0 ISA bridge: Intel Corporation H370 Chipset LPC/eSPI Controller (rev 10)

[8086:a348] 00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)

[8086:a323] 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)

[8086:a324] 00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)

[8086:15bc] 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-V (rev 10)

 

On my Designare Z390 it’s pretty alike.

 

So if someone has an idea how I could be able to pass through my sound card as well, I would be very glad :)

 

 

EDIT: OUCH! Just after posting this I realized something... my unraid server was using the I219 eth which was of course in group 9. So I quickly changed the unraid eth connection to my second one, which is placed in a separate group and after that my sound card finally did work!!!

Edited by lixe
Link to comment
On 3/24/2020 at 9:09 PM, simt said:

I'd appreciate it, if you could have a look.

intel_uhd_605_vbios.zip 39.01 kB · 5 downloads

I've attached the vbios file I have. I downloaded it from another forum, Proxmox maybe..? I've been trying to figure out where I got it from last week. But can't. If I remember I'll edit this post.

Edit: Got the vbios from: https://forum.proxmox.com/threads/proxmox-6-0-gemini-lake-and-igd-graphics-passthrough-for-windows-10.60415/post-287483

 

-Simt

Ok, I've had a couple of days look at this and tried to get it to work. 

I am convinced it is possible, but I failed in my attempts.

 

The card resets several times, I've also got rid of all the errors and I can get the UHD 605 driver installed without problems in the windows VM, but no output on the hdmi or DP. I may give this another shot in Ubuntu or arch at some point... or even under proxmox.

 

BTW I was using the latest beta kernel. 

 

 

 

Link to comment
On 4/8/2020 at 8:57 AM, WizP said:

Ok, I've had a couple of days look at this and tried to get it to work. 

I am convinced it is possible, but I failed in my attempts.

 

The card resets several times, I've also got rid of all the errors and I can get the UHD 605 driver installed without problems in the windows VM, but no output on the hdmi or DP. I may give this another shot in Ubuntu or arch at some point... or even under proxmox.

 

BTW I was using the latest beta kernel. 

Hi WizP,

keep on trying, I've been trying some more too. Hopefully one of will get there. 

In short, I tried adding a binding in my Unraid go file. But what made more difference was I've changed my Ubuntu VM to use an i440 instead of Q35. I've stopped getting the memory conflict errors - which is great. However I'm getting an error regarding the vbios rom I'm passing through in the VM setup. Dmesg in the Ubuntu VM complains that it was expecting a 05xa header, but got something else. Which is really strange because that vbios I have here does start with 05xa. I'm going to try passing it in through a QEMU argument instead. Failing that might run the vbios through 'rom-parser' and see if it changes anything.

 

-Simt

Link to comment
On 3/9/2020 at 5:38 AM, ABNESIS said:

I am sorry to write this late, apparently i managed to get video from my vga port, seems that i just had to disable "Permit UEFI boot mode" under main/flash/syslinux configuration and voila, that made the trick:

Syslinux conf:
 kernel /bzimage
append pcie_acs_override=downstream,multifunction vfio-pci.ids=8086:0412,8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus,snd_hda_intel,snd_hda_codec_hdmi,i915,drm,drm_kms_helper,i2c_algo_bit video=efifb:off,vesafb:off vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot

Added IGPU (8086:0412) to vm and Integrated sound card (8086:a170). Also switched PCIE ACS override to BOTH and VFIO allow safe interrupts to YES under Settings-VM manager. Good luck and thanks you guys for sharing info.

Thanks heaps! Solved all the problems. ASRock - Z370M-ITX/ac + i5 8400

Link to comment
  • 1 month later...
On 3/8/2020 at 5:38 PM, ABNESIS said:

I am sorry to write this late, apparently i managed to get video from my vga port, seems that i just had to disable "Permit UEFI boot mode" under main/flash/syslinux configuration and voila, that made the trick:

I was wrapping my head around this solution for a few days now.

 

In order to use legacy passthrough "The IGD device must have a VGA ROM, either provided via the romfile option or loaded automatically through vfio (standard)." [0].

 

From my understanding the iGPU does not expose a ROM via PCI when the host is booted in UEFI mode [1]. Thus, you probably where able to access the VM via remote access with full GPU support, but got no signal from the port. The symptom in most cases is the following error "vfio-pci: Cannot read device rom at 0000:00:02.0 Device option ROM contents are probably invalid" in the VM log. Further telling that the legacy pass through mode [2] [3] is disabled. To solve the issue you need to manually provide a ROM as vfio is not able to provide it.

 

In your case, your MB is capable to boot in legacy mode that allows to expose the ROM via PCI. Sadly, I cannot go this route for my UHD 630 as my MB does not support legacy mode (probably the standard in the future). In this case I think, you need either a second GPU (don't own one) to dump the IGD ROM or ask someone with the same CPU to dump the ROM for you in legacy mode (a collection of IGD ROMs would be really nice):

Quote

A strategy that I've used for such a case is to enable legacy boot in the BIOS, boot a live CD and use that to dump the ROM. Stash it somewhere, revert the BIOS changes, use rom-fixer to cleanup the new image and see if it behaves more reasonably. [1]

 

Update 14-05-2020:

 

Finally, found a working solution for UEFI only MB owners out there that works with legacy GVT-G passthrough and OMVF Bios [6,7]. Following, the setup that resolved the black screen issue with an Intel Core i3-8100 (UHD 630). The trick for me made the "vbios_gvt_uefi.rom" (see [7]; disclaimer: be warned to use a random ROM file from the Internet):

 

Unraid Settings:

- Host boots in UEFI (no legacy mode no CSM)

- "Unraid OS" boot mode

- Permit UEFI boot: Yes

- Kernel parameter: append video=efifb:off,vesafb:off modprobe.blacklist=i2c_i801,i2c_smbus,snd_hda_intel,snd_hda_codec_hdmi,i915,drm,drm_kms_helper,i2c_algo_bit

- VFIO-PCI Config to stub 00:02.0

VM Settings:

- Windows 10 OS, OMVF Bios, i44fx-4.2, Hyper-V: Yes

PCI Passthrough

Quote

<hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
      </source>
      <rom file='/mnt/user/isos/vbios_gvt_uefi.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </hostdev>

 

cheers,

 

- stay home and don't eat bats

 

[0] https://github.com/qemu/qemu/blob/master/docs/igd-assign.txt

[1] https://www.redhat.com/archives/vfio-users/2018-April/msg00022.html

[2] https://unraid.net/blog/unraid-server-os-6-3-released (Legacy and UTP mode)

[3] https://vfio.blogspot.com/2016/07/intel-graphics-assignment.html

[4] https://github.com/qemu/qemu/blob/master/docs/igd-assign.txt

[5] https://forums.unraid.net/topic/83802-intel-gvt-g-support-multiple-virtual-intel-igpus-we-already-have-gvt-d/?tab=comments#comment-776192&searchlight=1

[6] https://www.reddit.com/r/VFIO/comments/fzje5x/no_output_from_igpu_when_passed_through/

[7] https://github.com/intel/gvt-linux/issues/23

 

PS: I think the IGD passthrough will be more popular in the future as services like Stadia and Geforce Now will emerge and improve. This allows casual gamer to enjoy a gaming session with their IGD driven Windows 10 VM. Also GVT-D is a thing [5]. However, I think we will not see this in Unraid in the near future since its focus are NAS features.

Edited by T0a
disclaimer
  • Like 3
Link to comment
  • 2 weeks later...
  • 2 weeks later...

It's strange. i have two systems here. One is a HP z230 workstation with an i5 4570 (Haswell Generation) and the other is an ASRock Fatal1ty H87 Performance motherboard with the same CPU. Both have the latest BIOS, all virtualization parameters in the BIOS are activated but with the z230 I can't get the IGP passed through to the W10 VM. Even with a 2nd graphics card in the system (which is also set as primary in the bios) not. Completely different with the ASRock board. Start Unraid, create a new VM, select SeaBIOS, as graphic the IGP and it works on the first go without having to adjust anything. Even if the IGP is the only graphics card in the system, no problem.  Could it be because on the ASRock I can apparently disable the sound part of the IGP completely (as seen with the VFIO-PCI config plugin).On the z230 workstation the IGP and the sound part are in a separate IOMMU group. Even if I pass both of them to the VM, no matter if I have entered both in vfio-pci.cfg and tried all settings in the VM Manager, nothing can be done.

Link to comment
  • 2 weeks later...
On 12/3/2019 at 4:52 AM, Aussybob said:

I too just got this working.. i7 8700 630 iGPU on Win10 vm.

 

Done nothing fancy just Seabios and passthrough the 630 iGPU, I was having issues with getting the driver to work correctly (I think it was error code 43) but after googling I found someone having a similar issue with Proxmox. To resolve this I had to up the RAM from 4GB to 8GB.

 

Hope this helps others!

 

 

Changing from 4GB to 8GB cleared the code 43 error right up for me.  Did not think it would be so simple. Thank you!

For reference, I have the 8th gen i3-8100 with Intel 630.

 

Though now unRAID reports 94% RAM usage. Guess I need to upgrade to 32GB.

Edited by spencers
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.