XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Intel iGPU passthough

    Scheduled Pinned Locked Moved Hardware
    44 Posts 12 Posters 19.7k Views 13 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • X Offline
      xerxist @bullerwins
      last edited by

      @bullerwins

      Seems you would need at least Kernel > 5.15 for this to work on the NUC 12-13.
      Not sure what got implemented/fixed there but it would need to be back ported for this to work.

      bullerwinsB 1 Reply Last reply Reply Quote 0
      • bullerwinsB Offline
        bullerwins @xerxist
        last edited by

        @xerxist my ubuntu 22.04 install came with kernel 5.15, i have it updated regularly but it doens't update the kernel it seems. But newer fresh installs of ubuntu 22.04 install a newer kernel. I'll check out if the kernel needs to be manually updated

        X 1 Reply Last reply Reply Quote 0
        • X Offline
          xerxist @bullerwins
          last edited by xerxist

          @bullerwins

          Not in the VM itself.
          I even went to kernel 6.6 and try it in there, all give the same issue.

          Something on the hypervisor side in the kernel I meant. This is 4.x something with allot of backports.

          I'll probably just wait a wile before moving full XCP-NG.
          But its a very nice system 👍

          bullerwinsB 1 Reply Last reply Reply Quote 0
          • bullerwinsB Offline
            bullerwins @xerxist
            last edited by

            @xerxist have you tried with the 8.3 beta of XCP-ng? I believe it's got a newer kernel maybe?

            X 1 Reply Last reply Reply Quote 0
            • X Offline
              xerxist @bullerwins
              last edited by

              @bullerwins

              Yes I'm running 8.3 Beta

              1 Reply Last reply Reply Quote 0
              • H Offline
                hawkpro
                last edited by

                @bullerwins @xerxist

                Is this just the mediated (gvt-g?) device passthrough, so the XCP side/server maintains video but a VM can make use of the resources as well?

                I am very interested in this (plex, frigate type use) as a stepping stone away from Proxmox.

                Thanks

                F 1 Reply Last reply Reply Quote 0
                • F Offline
                  flakpyro @hawkpro
                  last edited by

                  In my testing of this, iGPU passthru works fine in Linux but in Windows the device will show an error in the device manager, disable/enabling the drive in the device manager will allow it to work, until next reboot.

                  1 Reply Last reply Reply Quote 0
                  • C Offline
                    CJ
                    last edited by

                    @bullerwins @xerxist @flakpyro

                    What are you using for display output on the host since you're passing the iGPU to the VM?

                    F X 2 Replies Last reply Reply Quote 0
                    • F Offline
                      flakpyro @CJ
                      last edited by

                      @CJ Im running server grade hardware that has remote lights out management with iKVM support. Otherwise yeah you would lose access to the display output.

                      1 Reply Last reply Reply Quote 0
                      • X Offline
                        xerxist @CJ
                        last edited by

                        @CJ

                        No output just need the Intel quick sync.

                        C 1 Reply Last reply Reply Quote 0
                        • C Offline
                          CJ @xerxist
                          last edited by

                          @xerxist Yes, QS for the VM but there are times when having a local display of the console comes in handy. That's why I haven't done mine.

                          1 Reply Last reply Reply Quote 0
                          • MefosheezM Offline
                            Mefosheez @bullerwins
                            last edited by

                            This post is deleted!
                            1 Reply Last reply Reply Quote 0
                            • MefosheezM Offline
                              Mefosheez @bullerwins
                              last edited by

                              @bullerwins said in Intel iGPU passthough:

                              @olivierlambert I tried but getting this error when turning on the VM

                              INTERNAL_ERROR(xenopsd internal error: (Failure
                              "Error from xenguesthelper: Populate on Demand and PCI Passthrough are mutually exclusive"))

                              Not sure what it means

                              EDIT: after googleing it seems that static and dynamic memory has to be the same:
                              9aa61d84-dd71-4f32-9590-8cff8c365a1a-image.png

                              @bullerwins thanks for this. I had to restore a VM from a backup and while it was down changed the dynamic value. This certainly saved me some time. I was positive it had to do with remapping the UID on the VM or something on the host side of it. anyways, thanks.

                              1 Reply Last reply Reply Quote 0
                              • gskgerG gskger referenced this topic on
                              • S Offline
                                scawtydont
                                last edited by

                                I followed this post and it worked for me.
                                One thing to note in my testing, if I had a monitor / HDMI dummy plug hooked up the transcoding worked reliably.
                                When I unplugged it I found activity would be present on the iGPU but the video in plex would play/pause constantly then eventually stop.

                                olivierlambertO 1 Reply Last reply Reply Quote 0
                                • olivierlambertO Offline
                                  olivierlambert Vates 🪐 Co-Founder CEO @scawtydont
                                  last edited by

                                  @scawtydont Thanks for keeping us posted. Dummy plug is still a thing it seems 😄

                                  1 Reply Last reply Reply Quote 0
                                  • V Offline
                                    vhaelan
                                    last edited by vhaelan

                                    I'm also trying to pass through my Intel iGPU to a VM, but running into issues. It does work on Debian, however not on Fedora Server which I'd like to use. I have tried changing to BIOS mode, even plugged in a dummy HDMI plug, but nothing helped. SELinux is disabled on Fedora to rule out any issues related to that. I even tried using XCP-NG Center which was suggested in an older post, but that didn't help either: https://xcp-ng.org/forum/topic/6211/intel-gpu-passthrough-question/3

                                    I also posted this on the Fedora forum with further details: https://discussion.fedoraproject.org/t/intel-igpu-in-containers/176029

                                    Are there any other things I could try to investigate this further?

                                    O 1 Reply Last reply Reply Quote 0
                                    • O Offline
                                      ovicz @vhaelan
                                      last edited by

                                      @vhaelan Hello. What's the output of rpm -qa | grep intel-gpu-firmware ?

                                      V 1 Reply Last reply Reply Quote 0
                                      • V Offline
                                        vhaelan @ovicz
                                        last edited by

                                        @ovicz said in Intel iGPU passthough:

                                        rpm -qa | grep intel-gpu-firmware

                                        Hello @ovicz, I see the following: intel-gpu-firmware-20251021-1.fc43.noarch

                                        O 1 Reply Last reply Reply Quote 0
                                        • O Offline
                                          ovicz @vhaelan
                                          last edited by ovicz

                                          @vhaelan Is the intel graphics module loaded ?

                                          lsmod | grep i915
                                          i915 5373952 24
                                          drm_buddy 32768 2 xe,i915
                                          ttm 135168 3 drm_ttm_helper,xe,i915
                                          i2c_algo_bit 20480 2 xe,i915
                                          drm_display_helper 331776 2 xe,i915
                                          cec 106496 3 drm_display_helper,xe,i915
                                          video 81920 2 xe,i91

                                          sudo dmesg | grep i915
                                          [ 5.855595] i915 0000:00:08.0: [drm] Found alderlake_p/alderlake_n (device ID 46d1) integrated display version 13.00 stepping D0
                                          [ 5.858477] i915 0000:00:08.0: [drm] VT-d active for gfx access
                                          [ 5.858739] i915 0000:00:08.0: [drm] Using Transparent Hugepages
                                          [ 5.859307] i915 0000:00:08.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x4556
                                          [ 5.859312] i915 0000:00:08.0: [drm] Failed to find VBIOS tables (VBT)
                                          [ 5.860012] i915 0000:00:08.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
                                          [ 5.878556] i915 0000:00:08.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
                                          [ 7.806109] i915 0000:00:08.0: [drm] [ENCODER:204:DDI A/PHY A] failed to retrieve link info, disabling eDP
                                          [ 7.843768] i915 0000:00:08.0: [drm] GT0: GuC firmware i915/tgl_guc_70.bin version 70.49.4
                                          [ 7.843776] i915 0000:00:08.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
                                          [ 7.849282] i915 0000:00:08.0: [drm] GT0: HuC: authenticated for all workloads
                                          [ 7.850868] i915 0000:00:08.0: [drm] GT0: GUC: submission enabled
                                          [ 7.850874] i915 0000:00:08.0: [drm] GT0: GUC: SLPC enabled
                                          [ 7.851225] i915 0000:00:08.0: [drm] GT0: GUC: RC enabled
                                          [ 7.852797] i915 0000:00:08.0: [drm] Protected Xe Path (PXP) protected content support initialized
                                          [ 7.854314] i915 0000:00:08.0: [drm] Registered 3 planes with drm panic
                                          [ 7.854318] [drm] Initialized i915 1.6.0 for 0000:00:08.0 on minor 1

                                          Also see in /etc/default/grub if there is NOMODESET in GRUB_CMDLINE_LINUX line.

                                          That's from my Fedora 43 vm with passthrough enabled.

                                          V 1 Reply Last reply Reply Quote 0
                                          • V Offline
                                            vhaelan @ovicz
                                            last edited by

                                            @ovicz Yes, it's loaded

                                            lsmod | grep i915
                                            i915                 5373952  0
                                            i2c_algo_bit           20480  2 xe,i915
                                            drm_buddy              32768  2 xe,i915
                                            video                  81920  2 xe,i915
                                            ttm                   135168  3 drm_ttm_helper,xe,i915
                                            drm_display_helper    331776  2 xe,i915
                                            cec                   106496  3 drm_display_helper,xe,i915
                                            

                                            dmesg starts the same as your output, the only difference is that I have GuC disabled.

                                            dmesg | grep i915
                                            [    1.609000] i915 0000:00:08.0: [drm] Found alderlake_s (device ID 4690) integrated display version 12.00 stepping C0
                                            [    1.609986] i915 0000:00:08.0: [drm] VT-d active for gfx access
                                            [    1.610073] i915 0000:00:08.0: [drm] Using Transparent Hugepages
                                            [    1.611342] i915 0000:00:08.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x4556
                                            [    1.611345] i915 0000:00:08.0: [drm] Failed to find VBIOS tables (VBT)
                                            [    1.612136] i915 0000:00:08.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
                                            [    1.614455] i915 0000:00:08.0: [drm] Finished loading DMC firmware i915/adls_dmc_ver2_01.bin (v2.1)
                                            [    3.583673] i915 0000:00:08.0: [drm] [ENCODER:261:DDI A/PHY A] failed to retrieve link info, disabling eDP
                                            [    3.605422] i915 0000:00:08.0: [drm] GT0: GuC firmware i915/tgl_guc_70.bin version 70.49.4
                                            [    3.605426] i915 0000:00:08.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
                                            [    3.615402] i915 0000:00:08.0: [drm] GT0: HuC: authenticated for all workloads
                                            [    3.615410] i915 0000:00:08.0: [drm] GT0: GUC: submission disabled
                                            [    3.615414] i915 0000:00:08.0: [drm] GT0: GUC: SLPC disabled
                                            [    3.616508] i915 0000:00:08.0: [drm] Protected Xe Path (PXP) protected content support initialized
                                            [    3.617330] i915 0000:00:08.0: [drm] Registered 4 planes with drm panic
                                            [    3.617354] [drm] Initialized i915 1.6.0 for 0000:00:08.0 on minor 1
                                            [    3.627390] i915 0000:00:08.0: [drm] Cannot find any crtc or sizes
                                            [    3.637349] i915 0000:00:08.0: [drm] Cannot find any crtc or sizes
                                            [    3.657358] i915 0000:00:08.0: [drm] Cannot find any crtc or sizes
                                            

                                            Having edited /etc/modprobe.d/i915.conf by adding options i915 enable_guc=3 enable_huc=1 fixed the GuC part as well, however I still have the same issue. Cannot find any crtc or sizes is the only part which is not in your output.

                                            /etc/default/grub is clean, I don't have NOMODESET:

                                            cat /etc/default/grub
                                            GRUB_TIMEOUT=5
                                            GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
                                            GRUB_DEFAULT=saved
                                            GRUB_DISABLE_SUBMENU=true
                                            GRUB_TERMINAL_OUTPUT="console"
                                            GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rhgb quiet"
                                            GRUB_DISABLE_RECOVERY="true"
                                            
                                            1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • First post
                                              Last post