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


Recommended Posts

On 6/8/2020 at 4:52 AM, spencers said:

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.

linuxatemyram.com

Link to comment
  • 2 months later...
On 5/31/2020 at 2:38 AM, Towatai said:

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.

Hi could you please how exactly you made the 4570 worked in your system? What codes are you put in your config? I have the same 4570T cpu but I never success. Please help, Thanks man! 

Link to comment
  • 2 weeks later...

Hello Guys

 

I am new to UnRaid and trying to create a Windows VM using Intel GPU. I have Core i7 - 9700K with Intel UHD 630. I am getting output on the monitor only when using SeaBIOS but the Seabios has only 2 lines and a flashing cursor. It doesn't seem to continue booting. 

 

Is there something else I need to change or configure?

  • Like 2
Link to comment
  • 2 weeks later...
  • 2 weeks later...
On 10/6/2020 at 11:55 AM, Elie said:

Hello Guys

 

I am new to UnRaid and trying to create a Windows VM using Intel GPU. I have Core i7 - 9700K with Intel UHD 630. I am getting output on the monitor only when using SeaBIOS but the Seabios has only 2 lines and a flashing cursor. It doesn't seem to continue booting. 

 

Is there something else I need to change or configure?

Did you try installing with VNC first and switching to passthrough afterwards? Not sure why, but a new VM only shows a flashing cursor, but my already installed vm does boot just fine.

Link to comment
  • 4 weeks later...
On 5/13/2020 at 5:00 PM, T0a said:

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

 

Need some help with that.

 

For curious reasons i added just the vbios to see what happens. What should i say, i got a display output ! yeaah

Sadly went only well for just a few seconds, till my logfiles filled up with "vfio_region_write failed: Device or resource busy igpu"

But i am happy to know, it should work somehow.

Sooo... i made everything like you sad there. Except the "VFIO-PCI Config to stub 00:02.0". What do you mean with that ? I passed through the IGPU in the System Devices if its that.

 

Long story short with your setting i cant even start my VM and get an Error message instead:

"internal error: process exited while connecting to monitor: 2020-11-26T21:08:05.232046Z qemu-system-x86_64: -device vfio-pci,host=0000:00:02.0,id=hostdev0,bus=pci.0,addr=0x2,romfile=/mnt/disk3/isos/vbios_gvt_uefi.rom: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow 2020-11-26T21:08:05.237102Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev1,bus=pci.0,addr=0x8: vfio 0000:00:1f.3: group 8 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver."

 

Anything i overlooked ?

 

Thanks you so far for your post, really helped me along.

 

Edit: Just saw that the last error "....group 8 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver." is related to my passthroughed audio device. I will have a look at the kernel settings again.

 

Edit Edit: Kernel settings were indeed wrong. everthing is working now.

Edited by Picha
Link to comment
  • 3 weeks later...
On 11/26/2020 at 10:13 PM, Picha said:

Need some help with that.

 

For curious reasons i added just the vbios to see what happens. What should i say, i got a display output ! yeaah

Sadly went only well for just a few seconds, till my logfiles filled up with "vfio_region_write failed: Device or resource busy igpu"

But i am happy to know, it should work somehow.

Sooo... i made everything like you sad there. Except the "VFIO-PCI Config to stub 00:02.0". What do you mean with that ? I passed through the IGPU in the System Devices if its that.

 

....

 

Edit Edit: Kernel settings were indeed wrong. everthing is working now.

 

Sorry, for being late here. I'm glad you got it working! I remember how frustrating it was for me to figure it out and find a working solution. Enjoy your IGD inside your VM. Do you mind reporting what CPU and mainboard you are using?

Edited by T0a
Link to comment
  • 3 weeks later...
On 12/15/2020 at 12:06 PM, T0a said:

 

Sorry, for being late here. I'm glad you got it working! I remember how frustrating it was for me to figure it out and find a working solution. Enjoy your IGD inside your VM. Do you mind reporting what CPU and mainboard you are using?

Sure, sorry for also being late :D

 

CPU: Intel Core i5 10500

Mainboard: MSI B460M-A Pro mATX, So.1200 with latest bios

Link to comment

Windows 10 with i5-4460 - I've got iGPU video working fine however audio is not working under LibreElec (no matter which Audio device I select in System settings) or Win10 VMs, but it works perfectly in a Win7 VM after installing the Intel HD 4600 Graphics driver (version I downloaded off Intel's website for Win7 is 15.36). 

 

In Win10, the Audio icon in the system tray shows "No Audio Output device is installed".

After installing the latest drivers off Intel's website (win64_15.40.47.5166), still no Audio.

Either the Win10 driver architecture changed or Intel made a change to their Win10 drivers that prevents Audio over HDMI when using iGPU passthrough.

If anyone has a solution for Win10, would really appreciate it.

Link to comment
24 minutes ago, Zan said:

Windows 10 with i5-4460 - I've got iGPU video working fine however audio is not working under LibreElec (no matter which Audio device I select in System settings) or Win10 VMs, but it works perfectly in a Win7 VM after installing the Intel HD 4600 Graphics driver (version I downloaded off Intel's website for Win7 is 15.36). 

 

In Win10, the Audio icon in the system tray shows "No Audio Output device is installed".

After installing the latest drivers off Intel's website (win64_15.40.47.5166), still no Audio.

Either the Win10 driver architecture changed or Intel made a change to their Win10 drivers that prevents Audio over HDMI when using iGPU passthrough.

If anyone has a solution for Win10, would really appreciate it.

Success! Downloaded the Intel VGA drivers (v15.40.16.64.4364) off the Gigabyte website for my Mobo (Z97-D3H) and that added an Audio Output device. Then in the Sound Control Panel->Playback->Properties->Advanced, changed default format to 24 bit, 48000Hz.

Link to comment

 

On 11/27/2020 at 8:13 AM, Picha said:

<snipped>

 

Long story short with your setting i cant even start my VM and get an Error message instead:

"internal error: process exited while connecting to monitor: 2020-11-26T21:08:05.232046Z qemu-system-x86_64: -device vfio-pci,host=0000:00:02.0,id=hostdev0,bus=pci.0,addr=0x2,romfile=/mnt/disk3/isos/vbios_gvt_uefi.rom: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow 2020-11-26T21:08:05.237102Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev1,bus=pci.0,addr=0x8: vfio 0000:00:1f.3: group 8 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver."

 

<snipped>

 

Edit Edit: Kernel settings were indeed wrong. everthing is working now.

Hi @Picha, can you post your current kernel settings? I'm now getting this error after trying out 6.9.0-rc2, and when I reverted back to 6.8.3 I'm still getting the error.

Edited by Zan
Link to comment

@Zan

kernel /bzimage
append pcie_acs_override=downstream vfio-pci.ids=8086:a3f0 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 initrd=/bzroot

 

It's with audio passthrough (mainboard audio, didn´t test audio from hdmi)

Link to comment

How to run iGPU on Windows 10 VM thanks to the posters here that shared their knowledge. I am rehashing this to be more understandable if you're not used to doing this some of the things people are talking about are hard to understand and presume you know more than you may.

 

Unraid Settings:

- Host boots in UEFI (no legacy mode no CSM) - Have to recreate my USB Boot media because that option is not the default and you have to hit Customize on the unRAID Boot Media tool

- Adjust BIOS to default boot UEFI USB media

- Set a password for User > root (or SSH won't work). SSH into your unRAID and cd /boot/syslinux/

- nano syslinux.cfg

- Go to Main > Flash > Replace everything in Unraid OS with this, afterward select Apply:

kernel /bzimage
append pcie_acs_override=downstream vfio-pci.ids=8086:a3f0 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 initrd=/bzroot

As of this time of writing, VFIO-PCI Config is not on Community Apps but you can find the package to install on unRAID forums here: 

 

- After the package installs, reboot and login to unRAID web GUI. Now, go to Settings > VFIO-PCI Config > checkmark only "VGA compatible controller: Intel Corporation Iris Pro Graphics 580 (rev 09)" and hit Build VFIO-PCI.cfg then hit save. Reboot again.

 

VM Settings:

- Windows 10 OS, BIOS: OMVF, i440fx-5.1, Hyper-V: Yes. Virtual IO drivers to get them current you go to Settings > VM Manager > Download. Select the current Virtual IO drivers on VM Settings.

- Graphics Card: START WITH VNC NOT THE GPU, I tried the GPU first and Windows 10 install won't show on the hardware when you plug in to HDMI if you attempt to skip this step like I did. Install Windows 10, add all virt.io drivers from the attached virtual CD drive. There is a larger executable in the root folder that will do them all for you.

 

Here's where my steps may differ because this unit is headless for the time being, if you use a screen then RDP probably isn't necessary.

 

- Set a user password by pressing CTRL+ALT+DEL in the VNC session, enable RDP, note the VM's IP address then shut it down. Go back into the VM Settings then change over to "Intel Corporation Iris Pro Graphics 580 (00:02.0)", no Graphics ROM BIOS.

- Turn on the VM, RDP in and install Intel Driver & Support Assistant, check for updates and install the DCH driver. You'll get kicked off RDP during driver install, reconnect.

- Reboot

 

Works on my Skull Canyon NUC i7-6770HQ

Edited by Trunkton
Link to comment

Thank you @Trunkton

 

I think it would be helpful for others if i write my complete settings and a little instruction too.

Audio and SSD passthrough in this description are optional.

 

(My) System Settings:

-CPU: Intel Core i5 10500

-Mainboard: MSI B460M-A Pro mATX, So.1200 with latest bios

-Running headless

-Unraid Version: 6.9.0-rc2 (Started with Unraid OS 6.9.0-Beta25, so every version since then has worked for me)

 

If you have a Intel 10th gen, Unraid OS 6.9.0-Beta22 or newer is recommend to be installed. It is the first Version with Linux Kernel higher than 5.5.8.

Its still Beta, so be warned. I dont have any problems runnig with beta so far. Next Stable Version should come out soon.

 

-PCIe NVMe SSD passthrough to the Win10 VM

-Mainboard Audio passthrough

 

(My) VM settings:

Initial Memory: 9 gb  (recommend: 8gb)

Machine: i440fx-5.1

BIOS: OVMF

Hyper-V: Yes

Graphics Card: VNC

VNC Video Driver: Cirrus

2nd Graphics Card: Intel UHD Graphics 630

2nd Graphics ROM BIOS: vbios_gvt_uefi.rom   <- special thanks to @T0a  

 

SSD passthrough related settings:

Primary vDisk Location:  Manual / spaces_win_clover.img      <- needed for booting of NVMe. See here for more information: "www.youtube.com/watch?v=RrWOEYldTdk"

Primary vDisk Bus:  SATA

Other PCI Devices: Sandisk Corp WD Blue SN550 NVMe SSD | Non-Volatile memory controller (01:00.0)

 

Mainboard sound passthrough

Sound Card:  Intel Device (00.1f.3)

 

Unraid settings:

Permit UEFI boot mode: Yes

Kernel:

kernel /bzimage
append pcie_acs_override=downstream vfio-pci.ids=8086:a3f0 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 initrd=/bzroot

 

"pcie_acs_override=downstream vfio-pci.ids=8086:a3f0" <- Only needed for passing through my mainboard audio. Look in System devices for your device if you also want to passthrough.

 

Bios settings: (Settings may differ for your Mainboard)

Initiate Graphics Adapter: [IGD]   PEG didn`t work for me

Boot mode: [UEFI]

 

Things to consider: 

-Everytime i reboot my server it "stucks" at boot. I have to go into the bios settings and then exit without saving. (dont know why, but it works)

Now i can see Unraid booting on screen (i didnt saw that before igpu passthrough). After unraid has finished booting everthing is back normal. VM starts and uses iGPU.

-Random freezes when playing games. Whole VM freezes 1-2 seconds.

-If you reboot your VM you cant use your Mainboard audio. After shutting down your VM unraid takes the audio device and is only released after restarting your server. (at least for my device, cause its not in a seperate IOMMU group)

 

UPDATE: Those Errors where related to my Audio passthrough. I bought a cheap USB-Audio Card and that fixed it for me. Possibly interesting for you: I thought I could use the audio via HDMI instead of the mainboard. It turned out (after disabling Mainboard audio) that both no longer work. So if you want sound over HDMI, maybe try to pass your Mainboard Audio through too.

 

 

Guide:

 

Essentially the same as mentioned by @Trunkton and @T0a. Except for editing the VFIO-PCI Config. You should not need a plugin since this is allready build into Unraid

 

Edited by Picha
Link to comment

Hello guys,


thank you for your help on this page! I was able to configure my VM W10 with this.
The Intel UHD 605 reconnected perfectly and I installed the Intel drivers.


But I like to use the output of the VM on the monitor via HDMI from the Intel UHD 605. Is this possible? I read a lot of web pages but I haven't found the solution until now.

 

For your information, displaying the Unraid gui is not necessary.

 

My HW:

- ASROCK J5040 - 16GB RAM

- Unraid last RC2

 

Thank you in advance

Christophe

Edited by [email protected]
Link to comment

Hello lampchris

 

I think we need more information. Could you give us your complete VM-settings ?

 

Also:

Are you getting any output on the screen? Or is there any display-popup from the monitor? (e.g. "No input")

Is your gpu showing up in the windows hardware-manager with any errors ?

 

Look in your VM-log for any errors

 

 

 

Edited by Picha
Link to comment

Hello Picha,

 

I have tried a lot of configurations and this is the configuration I have at least the windows boot logo on the screen. But, after the boot sequence i have a black screen. Over RDP i can connect me on the VM.

 

Unraid start parameters:

label Unraid GUI Test
  menu default
  kernel /bzimage
  append pcie_acs_override=downstream vfio-pci.ids=8086:3184 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 initrd=/bzroot

 

On the right left side, you can see the dmesg befor are starting the VM:

image.thumb.png.9bb37868538c17cf1801b056acbe3e93.png

 

After starting the VM, i see follows errors:

image.png.c45b2669cd9a61991f520383d7de7922.png

 

The VM Log file:

image.png.563f05c25230432810d4b7d5871eb4d4.png

 

 

I tried other VM with the OVMF Bios, but i see nothing on my screen... Black screen 😞

 

Thanks in advanceand have a nice day and stay healthy!

vm.xml

Link to comment

I´m sorry, but i think i cant really help you.

Looks like the DMA Remapping provided by the chipset is not not working properly with your igpu (just an educated guess).

 

I also found some people with a simular mainboard, having the same problem with passing through the igpu.

This guy has exactly the same error message, also a asrock mainboard with embedded cpu.

Don´t know if they changed something since 2017.

 

 

Maybe there is an bios update for your mainboard, you could try that.

And also be sure to have iommu settings activated on your mainboard.

 

 

Still, strange you can see the windows boot logo on the screen......

 

 

Greetings

Link to comment

Hello Pitcha,

no problem.

The Asrock J5040 is a new mainboard and Asrock haven't a new Bios at this time. I will watch later if a new Bios are relesed and i will try again.

Ok, I have found a workaround for my special use case. I have a old USB3 Port repater with HDMI display link from Targus.

I have make a new VM with the monitor connected on the Targus GC as primary monitor. I don't have the first windows boot sequenze but is not a porblem.

 

Thanks
lampchris

 

 

  

Link to comment
On 5/13/2020 at 5:00 PM, T0a said:

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):

 

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

 

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.

Wow this is the first guide, which finally worked for my i3-8100 IGD.

Thank you so much, also for the linked sources.

Your post should be pinned on top in this forum!

  • Like 2
Link to comment
  • 2 weeks later...
On 5/13/2020 at 11:00 AM, T0a said:

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):

 

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

 

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.

In your Kernel parameters section, I noticed you don't prepend with kernel /bzimage or postpend with initrd=/bzroot. Do we not need these lines?

Does setting it up this way avoid the system getting stuck on the Unraid GRUB screen on boot?

Edited by lysdexik
Link to comment
  • 1 month later...

I'm new to Unraid and it took me  a while to get it going, here's my setup if others need help and a thanks to those who have posted on here, I wouldn't have had it working without it:

 

Setup:

 

  • Unraid v6.9.0 2021-02-27 (vs -rc2)
  • Motherboard Gigabyte B460M DS3H rev 1 - (this only uses UEFI)
  • Intel 10400
  • 16GB Ram

Advice followed:

  • Space Invader One's guides to setting up Windows 10 VM parts 1 and 2 (although 2 focuses on separate graphics card)
  • Picha's post on a similar setup and the previous advice in the post

VM:

 

Initial Memory: 10 gb 

Machine: i440fx-5.1

BIOS: SeaBIOS

Hyper-V: Yes

Graphics Card: Intel UHD Graphics 630

Graphics ROM BIOS: vbios_gvt_uefi.rom

 

I kept getting the black screen and when I tried using VNC after some (unknown) changes I had a bit of mouse lag where the pointer was not as expected.

 

The key difference to above is that after I could log into VNC I went onto the Gigabyte website and downloaded the video and audio drivers for Windows. After an install and reboot it worked fine. Sharing this in case it helps others. 

 

Here is my VM setup in full

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='2'>
  <name>Windows 10</name>
  <uuid>ab52ad59-119d-b17c-3ccd-5f74bdd67c0e</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>12058624</memory>
  <currentMemory unit='KiB'>12058624</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>6</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='1'/>
    <vcpupin vcpu='1' cpuset='7'/>
    <vcpupin vcpu='2' cpuset='3'/>
    <vcpupin vcpu='3' cpuset='9'/>
    <vcpupin vcpu='4' cpuset='5'/>
    <vcpupin vcpu='5' cpuset='11'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-5.1'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'>
    <topology sockets='1' dies='1' cores='3' threads='2'/>
    <cache mode='passthrough'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Windows 10/vdisk1.img' index='3'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/Win10_20H2_v2_English_x64.iso' index='2'/>
      <backingStore/>
      <target dev='hda' bus='sata'/>
      <readonly/>
      <boot order='2'/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.190-1.iso' index='1'/>
      <backingStore/>
      <target dev='hdb' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='sata0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:ee:e1:bd'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio-net'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-2-Windows 10/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='en-gb'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <rom file='/mnt/user/Unraid Main/Other/vbios_gvt_uefi.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc52b'/>
        <address bus='1' device='7'/>
      </source>
      <alias name='hostdev1'/>
      <address type='usb' bus='0' port='2'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x0d8c'/>
        <product id='0x0014'/>
        <address bus='1' device='8'/>
      </source>
      <alias name='hostdev2'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
</domain>

 

Link to comment
  • 3 weeks later...

Hi! I'm trying to passtrough my iGPU to a Windows VM to use it as Media-PC and throw some output to the TV. I've read through this thread and dozens of others but I'm stuck with error 43... and try to google that... erverything is full of the Nvidia Error 43 😕.

 

My system was not designed to be used as Windows VM to use with my TV but I think there are enough ressources to handle NAS functionallity and the VM.

 

I'm using a J5040-ITX from ASRock with 8 GB RAM.

 

I'm booting Unraid with the following lines but also tried it with stubbing the GPU address and using the Unraid Tool for selecting the iGPU for vfio.

kernel /bzimage
append pcie_acs_override=downstream,multifunction vfio_iommu_type1.allow_unsafe_interrupts=1 video=efifb:off vesafb:off modprobe.blacklist=i915,snd_hda_intel,snd_hda_codec_hdmi initrd=/bzroot

 

My VM is setup with OVMF and i440fx-5.1 (but also tried it with Seabios and Q35-5.1) and 4GB of RAM.

I've tried to boot without GPU BIOS ROM, with the GTV one that was mentioned here and one for the UHD605.

When using a vBIOS I'm getting these lines in my dmesg-log (with GTV BIOS)

Apr 1 11:29:37 nas kernel: vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
Apr 1 11:29:37 nas kernel: br0: port 2(vnet0) entered blocking state
Apr 1 11:29:37 nas kernel: br0: port 2(vnet0) entered disabled state
Apr 1 11:29:37 nas kernel: device vnet0 entered promiscuous mode
Apr 1 11:29:37 nas kernel: br0: port 2(vnet0) entered blocking state
Apr 1 11:29:37 nas kernel: br0: port 2(vnet0) entered forwarding state
Apr 1 11:29:37 nas kernel: DMAR: DRHD: handling fault status reg 2
Apr 1 11:29:37 nas kernel: DMAR: [DMA Write] Request device [00:02.0] PASID ffffffff fault addr 0 [fault reason 02] Present bit in context entry is clear
Apr 1 11:29:38 nas kernel: vfio-pci 0000:00:02.0: vfio_ecap_init: hiding ecap 0x1b@0x100
Apr 1 11:29:38 nas kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x173e
Apr 1 11:29:38 nas kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x173e
Apr 1 11:29:38 nas kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x173e
Apr 1 11:29:38 nas kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x173e

 

I hope there's a chance to get this running and one of you got some good ideas 🙂

Edited by Schpammer
Link to comment
  • 3 weeks later...

@Schpammer As mentioned before, setting up 8GB ram instead of 4GB could help, sadly this is not possibly since you only have 8GB in total.

Quote:

"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."

 

 

Are you able to get in the VM with VNC? Did you see the intel GPU in hardwaremanager ? did you install the drivers?

 

 

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.