May 2, 20224 yr Hello, I apologize that my first post on these forums is for a support issue. I really like Unraid - its minor inconveniences are far outweighed by its positives. The virtualization and Docker features have revolutionized my computing experience and allowed me to get more out of one system. Now on to my issue described in the title... I have passed through an MSI 960 GTX to a VM. This GPU has multiple outputs. I am using a Display Port output and HDMI simultaneously, but I cannot get video output at the TianoCore VM boot screen if I have the Display Port cable connected. The system reaches the UEFI interface, there's just no video. I sometimes require access to the UEFI interface, so I prefer not to set any automated "boot to OS" UEFI configuration/firmware. However, if I disconnect the Display Port cable, and launch the VM, (or type "reset" at the UEFI interface), the VM will restart and video outputs to the HDMI screen just fine. I have no problems in Windows, both screens work simultaneously. So, this is mostly just a moderately annoying problem - I don't want to have to reach behind my monitor to unplug the Display Port cable each time I reboot the OS (Windows). I have tried each of the 3 Display Port outputs on the GPU and get the same result. Also interestingly, my GPU has an HDMI output, but when I use a passive Display Port to HDMI adapter, (DP > HDMI Adapter > HDMI Cable> Monitor), I get video output at the UEFI screen. I'm less convinced this is a hardware/slot issue since it works in Windows. Plus, due to my complex IOMMU configuration (2 GPUs, multiple PCIe cards), I'm not about to try re-seating the card in a different PCIe slot since re-configuring the Unraid takes 30 minutes per change. The monitor is a BenQ D43-720 4k display with the ability to view multiple inputs simultaneously. (1x 4k, 2x top/bottom or left/right, or 4x 1080p) 1x 4K 60 Hz Display Port input - Connected with 2x 2 meter Display Port cables and a passive coupler/extender 2x 4K 60 Hz HDMI Inputs 1x 4K USB-C Input 2x 1080P HDMI inputs - The HDMI output is connected to this screen through a 5 meter, low quality cable (will not pass 4K HDMI 60 Hz). I performed some searches prior to posting, but could not come up with any relevant results. I also tried Googling, but their changes to their algorithm to prioritize SEO, returns fewer and fewer good results. Unraid Forums search for "display port" Hardware Configuration Intel 10980XE X299 AORUS Gaming 3 Pro Nvidia GeForce GTX 960 Nvidia 1030 - passed through to another VM, no problem with 4K output to an HDMI input. UEFI displays fine. Passed Through Devices to this VM: MSI - Nvidia GeForce GTX 960 (GM206), 2048 MB Bios 84.06.0D.00.1D Link to Techpowerup card information I dumped the bios myself, removed the header, and specified it as the “Graphics ROM BIOS”. USB controller: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/980PRO Unraid Software Configuration: I have installed the "VFIO-PCI CFG" plug-in to pass through IOMMU groups. VM Configuration Machine: i440fx-5.1 BIOS: OVMF Hyper-V: Yes USB Controller: 2.0 (EHC) OS Install ISO: Windows.iso Here is the obligatory XML of my configuration. <?xml version='1.0' encoding='UTF-8'?> <domain type='kvm' id='10'> <name>Windows 10</name> <uuid>Redacted</uuid> <description>MAIN</description> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>33030144</memory> <currentMemory unit='KiB'>33030144</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>16</vcpu> <cputune> <vcpupin vcpu='0' cpuset='2'/> <vcpupin vcpu='1' cpuset='20'/> <vcpupin vcpu='2' cpuset='4'/> <vcpupin vcpu='3' cpuset='22'/> <vcpupin vcpu='4' cpuset='6'/> <vcpupin vcpu='5' cpuset='24'/> <vcpupin vcpu='6' cpuset='8'/> <vcpupin vcpu='7' cpuset='26'/> <vcpupin vcpu='8' cpuset='10'/> <vcpupin vcpu='9' cpuset='28'/> <vcpupin vcpu='10' cpuset='12'/> <vcpupin vcpu='11' cpuset='30'/> <vcpupin vcpu='12' cpuset='14'/> <vcpupin vcpu='13' cpuset='32'/> <vcpupin vcpu='14' cpuset='16'/> <vcpupin vcpu='15' cpuset='34'/> </cputune> <resource> <partition>/machine</partition> </resource> <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/REDACTED_VARS-pure-efi.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.iso' index='2'/> <backingStore/> <target dev='hda' bus='ide'/> <readonly/> <boot order='2'/> <alias name='ide0-0-0'/> <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.190-1.iso' index='1'/> <backingStore/> <target dev='hdb' bus='ide'/> <readonly/> <alias name='ide0-0-1'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </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='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='ide' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:be:10:cf'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio-net'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-10-Windows 10/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <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='1'/> </input> <input type='mouse' bus='ps2'> <alias name='input1'/> </input> <input type='keyboard' bus='ps2'> <alias name='input2'/> </input> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <rom file='/mnt/cache/isos/GM206_no_header.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <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='0x04' slot='0x00' function='0x0'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x18' slot='0x00' function='0x0'/> </source> <alias name='hostdev3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </hostdev> <memballoon model='none'/> </devices> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+0:+100</label> <imagelabel>+0:+100</imagelabel> </seclabel> </domain> Edited May 2, 20224 yr by byb Fix Hyperlink to TechPowerUp
May 3, 20224 yr Hi! Not sure I understand well, so first a question: the issue is that when multiple gpu ports are connected, the "bios" output goes to a monitor instead of another? If this is the case, it's not an issue related to virtual machines. Gpus have "layouts" where a predefined port is defined for bios (uefi/ovmf) output. On windows, somebody seems to have luck by defining the primary display (that you want for uefi/ovmf video output) within the nvidia control panel software, it should be located in "Set Up Multiple Displays'' --> right-click on the monitor you want to make primary and make it primary. However....if I understood well, you have only a single monitor with capabilities to take multiple outputs? Never seen one of these, but if it is detected in the nvidia control panel as a single monitor this can be an issue.. On 5/2/2022 at 7:55 AM, byb said: but when I use a passive Display Port to HDMI adapter, (DP > HDMI Adapter > HDMI Cable> Monitor), I get video output at the UEFI screen If I understood well, one of the display ports should be the primary port, but you get no video output, unless you use a dp/hdmi adapter; without the hdmi adapter, try to check the monitor preferences (in the monitor) and see if it changes if you change display port version (disable hdr if it's there and try all display port versions, especially v. 1.2). Please fix also the gpu multifunction, change from: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <rom file='/mnt/cache/isos/GM206_no_header.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> To: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <rom file='/mnt/cache/isos/GM206_no_header.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x65' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/> </hostdev> Edited May 3, 20224 yr by ghost82
May 4, 20224 yr Author Sorry, I was not clear, let try to use a timeline to explain what's happening... | Time | State/Function | Display Port - Plugged in | HDMI Port - Plugged in | | Begin | Unraid fresh boot | Unraid Video Console (Arch Login) - mirrored | Unraid Video Console (Arch Login) - mirrored| | +00:50 | Launch VM from WebUI | No video | No video | At this point, the TianCore KVM engine starts running. Now, this is what is happening while there is no video (Only if HDMI Port is plugged in, or if I use my other VM, which only has HDMI): The "boot from CD/DVD... press space" line of text appears, and then the VM continues the UEFI process, which lists all the attached drives/partitions to the system. A five second countdown begins and then the UEFI console. I type "exit", then navigate the menus to boot from the partition on the passed through NVME drive. As so as I get into Windows, the display is recognized. So this problem is not a Windows problem. It's a UEFI/TianCore(KVM) issue. I will try making the function adjustment to hostdev1 and I will also try configuring the monitor to use Display Port Version 1.2 to see if that works; that opens another can of worms though.
May 4, 20224 yr Author Short update: changing to Display Port 1.2 did not result in any change. Neither did modifying the xml configuration.
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.