unRAID plugin for iGPU SR-IOV support


Recommended Posts

3 minutes ago, ich777 said:

If it isn't in your plugin list anymore I would also check the Plugins Error tab and if it isn't in there either (or if you have no such tab) then do a reboot to be on the safe side first and then do that if you are already on 6.12.4:

 

Yep, you're right, it's right there under errors, don't know how I've never noticed that tab before, I'm guessing it only exists when ther are errors...

 

image.png

image.png

Link to comment

Its saying my CPU isn't supported or is in VF mode.

 

1191673386_Screenshot2023-09-21at03_53_34.thumb.png.5dc1452089b833a65b61ba5658a893f3.png

 

I have a test cpu 11-900t which is reported as being a 'Genuine Intel® 0000 @ 1.10GHz' is this how it's checking the cpu or is it actually checking the hardware...

 

and then if I try the other GVT-g plugin for 11th gen it says.. 

 

Screenshot 2023-09-21 at 03.27.43.png

 

One of these must work with my 11th gen cpu? SR-IOV  or GVT-g

 

1199077909_Screenshot2023-09-21at03_32_36.thumb.png.22a921cc073aa8bd4439997359abc7fb.png

 

Edited by dopeytree
Link to comment
lspci -vvs 00:02.0 
lspci -vvs 00:02.1
00:02.0 VGA compatible controller: Intel Corporation RocketLake-S GT1 [UHD Graphics 750] (rev 01) (prog-if 00 [VGA controller])
        DeviceName: Onboard - Video
        Subsystem: Micro-Star International Co., Ltd. [MSI] RocketLake-S GT1 [UHD Graphics 750]
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 178
        IOMMU group: 0
        Region 0: Memory at 6000000000 (64-bit, non-prefetchable) [size=16M]
        Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=256M]
        Region 4: I/O ports at 4000 [size=64]
        Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
        Capabilities: [40] Vendor Specific Information: Len=0c <?>
        Capabilities: [70] Express (v2) Root Complex Integrated Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0
                        ExtTag- RBE+ FLReset+
                DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
                        MaxPayload 128 bytes, MaxReadReq 128 bytes
                DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
                         10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
                         AtomicOpsCtl: ReqEn-
        Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit-
                Address: fee00018  Data: 0000
                Masking: 00000000  Pending: 00000000
        Capabilities: [d0] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [100 v1] Process Address Space ID (PASID)
                PASIDCap: Exec- Priv-, Max PASID Width: 14
                PASIDCtl: Enable- Exec- Priv-
        Capabilities: [200 v1] Address Translation Service (ATS)
                ATSCap: Invalidate Queue Depth: 00
                ATSCtl: Enable+, Smallest Translation Unit: 00
        Capabilities: [300 v1] Page Request Interface (PRI)
                PRICtl: Enable- Reset-
                PRISta: RF- UPRGI- Stopped+
                Page Request Capacity: 00008000, Page Request Allocation: 00000000
        Kernel driver in use: i915
        Kernel modules: i915

 

Link to comment

I've got a Windows11 VM with VF passthrough working but getting the same "Host Encoder" errors in Parsec.

 

Using Remote Desktop Connection from a separate machine works well, it looks like GPU acceleration and a separate audio device are all added without any additional driver install or anything.

 

In order to avoid using a separate machine for RDP, I'm trying to get rdesktop or maybe Reminna working within unRAID GUI boot screen. Steps so far:
Installed these packages:

https://slackware.uk/slackware/slackware64-15.0/slackware64/xap/rdesktop-1.9.0-x86_64-4.txz

https://slackware.uk/slackware/slackware64-15.0/slackware64/l/libsamplerate-0.2.2-x86_64-1.txz

Disabled NLA in Win11 System Properties->Remote tab (Win+R - sysdm.cpl) to bypass CredSSP error:

image.png.1dd6cb6d556cea6e92106ddbd646fe28.png

 

But getting this error when running rdesktop via the GUI boot terminal:

Core(error): locale_to_utf16(), iconv_open[UTF-8 -> UTF-16LE] fail 0xffffffffffffffff
Aborted

 

Parsec I assume has faster streaming but RDP seems the easier to setup - if I can get rdesktop or Reminna working and audio enabled in unRAID GUI boot mode this might be a good option.

Link to comment
On 9/19/2023 at 9:37 PM, ich777 said:

If you are already on Unraid 6.12.4 try this:

 

  1. Execute this from a Unraid Terminal:
    mkdir -p /boot/config/plugins/i915-sriov/packages/6.1.49/
  2. Copy the two files from the above post in the folder: /boot/config/plugins/i915-sriov/packages/6.1.49/
  3. Install the SR-IOV plugin
  4. Execute this from a Unraid Terminal:
    sed -i '/  modprobe i915 enable_guc=7/ s/.*/  modprobe i915 enable_guc=3 max_vfs=7/' /boot/config/plugins/i915-sriov.plg
    echo "# disable autoload old i915 module on boot
      blacklist i915" > /boot/config/modprobe.d/i915-sriov.conf
  5. Reboot

 

This is a really dumb question but how do I perform step 2? I went to MAIN > BOOT DEVICE clicked on my flash drive and enabled sharing by toggling EXPORT to YES and SECURITY to PUBLIC. I can see my flash drive on my network, navigate to the folder, but when I try to copy the files over from my PC, it just says COULD NOT FIND THIS ITEM. How do I copy files to the boot drive?!

Link to comment
9 minutes ago, hoeman said:

but when I try to copy the files over from my PC, it just says COULD NOT FIND THIS ITEM.

This is a thing that you have to solve, I really can't help with that.

The steps that you've described should be correct as far as I can tell.

 

You can also copy it via SSH so to speak on Windows with something like WinSCP and on Linux with sftp:// for example.

Link to comment
46 minutes ago, Daniel15 said:

Is there documentation for that somewhere?

The original maintainer compiles the i915 module from here:

https://github.com/strongtz/i915-sriov-dkms
 

I think there should be also a build script somewhere in his Git repository, but most certainly my build steps are a bit differently because I‘ve already included the build from the module into my build toolchain so that the driver is compiled automatically the next time a new Unraid version is released and I will post the package here again.


I had to also issue a PR to the repository because it wouldn‘t compile against the Kernel 6.1.49

 

A user already reached out to me that he plans on continuing maintaining the plugin and I offered to build the module.

 

But the basic steps are:

  1. Install the build tools
  2. Compile the Kernel
  3. Compile the Module
  4. Pack it up
Link to comment
On 9/21/2023 at 10:05 AM, hoeman said:

it just says COULD NOT FIND THIS ITEM. How do I copy files to the boot drive?!

 

go in your  "Main Tab" in the Unraid GUI, scroll down to flash, then the "browse" button next to "flash" maneuver to the wanted folder and then "upload" the files :D  had to tdo the same.

  • Thanks 1
Link to comment
On 9/19/2023 at 2:05 PM, ich777 said:

For all who are in need of a plugin package for Unraid 6.12.4 here it is:

i915-sriov-6.1.49-Unraid.txz 922.96 kB · 50 downloads

i915-sriov-6.1.49-Unraid.txz.md5 33 B · 49 downloads

 

To install them do the following:

  1. Make sure that you are on Unraid 6.12.3 and that you have the SR-IOV plugin from @zhtengw installed
  2. Execute these commands from a terminal (just copy/past them in one go) :
    mkdir -p /boot/config/plugins/i915-sriov/packages/6.1.49/
    sed -i '/  modprobe i915 enable_guc=7/ s/.*/  modprobe i915 enable_guc=3 max_vfs=7/' /boot/config/plugins/i915-sriov.plg
    echo "# disable autoload old i915 module on boot
      blacklist i915" > /boot/config/modprobe.d/i915-sriov.conf

     

  3. Copy the two files from above in the folder: /boot/config/plugins/i915-sriov/packages/6.1.49/
  4. Trigger the upgrade process to 6.12.4 from the Update OS page
  5. Reboot

 

This is a pretty manual process but it should work. :)

Make sure that you are on Unraid 6.12.3 and that you have the SR-IOV plugin from @zhtengw installed

But i couldn't install SR-IOV plugin from @zhtengw, because it say Can't download i915-sriov module Package for kernel v6.1.49, how to force install this plugin?

Link to comment
On 9/19/2023 at 9:37 AM, ich777 said:

If you are already on Unraid 6.12.4 try this:

 

  1. Execute this from a Unraid Terminal:
    mkdir -p /boot/config/plugins/i915-sriov/packages/6.1.49/
  2. Copy the two files from the above post in the folder: /boot/config/plugins/i915-sriov/packages/6.1.49/
  3. Install the SR-IOV plugin
  4. Execute this from a Unraid Terminal:
    sed -i '/  modprobe i915 enable_guc=7/ s/.*/  modprobe i915 enable_guc=3 max_vfs=7/' /boot/config/plugins/i915-sriov.plg
    echo "# disable autoload old i915 module on boot
      blacklist i915" > /boot/config/modprobe.d/i915-sriov.conf
  5. Reboot

My bro; for starters, thank you so much. But I show 'No Intel graphics found" error. I followed these steps, I do have SR IOV enabled in bios, 12th gen i9-1200k. 
I removed plugin, removed from previous apps, shutdown Unraid for 2min, I followed these steps, and repeated process several times to no avail. 
Hoping you can help me out; you don't know how appreciative we all are for you!
image.thumb.png.31dcd9d719680f384498e4f7906f482f.png

tower-diagnostics-20230925-0316.zip 2023-09-25 02-11-28.mkv

Link to comment
13 minutes ago, xlucero1 said:

But I show 'No Intel graphics found" error.

That's most certainly caused because you have a second GPU in your system and on most motherboards this will disable the iGPU.

Please make sure that you've set your primary GPU to the iGPU in the BIOS, if that also doesn't work you have to connect a HDMI Dummy plug (or Display) to your motherboards HDMI port to enable it <- this is not necessary for most boards.

 

13 minutes ago, xlucero1 said:

I removed plugin, removed from previous apps, shutdown Unraid for 2min, I followed these steps, and repeated process several times to no avail.

Yes, because your iGPU is disabled because of your second GPU in your system, please check your BIOS settings as explained above.

  • Like 1
Link to comment
On 9/19/2023 at 2:37 PM, ich777 said:

If you are already on Unraid 6.12.4 try this:

 

  1. Execute this from a Unraid Terminal:
    mkdir -p /boot/config/plugins/i915-sriov/packages/6.1.49/
  2. Copy the two files from the above post in the folder: /boot/config/plugins/i915-sriov/packages/6.1.49/
  3. Install the SR-IOV plugin
  4. Execute this from a Unraid Terminal:
    sed -i '/  modprobe i915 enable_guc=7/ s/.*/  modprobe i915 enable_guc=3 max_vfs=7/' /boot/config/plugins/i915-sriov.plg
    echo "# disable autoload old i915 module on boot
      blacklist i915" > /boot/config/modprobe.d/i915-sriov.conf
  5. Reboot

Took me a while to commit to dealing with the potential downtime if there were any issues, but this all worked like a dream first time thanks. 

Record server reboot time as well 😂

image.thumb.png.35d16b776b715407e8030d52016047d5.png

  • Like 1
Link to comment
1 hour ago, Lyraad said:

Took me a while to commit to dealing with the potential downtime if there were any issues, but this all worked like a dream first time thanks. 

Record server reboot time as well 😂

image.thumb.png.35d16b776b715407e8030d52016047d5.png

How do you view this setup page you posted here? My plugin isn't clickable.  I followed the same commands in your post as well.  The VF's show up for me, so I know its working.

Link to comment
12 hours ago, THEDTM said:

How do you view this setup page you posted here? My plugin isn't clickable.  I followed the same commands in your post as well.  The VF's show up for me, so I know its working.

 

 

It should be under settings, I'm not sure what causes it to be there as it showed for a bit even when the plugin was not installed during the upgrade. 

 

image.thumb.png.b7cc4315fa72bb2638db34b14573d9ce.png

  • Like 1
Link to comment
On 9/25/2023 at 1:40 AM, ich777 said:

That's most certainly caused because you have a second GPU in your system and on most motherboards this will disable the iGPU.

Please make sure that you've set your primary GPU to the iGPU in the BIOS, if that also doesn't work you have to connect a HDMI Dummy plug (or Display) to your motherboards HDMI port to enable it <- this is not necessary for most boards.

Your experience speaks volumes. The Dummy plug did it the trick, even after hours of research I couldn't figure out why I couldn't enable primary display to iGPU; Thank you so much for helping getting it enabled and working, truly. And thank you very much for the plugin @zhtengw I really hope to figure out these other issues.

The problem I am experiencing now is two-part - It takes some tinkering to get the VM up to where I can utilize it - but when I can get it working in one of these two ways, I have these issues:

1. I was able to passthrough Intel igpu to previous VM, solo:
- enable a virtual display with "usbmmidd_vv2" & remote in with Splashtop Desktop; but the screen goes black when I do anything extensive (i.e. change from 1090x1080 to 2560x1440 or add a second display).
example 1 tower-diagnostics-20231002-1315.zip

2. When I passthrough: GPU 1 - 'Virtual' & GPU 2 - 'Intel';
- I can see the iGPU in the VM but it is not active. The driver seems to be up-to-date.
example 2 tower-diagnostics-20231002-1439.zip
- This issue here would be ideal to fix first. 

I am not sure if I should bind the VF's at boot, or what is the proper way to get it working. I am getting these errors in the VM logs.

char device redirected to /dev/pts/0 (label charserial0)
qxl_send_events: spice-server bug: guest stopped, ignoring
2023-10-02T18:08:11.528775Z qemu-system-x86_64: VFIO_MAP_DMA failed: Invalid argument
2023-10-02T18:08:11.528813Z qemu-system-x86_64: vfio_dma_map(0x148f5d750400, 0x382000000000, 0x20000000, 0x148f32200000) = -2 (No such file or directory)


If there's anything i can do that might be helpful please let me know. Much appreciated.

Update: After keeping it running in the background a couple days it runs okay and I am able to remote in with no issues. BUT when I turned off another VM & booted another, the Splashtop display went black & and I cannot access it in parsec. 
So issue #1 above is a server/plugin related issue possibly and seems to be unrelated to the VM itself being underpowered or overdriven... (tower-diagnostics-20231004-0028.zip)
. TY

Edited by xlucero1
Update: follow-up on issue #1.
Link to comment
  • ich777 locked this topic
Guest
This topic is now closed to further replies.