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

    Intel iGPU passthough

    Scheduled Pinned Locked Moved Hardware
    44 Posts 12 Posters 17.5k 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.
    • 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
                                          • First post
                                            Last post