Jump to content

[SOLVED] Win10 VM dont get correct IP due to GPU passthrough


Recommended Posts

Posted (edited)

Hi, 

 

I need some assistance getting my Win10 VM up and running. 

 

Current/main problem: After changing GPU from VNC to my ASUS RogStrix (AMD VEGA 56) the VM seems not to be able to run or receiving a valid IP address. 

IMHO it must have something to do with the change of the GPU, because before changing (only running with VNC) it works flawless. 

I was able to connect via VNC Client, WebClient and RDP-Manager - no problems. 

 

But as soon as change the GPU (and the sound card as well) to my VEGA 56 the VM doesn't shown up in my LAN. 

I looked in the VM-LOG, but I can't see anything that could lead me to a solution or even know, what's exactly going on :(

Below you'll find both logs. 

 

For better transparency, I'll put some key information what I've done so far / my settings.

  • Set up a Win 10 VM on an unassigned drive (nvme0n1)
    • with the following VM manager settings: network bridge = br0 and PCIe ACS override = “Both”
    • with the following explicit settings for my VM: 
      • CPU= host passthrough
      • machine = i440FX-4.2
      • BIOS = OVMF 
      • Hyper-V = No 
      • USB Controller = 3.0 (qemu XHCI)
      • Primary vDisk Location = manual = /dev/nvme0n1
      • Primary vDisk Bus = virtIO
      • GPU = VNC
      • SoundCard = none
  • unRAID confirms via "INFO-PopUp" that HVM and IOMMU are enabled (vt-d = active @ BIOS) 
  • Installed the virt-IO driver, updated Win10 with latest patches to get network interface and better display resolution
  • Boot up the VM with GPU = VNC to check, if everything runs fine --> correct IP via DHCP. As mentioned above, connection via VNC and RDP works fine! 

 

And now it could be a little bit confusing due to my several tests with different configs - but nothing works. 

Addition: I already run these commands (listed in another thread HERE) to get rid of the mmap-error - that worked! But sadly it seems, that there is another problem....

echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind

 

First try:

I just tried to change GPU and SoundCard to my Vega 56

Result: VM gets no correct IP (gets a 169.xxx.xxx.xxx) - no chance to connect. Try failed!

 

Second try:

Changed the GPU/SoundCard and edited the syslinux-config (see below) 

Result: VM gets no correct IP (gets a 169.xxx.xxx.xxx) - no chance to connect. Try failed!

 

Third try: 

Changed the GPU/SoundCard and edited the syslinux-config and vm-settings via XML (see below)

Result: VM gets no correct IP (gets a 169.xxx.xxx.xxx) - no chance to connect. Try failed!

 

Fourth try:

Changed the GPU/SoundCard and edited the syslinux-config and leave the vm-settings untouched (no editing as mentioned below)

Result: VM gets no correct IP (gets a 169.xxx.xxx.xxx) - no chance to connect. Try failed!

 

Fifth, sixth, seventh try:

Same as above but now with the tree different vbios found here --> Link to TechPowerUPs VEGA56 ASUS vBIOS

Result: VM gets no correct IP (gets a 169.xxx.xxx.xxx) - no chance to connect. Try failed!

 

Eight try:

Rollback only GPU to VNC without changing syslinux --> VM gets correct IP - connected via VNC and RDP - no problems.

 

 

 

Detailed Information for above mentioned edits 

Edited Syslinux configuration with the following parameter. 

vfio-pci.ids=1002:687f,1002:aaf8

Those IDs are:

[1002:687f] 03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64] (rev ff)

[1002:aaf8] 03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64] (rev ff)

 

Edited XML-Settings for VM

Add a flag on the first virtual line below the BIOS that says multifunction='on'

Changed the virtual devices to be on the same bus, and set the functions to the same as their host.

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
    </hostdev>

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
    </hostdev>

 

VM-Log with GPU set to VEGA 56

2020-06-25 15:40:30.245+0000: starting up libvirt version: 5.10.0, qemu version: 4.2.0, kernel: 4.19.107-Unraid, hostname: v1ew-s0urce
LC_ALL=C \
PATH=/bin:/sbin:/usr/bin:/usr/sbin \
HOME=/var/lib/libvirt/qemu/domain-2-1337-Machine \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-2-1337-Machine/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-2-1337-Machine/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-2-1337-Machine/.config \
QEMU_AUDIO_DRV=none \
/usr/local/sbin/qemu \
-name guest=1337-Machine,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-2-1337-Machine/master-key.aes \
-blockdev '{"driver":"file","filename":"/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
-blockdev '{"driver":"file","filename":"/etc/libvirt/qemu/nvram/a302cf39-f5ea-18bd-c9a1-3d4b4993bea1_VARS-pure-efi.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
-machine pc-i440fx-4.2,accel=kvm,usb=off,dump-guest-core=off,mem-merge=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
-cpu host,host-cache-info=on,l3-cache=off \
-m 16384 \
-overcommit mem-lock=off \
-smp 4,sockets=1,cores=2,threads=2 \
-uuid a302cf39-f5ea-18bd-c9a1-3d4b4993bea1 \
-display none \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=34,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=localtime,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-shutdown \
-boot strict=on \
-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.0,addr=0x7 \
-device ahci,id=sata0,bus=pci.0,addr=0x5 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 \
-blockdev '{"driver":"host_device","filename":"/dev/nvme0n1","node-name":"libvirt-2-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-2-storage"}' \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=libvirt-2-format,id=virtio-disk2,bootindex=1,write-cache=on \
-blockdev '{"driver":"file","filename":"/mnt/user/isos/virtio-win-0.1.173-2.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
-device ide-cd,bus=sata0.1,drive=libvirt-1-format,id=sata0-0-1 \
-netdev tap,fd=36,id=hostnet0,vhost=on,vhostfd=37 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:71:0a:72,bus=pci.0,addr=0x2 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,fd=38,server,nowait \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
-device usb-tablet,id=input0,bus=usb.0,port=1 \
-device vfio-pci,host=0000:03:00.0,id=hostdev0,bus=pci.0,multifunction=on,addr=0x6 \
-device vfio-pci,host=0000:03:00.1,id=hostdev1,bus=pci.0,addr=0x6.0x1 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2020-06-25 15:40:30.245+0000: Domain id=2 is tainted: high-privileges
2020-06-25 15:40:30.245+0000: Domain id=2 is tainted: host-cpu
char device redirected to /dev/pts/0 (label charserial0)

 

VM-LOG with GPU set to VNC

2020-06-25 16:29:20.485+0000: starting up libvirt version: 5.10.0, qemu version: 4.2.0, kernel: 4.19.107-Unraid, hostname: v1ew-s0urce
LC_ALL=C \
PATH=/bin:/sbin:/usr/bin:/usr/sbin \
HOME=/var/lib/libvirt/qemu/domain-3-1337-Machine \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-3-1337-Machine/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-3-1337-Machine/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-3-1337-Machine/.config \
QEMU_AUDIO_DRV=none \
/usr/local/sbin/qemu \
-name guest=1337-Machine,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-3-1337-Machine/master-key.aes \
-blockdev '{"driver":"file","filename":"/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
-blockdev '{"driver":"file","filename":"/etc/libvirt/qemu/nvram/a302cf39-f5ea-18bd-c9a1-3d4b4993bea1_VARS-pure-efi.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
-machine pc-i440fx-4.2,accel=kvm,usb=off,dump-guest-core=off,mem-merge=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
-cpu host,host-cache-info=on,l3-cache=off \
-m 16384 \
-overcommit mem-lock=off \
-smp 4,sockets=1,cores=2,threads=2 \
-uuid a302cf39-f5ea-18bd-c9a1-3d4b4993bea1 \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=34,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=localtime,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-shutdown \
-boot strict=on \
-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.0,addr=0x7 \
-device ahci,id=sata0,bus=pci.0,addr=0x5 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 \
-blockdev '{"driver":"host_device","filename":"/dev/nvme0n1","node-name":"libvirt-2-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-2-storage"}' \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=libvirt-2-format,id=virtio-disk2,bootindex=1,write-cache=on \
-blockdev '{"driver":"file","filename":"/mnt/user/isos/virtio-win-0.1.173-2.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
-device ide-cd,bus=sata0.1,drive=libvirt-1-format,id=sata0-0-1 \
-netdev tap,fd=36,id=hostnet0,vhost=on,vhostfd=37 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:71:0a:72,bus=pci.0,addr=0x3 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,fd=38,server,nowait \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
-device usb-tablet,id=input0,bus=usb.0,port=1 \
-vnc 0.0.0.0:0,websocket=5700 \
-k en-us \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2020-06-25 16:29:20.485+0000: Domain id=3 is tainted: high-privileges
2020-06-25 16:29:20.485+0000: Domain id=3 is tainted: host-cpu
char device redirected to /dev/pts/0 (label charserial0)

 

Hopefully that information provide any useful information for somebody who can help me. 

I tried a lot of different settings - nothing works and I still wonder, that e.g. in SpaceInvaders Video he just changed GPU and Soundcard and everything works fine.

He doesn't changed any syslinux configuration nor XML-parameters within the VM-setup -- and it works flawlessly out of the box... 😭

Edited by Maddeen
Posted (edited)

Got it - found out, some settings seems to be self-evident - but not for me :)

 

1) Must change primary graphics to iGPU in BIOS

2) Leave iGPU Multi-Monitor disabled in BIOS 

3) the HDMI Dummy seems to be placed in the iGPU Port - NOT in the GPU Port. 

 

After changing this three settings, everything works fine. Passthrough my Vega works. 🙌

Now back to the fine adjustments and then I'll give remote gaming a chance 🤩🤙

Edited by Maddeen

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.

×
×
  • Create New...