wchusky Posted November 3, 2021 Share Posted November 3, 2021 Hi, Sorry in advanced if this has been asked many times prior. I been searching for an answer but can't seem to find one. Basically, I am trying to get my Windows 10 VM to boot up on the screen that's attached the UNRAID Server. I have a MSI RX 570 GPU on the server, and the monitor is hooked up to the RX 570 GPU. When I boot up unRaid server, I can see the BIOS info booting up etc on the computer monitor. Once its booted up, I want to get it to see Windows 10 login screen, which it is not doing right now. I can log into the server GUI from a different machine on the same network no problem. I got WIndows 10 machine Graphic Adaptor part set up to be the AMD RX 570 GPU. Also, I assigned the local USB Keyboard and mouse to the Windows 10 VM that's attached to the server. Here is the set up part: So what am I doing wrong? How do I get it to boot up on the monitor and use the keyboard/mouse that's attached to the server? Thanks in advance! Quote Link to comment
wchusky Posted November 4, 2021 Author Share Posted November 4, 2021 (edited) I did a dump of the GPU bios using user script. I updated the GPU passthrough on the WIN 10 machine with the following: Still, I am getting a blank screen on my monitor? I also enabled both USB keyboard and mouse that's attached to the server, but they don't seem to respond: Here is the log: -display none \ -no-user-config \ -nodefaults \ -chardev socket,id=charmonitor,fd=31,server,nowait \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=localtime \ -no-hpet \ -no-shutdown \ -boot strict=on \ -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x7.0x7 \ -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x7 \ -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x7.0x1 \ -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x7.0x2 \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 \ -blockdev '{"driver":"file","filename":"/mnt/user/domains/Windows 10 rliu GM/vdisk1.img","node-name":"libvirt-3-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-3-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-3-storage"}' \ -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=libvirt-3-format,id=virtio-disk2,bootindex=1,write-cache=on \ -blockdev '{"driver":"file","filename":"/mnt/user/isos/Windows10-64Bits.iso","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":true,"driver":"raw","file":"libvirt-2-storage"}' \ -device ide-cd,bus=ide.0,unit=0,drive=libvirt-2-format,id=ide0-0-0,bootindex=2 \ -blockdev '{"driver":"file","filename":"/mnt/user/isos/virtio-win-0.1.190-1.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=ide.0,unit=1,drive=libvirt-1-format,id=ide0-0-1 \ -netdev tap,fd=33,id=hostnet0 \ -device virtio-net,netdev=hostnet0,id=net0,mac=52:54:00:a1:b5:10,bus=pci.0,addr=0x2 \ -chardev pty,id=charserial0 \ -device isa-serial,chardev=charserial0,id=serial0 \ -chardev socket,id=charchannel0,fd=34,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,addr=0x5,romfile=/mnt/user/isos/vbios/gpu-MSI-RX570.rom \ -device vfio-pci,host=0000:03:00.1,id=hostdev1,bus=pci.0,addr=0x6 \ -device vfio-pci,host=0000:00:1b.0,id=hostdev2,bus=pci.0,addr=0x8 \ -device usb-host,hostbus=2,hostaddr=3,id=hostdev3,bus=usb.0,port=2 \ -device usb-host,hostbus=2,hostaddr=4,id=hostdev4,bus=usb.0,port=3 \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on 2021-11-04 01:49:59.445+0000: Domain id=6 is tainted: high-privileges 2021-11-04 01:49:59.445+0000: Domain id=6 is tainted: host-cpu char device redirected to /dev/pts/0 (label charserial0) Thanks. Edited November 4, 2021 by wchusky Quote Link to comment
wchusky Posted November 4, 2021 Author Share Posted November 4, 2021 I changed the WIN 10 GPU to VNC, and created a new VM using the Ubuntu template with the following settings: I am still getting a blank screen, but the keyboard I can change the light for CAP on/off. Here is the log: -nodefaults \ -chardev socket,id=charmonitor,fd=31,server,nowait \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=utc,driftfix=slew \ -global kvm-pit.lost_tick_policy=delay \ -no-hpet \ -no-shutdown \ -boot strict=on \ -device pcie-root-port,port=0x8,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x1 \ -device pcie-root-port,port=0x9,chassis=2,id=pci.2,bus=pcie.0,addr=0x1.0x1 \ -device pcie-root-port,port=0xa,chassis=3,id=pci.3,bus=pcie.0,addr=0x1.0x2 \ -device pcie-root-port,port=0xb,chassis=4,id=pci.4,bus=pcie.0,addr=0x1.0x3 \ -device pcie-root-port,port=0xc,chassis=5,id=pci.5,bus=pcie.0,addr=0x1.0x4 \ -device pcie-root-port,port=0xd,chassis=6,id=pci.6,bus=pcie.0,addr=0x1.0x5 \ -device pcie-root-port,port=0xe,chassis=7,id=pci.7,bus=pcie.0,addr=0x1.0x6 \ -device pcie-pci-bridge,id=pci.8,bus=pci.1,addr=0x0 \ -device ich9-usb-ehci1,id=usb,bus=pcie.0,addr=0x7.0x7 \ -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pcie.0,multifunction=on,addr=0x7 \ -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pcie.0,addr=0x7.0x1 \ -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pcie.0,addr=0x7.0x2 \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.2,addr=0x0 \ -blockdev '{"driver":"file","filename":"/mnt/user/domains/bbi-rliu-ubuntu-01/vdisk1.img","node-name":"libvirt-1-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"}' \ -device virtio-blk-pci,bus=pci.4,addr=0x0,drive=libvirt-1-format,id=virtio-disk2,bootindex=1,write-cache=on \ -netdev tap,fd=33,id=hostnet0 \ -device virtio-net,netdev=hostnet0,id=net0,mac=52:54:00:4f:94:c2,bus=pci.3,addr=0x0 \ -chardev pty,id=charserial0 \ -device isa-serial,chardev=charserial0,id=serial0 \ -chardev socket,id=charchannel0,fd=34,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.5,addr=0x0,romfile=/mnt/user/isos/vbios/gpu-MSI-RX570.rom \ -device vfio-pci,host=0000:03:00.1,id=hostdev1,bus=pci.6,addr=0x0 \ -device usb-host,hostbus=2,hostaddr=3,id=hostdev2,bus=usb.0,port=2 \ -device usb-host,hostbus=2,hostaddr=4,id=hostdev3,bus=usb.0,port=3 \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on 2021-11-04 02:07:57.237+0000: Domain id=11 is tainted: high-privileges 2021-11-04 02:07:57.237+0000: Domain id=11 is tainted: host-cpu char device redirected to /dev/pts/0 (label charserial0) Really would appreciate any help since I am not sure why this is so complicated when it should be simple. Quote Link to comment
ghost82 Posted November 4, 2021 Share Posted November 4, 2021 Share diagnostics file. If the gpu is in use by unraid you need to isolate it and detach it from being used by unraid, probably it is using efifb. Quote Link to comment
wchusky Posted November 4, 2021 Author Share Posted November 4, 2021 (edited) Thanks for the help. Here is the diagnostic file. It is basically a new UNRAID install. inno-unraid-01-diagnostics-20211104-1030.zip Edited November 4, 2021 by wchusky Quote Link to comment
jonp Posted November 4, 2021 Share Posted November 4, 2021 Hi there, A few things to keep in mind. First and foremost is that AMD GPUs are notoriously more difficult to pass through to VMs than NVIDIA, so keep that in the back of your mind. The second thing worth noting is that the host OS needs a GPU and you'll need one for the guest. If the motherboard has integrated graphics, you need to ensure those are enabled in the BIOS and set as the primary graphics there so that when Unraid boots, it utilizes that iGPU and then you can use your discrete GPU for the VM. If you don't have an iGPU on that system, you can try some more advanced guides to passing through the GPU: Quote Link to comment
wchusky Posted November 4, 2021 Author Share Posted November 4, 2021 Thanks Jon. Yeah I seen that video already. My mother unfortunately don't have a built-in GPU. I followed the instruction in the video above, but I am still unable to get the display. My next step is I will install a second GPU to see if that will work. I will report back if second GPU can get this working somehow. Quote Link to comment
wchusky Posted November 4, 2021 Author Share Posted November 4, 2021 (edited) I got 2 GPUs now on the system. I have 1x NVIDIA GT1030 Rev A1 GPU and 1x MSI AMD RX 570 4 GB GPU installed on the system. The system boots up to NVIDIA GPU fine, and I can see the UNRAID GUI login screen now. I got a second monitor hooked up to the AMD RX570 HDMI port. I tried to pass through using the WIN 10 VM, and I am getting nothing. I also tried to passthrough using the Ubuntu VM I just created, and I am also getting a blank screen. Why didn't it work? Any recommendation on what GPU would make this process easier? What else have people tried that's popular and working? Attached is the diagnostic file. Any advice would be appreciated. inno-unraid-01-diagnostics-20211104-1605.zip Edited November 4, 2021 by wchusky Quote Link to comment
ghost82 Posted November 5, 2021 Share Posted November 5, 2021 9 hours ago, wchusky said: What else have people tried that's popular and working? 1. If you passthrough the amd gpu I would suggest to switch from i440fx to q35, maintaining ovmf as bios. 2. Manually put the gpu audio part in the same bus/slot as the video part, but different function (multifunction device). The following is just an example: From: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> To: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/> </hostdev> 3. In the system devices in unraid put a check for vfio for the gpu (iommu group 69), both 82:00.0 and 82:00.1 4. Reboot and try Quote Link to comment
wchusky Posted November 5, 2021 Author Share Posted November 5, 2021 7 hours ago, ghost82 said: 1. If you passthrough the amd gpu I would suggest to switch from i440fx to q35, maintaining ovmf as bios. 2. Manually put the gpu audio part in the same bus/slot as the video part, but different function (multifunction device). The following is just an example: From: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> To: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/> </hostdev> 3. In the system devices in unraid put a check for vfio for the gpu (iommu group 69), both 82:00.0 and 82:00.1 4. Reboot and try Thanks for the help. Sorry for my ignorance, but do you modify this under SETTING for each VM? Right now I got another issue is that I can't open the VMs page to edit VMs. I am not sure what caused this, but as of right now I can't even get to my VM page. It is running Parity Check now, so I guess I will wait until it is over? Is there a quicker way to get the VM page back? I am getting a blank page now when going to the VM page. For number 1 above about switching to q35, does that mean I need to boot my system under UEFI vs. legacy bios? I read here that Windows VM does not work in q35? I have applied number 3 above per your suggestion. Hopefully this will bring back the VM page. Will update with progress. Thanks again! Quote Link to comment
ghost82 Posted November 5, 2021 Share Posted November 5, 2021 (edited) 43 minutes ago, wchusky said: It is running Parity Check now, so I guess I will wait until it is over? I don't use parity, but I think so..if it doesn't come up again after the check reboot the server. 43 minutes ago, wchusky said: For number 1 above about switching to q35, does that mean I need to boot my system under UEFI vs. legacy bios? You are already running your windows 10 vm with uefi (ovmf)!!!!!This is your current xml: <os> <type arch='x86_64' machine='pc-i440fx-5.1'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/5f4b97e6-d87e-88ca-d98e-bab82428566e_VARS-pure-efi.fd</nvram> </os> 43 minutes ago, wchusky said: I read here that Windows VM does not work in q35? You read it wrong It works. If you want to switch to q35 you can do it from the gui; as far as multifunction device you need to switch to advance view (top right) in the vm settings (gui) and the full xml will show. Edited November 5, 2021 by ghost82 Quote Link to comment
wchusky Posted November 5, 2021 Author Share Posted November 5, 2021 I switched WIN 10 to q35 5.1, and did all the above. I also switched bios on the motherboard to UEFI. It booted up, but still can't do passthrough on the screen that's attached to AMD RX 570. I know the screen works since when I boot up, boot up screen shows up on both monitors (one to Nvidia 1030 and other to AMD RX570). Attached is the diagnostic file. At this pointinno-unraid-01-diagnostics-20211105-1614.zip, I wonder if I should just reinstall and start over? Quote Link to comment
ghost82 Posted November 6, 2021 Share Posted November 6, 2021 9 hours ago, wchusky said: but still can't do passthrough on the screen that's attached to AMD RX 570. You didn't apply multifunction: from this: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> To this: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <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='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> </hostdev> Make sure gpu-MSI-RX570.rom is dumped from your gpu. No errors in the logs, everything seems fine, if it still doesn't work, I suspect an issue with the mb bios, check if there are updates: note that if you update the bios all the bios settings will be resetted. Quote Link to comment
wchusky Posted November 6, 2021 Author Share Posted November 6, 2021 (edited) 6 hours ago, ghost82 said: You didn't apply multifunction: from this: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> To this: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/isos/vbios/gpu-MSI-RX570.rom'/> <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='0x82' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> </hostdev> Make sure gpu-MSI-RX570.rom is dumped from your gpu. No errors in the logs, everything seems fine, if it still doesn't work, I suspect an issue with the mb bios, check if there are updates: note that if you update the bios all the bios settings will be resetted. Silly question: but how do you add multifunctional settings into this? How do I edit this in settings? And yes, gpu-MSI-RX570.rom was dumped from the GPU using the space invader user script method. The VM is hanging now when I try to dump vbios for Nvidia GT 1030 though. Need to go back and figure out why I can't dump GT 1030 vbios still. Edited November 6, 2021 by wchusky Quote Link to comment
ghost82 Posted November 6, 2021 Share Posted November 6, 2021 Switch to xml view mode (advance mode) top right in the vm settings. Quote Link to comment
wchusky Posted November 18, 2021 Author Share Posted November 18, 2021 Update on this: I could not get RX 570 to work, so I swapped out the GPU with a really old Radeon HD 6850 GPU with 1 GB of RAM. So, I got 2 GPUs in the system now: 1. NVIDIA GT 1030 GPU with 2 GB 2. Radeon HD 6850 GPU with 1 GB I did the Spaceinvader GPU bios dump to dump both vBIOS. The script did complain the fie is too small, but it accepted it. It is possible because these are just older GPUs with limited capabilities. For some wild reason, I was able to pass through my WIN10 VM on HD 6850, so that's a huge accomplishment. For whatever reason, the system decided NVIDIA GT 1030 is the primary GPU for the system and UNRAID boots off that GPU. So, I decided to use the HD 6850 for passthrough even though I wanted to use the NVIDIA since it has 2 GB vs 1 GB on HD 6850. Is there a way to force the system to use certain GPU as the primary GPU? I looked around the SuperMicro X9DAI bios, but didn't find any settings. Is it due to which slot the GPU in inserted into the motherboard? So I was playing around the Windows 10 etc. I did a Windows update, and rebooted. I did try to install the Radeon GPU software from AMD, which could be the culprit of the reason for what's next to come. I then tried to reboot the VM since Windows 10 always ask you to reboot after updates, and it did not come back. My precious passthrough is dead again. I did all the multifunction etc like above, and nothing worked. So I am back to square one. I even tried to create new UBUNTU VM and new WIN 10 VM, and none will do pass through. I also re-downloaded the vBIOS, and it is still not working. At this point, I am seriously thinking about just letting the server be a headless server. I really want to get this passthrough working, so it is frustrating that it just won't work. Attached is the latest Diagnostic file. Really hope someone can give me some advice on how to get this working. It would be huge for this system. inno-unraid-01-diagnostics-20211118-0845.zip Quote Link to comment
shawnngtq Posted January 17, 2022 Share Posted January 17, 2022 (edited) @wchusky, any solution? I face the same thing, I am using AMD 5900x with 3060Ti Edited January 17, 2022 by shawnngtq Quote Link to comment
Recommended Posts
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.