Jump to content
XPEnology Community

showkubii

Rookie
  • Posts

    2
  • Joined

  • Last visited

Posts posted by showkubii

  1. 19 hours ago, MoetaYuko said:

    SR-IOV requires the driver on your hypervisor (Unraid in you case) to be compatible with the one on the guest. From what I observed, the popular i915 driver for unraid https://github.com/zhtengw/unraid-i915-sriov is outdated, and you need to port https://github.com/intel-gpu/intel-gpu-i915-backports to unraid to ensure compatibility with my DSM port. I don't use unraid so I can't offer any helps.

     

    It's a shame because unraid uses https://github.com/strongtz/i915-sriov-dkms

     

    It would be nice if that was supported as well.

  2. On 11/14/2023 at 12:50 PM, MoetaYuko said:

    Hello everyone,

     

    I've managed to compile the up-to-date out-of-tree i915 kernel module for sa6400, with support for up to 14th gen (Raptor Lake) Intel GPU in theory. I've verified jellyfin HW transcoding on my N100 box (12th gen, Alder Lake), in both PCIe passthrough and SR-IOV VF mode.

     

    The source code is available at https://github.com/MoetaYuko/intel-gpu-i915-backports/tree/redhat/main-epyc7002, which can be built on the cloud w/ github actions. You can find the precompiled blobs from github actions artifacts of this repo. The driver is considered alpha quality because I haven't used it long. Feel free to try it and report issues here if any.

     

    In case of missing firmware, you'll see error messages w/ the desired FW filename in dmesg. They can be downloaded at https://github.com/intel-gpu/intel-gpu-firmware and put in `/lib/firmware/i915` of your DSM.

     

    For SR-IOV with PVE hypervisor, I highly recommend using the dkms driver published at https://github.com/MoetaYuko/intel-gpu-i915-backports/releases (its source code is available at `backport/main` branch of the same repo). It has three major advantages over the popular host driver from https://github.com/strongtz/i915-sriov-dkms:

    1. Its Intel release tag is the same as my sa6400 driver, so the best compatibility is ensured.
    2. It's packaged as .deb so it can be easily installed and upgraded via apt/dpkg.
    3. The .ko binaries reside in `/lib/modules/$(uname -r)/updates/dkms` so they won't override the ones provided by the proxmox-kernel package.

     

    Unraid 6.12.4 [i5 13500] VM and SR-IOV [https://github.com/wjz304/rr of version 23.11.6]

     

    <?xml version='1.0' encoding='UTF-8'?>
    <domain type='kvm' id='1'>
      <name>xpen</name>
      <uuid>cc913322-e007-fc57-1d3c-ed9a016a48b4</uuid>
      <metadata>
        <vmtemplate xmlns="unraid" name="Linux" icon="linux.png" os="linux"/>
      </metadata>
      <memory unit='KiB'>4194304</memory>
      <currentMemory unit='KiB'>4194304</currentMemory>
      <memoryBacking>
        <nosharepages/>
      </memoryBacking>
      <vcpu placement='static'>4</vcpu>
      <cputune>
        <vcpupin vcpu='0' cpuset='6'/>
        <vcpupin vcpu='1' cpuset='7'/>
        <vcpupin vcpu='2' cpuset='10'/>
        <vcpupin vcpu='3' cpuset='11'/>
      </cputune>
      <resource>
        <partition>/machine</partition>
      </resource>
      <os>
        <type arch='x86_64' machine='pc-q35-7.1'>hvm</type>
        <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
        <nvram>/etc/libvirt/qemu/nvram/cc913322-e007-fc57-1d3c-ed9a016a48b4_VARS-pure-efi.fd</nvram>
      </os>
      <features>
        <acpi/>
        <apic/>
      </features>
      <cpu mode='host-passthrough' check='none' migratable='on'>
        <topology sockets='1' dies='1' cores='2' threads='2'/>
        <cache mode='passthrough'/>
      </cpu>
      <clock offset='utc'>
        <timer name='rtc' tickpolicy='catchup'/>
        <timer name='pit' tickpolicy='delay'/>
        <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/apollo/isos/rr.img' index='2'/>
          <backingStore/>
          <target dev='hdc' bus='usb'/>
          <serial>vdisk1</serial>
          <boot order='1'/>
          <alias name='usb-disk2'/>
          <address type='usb' bus='0' port='1'/>
        </disk>
        <disk type='file' device='disk'>
          <driver name='qemu' type='raw' cache='writeback'/>
          <source file='/mnt/apollo/domains/xpen/vdisk2.img' index='1'/>
          <backingStore/>
          <target dev='hdd' bus='sata'/>
          <serial>vdisk2</serial>
          <alias name='sata0-0-3'/>
          <address type='drive' controller='0' bus='0' target='0' unit='3'/>
        </disk>
        <controller type='usb' index='0' model='ich9-ehci1'>
          <alias name='usb'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci1'>
          <alias name='usb'/>
          <master startport='0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci2'>
          <alias name='usb'/>
          <master startport='2'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci3'>
          <alias name='usb'/>
          <master startport='4'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
        </controller>
        <controller type='sata' index='0'>
          <alias name='ide'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
        </controller>
        <controller type='pci' index='0' model='pcie-root'>
          <alias name='pcie.0'/>
        </controller>
        <controller type='pci' index='1' model='pcie-root-port'>
          <model name='pcie-root-port'/>
          <target chassis='1' port='0x18'/>
          <alias name='pci.1'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' multifunction='on'/>
        </controller>
        <controller type='pci' index='2' model='pcie-to-pci-bridge'>
          <model name='pcie-pci-bridge'/>
          <alias name='pci.2'/>
          <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </controller>
        <controller type='pci' index='3' model='pcie-root-port'>
          <model name='pcie-root-port'/>
          <target chassis='3' port='0x19'/>
          <alias name='pci.3'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x1'/>
        </controller>
        <controller type='pci' index='4' model='pcie-root-port'>
          <model name='pcie-root-port'/>
          <target chassis='4' port='0x1a'/>
          <alias name='pci.4'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x2'/>
        </controller>
        <controller type='virtio-serial' index='0'>
          <alias name='virtio-serial0'/>
          <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
        </controller>
        <interface type='direct' trustGuestRxFilters='yes'>
          <mac address='52:54:00:a8:81:bd'/>
          <source dev='vhost0' mode='bridge'/>
          <target dev='macvtap0'/>
          <model type='e1000'/>
          <alias name='net0'/>
          <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
        </interface>
        <serial type='pty'>
          <source path='/dev/pts/1'/>
          <target type='isa-serial' port='0'>
            <model name='isa-serial'/>
          </target>
          <alias name='serial0'/>
        </serial>
        <console type='pty' tty='/dev/pts/1'>
          <source path='/dev/pts/1'/>
          <target type='serial' port='0'/>
          <alias name='serial0'/>
        </console>
        <channel type='unix'>
          <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-xpen/org.qemu.guest_agent.0'/>
          <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
          <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='2'/>
        </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-us'>
          <listen type='address' address='0.0.0.0'/>
        </graphics>
        <audio id='1' type='none'/>
        <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='0x01' function='0x0'/>
        </video>
        <hostdev mode='subsystem' type='pci' managed='yes'>
          <driver name='vfio'/>
          <source>
            <address domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
          </source>
          <alias name='hostdev0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </hostdev>
        <memballoon model='none'/>
      </devices>
      <seclabel type='dynamic' model='dac' relabel='yes'>
        <label>+0:+100</label>
        <imagelabel>+0:+100</imagelabel>
      </seclabel>
    </domain>

     

    image.thumb.png.bef25744f1251d5a9c8be4e3c5e7f2a1.png

     

    How do I fix this problem?

×
×
  • Create New...