Windows GPU-P as well as WSL2 works on unRAiD


Recommended Posts

I just wanted to let anyone know that I have successfully tested Nvidia GPU-P on Windows on unRAID with an RTX3060 passed though.

 

I used this guide video. 

 

 

Also WSL2 works with my intel 10700K  and  Gigabyte Z490 VISION G

WSLg works, but not with hardware acceleration. I wonder why that could be?

Works bare metal with the same Windows 11 installation

Edited by Jagadguru
Link to comment
  • 2 months later...

Hi,

 

I read this thread and i was wondering how you have managed it. So you are saying that you have succesfully shared a gpu in windows on unRaid?

So unRaid > Windows VM > Hyper-V > Windows VM inside Hyper-V?

I am trying to achieve the same, but with no luck. The VM inside Hyper-v just gives me a black screen.

 

Can you share how you have managed it?

Link to comment
5 hours ago, hyellow said:

Hi,

 

I read this thread and i was wondering how you have managed it. So you are saying that you have succesfully shared a gpu in windows on unRaid?

So unRaid > Windows VM > Hyper-V > Windows VM inside Hyper-V?

I am trying to achieve the same, but with no luck. The VM inside Hyper-v just gives me a black screen.

 

Can you share how you have managed it?

Yes, the nested VM's are as you said. I used the video guide I linked in my last message. Very roughly I used Windows 11  for both VM's, inner and outer.  Passthrough the GPU to the outer.

 

You first issue the PS commands in the Win host VM that are mentioned in the video to tell if you're GPU is suitable (which it probably is because there is broad support). Then you install the hyper-v VM with all the settings like in the video.

 

The most crucial part, though is that you have to copy over your exact Graphics Driver file set for the installed GPU (driver) from the outer to the inner Windows and place them all in the right dirs. This is explicit in the video. Using the inner vM's drivers, installed or otherwise will not work.

 

Then you run the included script in the Youtube description and start the VM and voila! GPU acceleration in a nested VM

Link to comment
  • 10 months later...

Hi, I've tried on several different versions of windows (10 & 11) and also different versions of unraid to achieve the same.  

 

But every time i enable Hyper-V within my "Windows features" all my VM's get stuck at the windows spinning loading screen as it seems most others are stuck at too on forums.

 

Baremetal my Windows Install loads up without a problem but when put through unraid it doesn't.

 

Would you mind posting which version of unraid you are using and the template you are using for your successful unRaid > Windows VM ?

 

Many Thanks

 

Link to comment
1 hour ago, lawhazl said:

Hi, I've tried on several different versions of windows (10 & 11) and also different versions of unraid to achieve the same.  

 

But every time i enable Hyper-V within my "Windows features" all my VM's get stuck at the windows spinning loading screen as it seems most others are stuck at too on forums.

 

Baremetal my Windows Install loads up without a problem but when put through unraid it doesn't.

 

Would you mind posting which version of unraid you are using and the template you are using for your successful unRaid > Windows VM ?

 

Many Thanks

 

Have you added nested kernel option in syslinux? Tbis is for intel

label unRAID OS

  menu default

  kernel /bzimage

  append initrd=/bzroot kvm_intel.nested=1

 

AMD. kvm_amd.nested=1

 

Edited by SimonF
  • Like 1
Link to comment

Tried, but still same

 

it does show as enabled:

 

Module: kvm_intel
Parameter: allow_smaller_maxphyaddr --> N
Parameter: dump_invalid_vmcs --> N
Parameter: emulate_invalid_guest_state --> Y
Parameter: enable_apicv --> N
Parameter: enable_shadow_vmcs --> Y
Parameter: enlightened_vmcs --> N
Parameter: ept --> Y
Parameter: eptad --> Y
Parameter: fasteoi --> Y
Parameter: flexpriority --> Y
Parameter: nested --> Y
Parameter: nested_early_check --> N
Parameter: ple_gap --> 128
Parameter: ple_window --> 4096
Parameter: ple_window_grow --> 2
Parameter: ple_window_max --> 4294967295
Parameter: ple_window_shrink --> 0
Parameter: pml --> Y
Parameter: preemption_timer --> Y
Parameter: pt_mode --> 0
Parameter: sgx --> Y
Parameter: unrestricted_guest --> Y
Parameter: vmentry_l1d_flush --> never
Parameter: vnmi --> Y
Parameter: vpid --> Y

 

image.png.d4461cd020e3ea1711a28127171b989d.png

Edited by Kilrah
Link to comment

I had this working in unRAID 6.10.0-rc1. Since then I only run my windows VM bare metal because the WSL2 performance is like night and day. Anyway, here is my XML

 

It says Winndows 10 but it's actually Windows 11. Yes enabling nested=1 was necessary

 

<domain type='kvm'>
  <name>Windows 10 Pro</name>
  <uuid>5d8e4c80-d4cf-d855-d82b-e7b0c3a4d8d6</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>11718750</memory>
  <currentMemory unit='KiB'>11718750</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>16</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='8'/>
    <vcpupin vcpu='2' cpuset='1'/>
    <vcpupin vcpu='3' cpuset='9'/>
    <vcpupin vcpu='4' cpuset='2'/>
    <vcpupin vcpu='5' cpuset='10'/>
    <vcpupin vcpu='6' cpuset='3'/>
    <vcpupin vcpu='7' cpuset='11'/>
    <vcpupin vcpu='8' cpuset='4'/>
    <vcpupin vcpu='9' cpuset='12'/>
    <vcpupin vcpu='10' cpuset='5'/>
    <vcpupin vcpu='11' cpuset='13'/>
    <vcpupin vcpu='12' cpuset='6'/>
    <vcpupin vcpu='13' cpuset='14'/>
    <vcpupin vcpu='14' cpuset='7'/>
    <vcpupin vcpu='15' cpuset='15'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-6.0'>hvm</type>
    <loader readonly='yes' type='pflash'>/mnt/user/domains/Windows 10 Pro/OVMF_CODE.fd</loader>
    <nvram>/mnt/user/domains/Windows 10 Pro/OVMF_VARS.fd</nvram>
  </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='8' 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='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/Windows/Window11_Insiders.iso'/>
      <target dev='hda' bus='sata'/>
      <readonly/>
      <boot order='2'/>
      <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.141-1.iso'/>
      <target dev='hdb' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Windows 10 Pro/vdisk1.img'/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <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'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x9'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0xa'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x14'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0xb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-to-pci-bridge'>
      <model name='pcie-pci-bridge'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0xc'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x6'/>
    </controller>
    <controller type='scsi' index='0' model='lsilogic'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:e3:02:d1'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <tpm model='tpm-tis'>
      <backend type='emulator' version='2.0'/>
    </tpm>
    <audio id='1' type='none'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0' multifunction='on'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0' multifunction='on'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x1'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'/>
</domain>

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.