reggienaz Posted May 11, 2022 Share Posted May 11, 2022 I 've had stable and working VMs for a while now. Recently, I passed through a GPU to my headless vm for machine learning acceleration in Windows on Python Things were working fine with VNC used as primary graphics output (headless vm) and the 3090ti used as a secondary graphics card with the NVIDIA sound card attached as well. After a server reboot(and first time booting it with a display plugged into the graphics card HDMI out) I continuously get the error "Guest has not initialized the display(yet)". For now, the only way to get the vm to boot and show anything other than that error message over VNC is to remove the 2nd graphics card and just run vnc. I've tried disabling docker and vm manager. Multiple reboots (with docker and vm's disabled) and so far i can tell it happens no matter what vm i try to attach the graphics card to. I have the NVIDIA drivers installed in unraid as well as on the Windows VM when it is running. There is currently nothing plugged into the HDMI or any other display output on the motherboard or graphics card. infinity-diagnostics-20220511-1332.zip Quote Link to comment
reggienaz Posted May 11, 2022 Author Share Posted May 11, 2022 Also, tried with a display attached to the graphics card out and still no luck. The message only shows on the VNC window and not on the display attached to the graphics card being passed through in this instance. Quote Link to comment
ghost82 Posted May 11, 2022 Share Posted May 11, 2022 (edited) Which vm?you have several. Anyway...make sure the qxl video device is attached always at bus 0x00 otherwise you will get the guest has not initialized the display yet. If it's not at bus 0x00 set it manually and find the first slot available to not have a dublicate address error when you run the vm. Always set the dgpu as a multifunction device. Install a remote desktop inside the vm so that you can see if the vm effectively boots or if it hangs before for other reasons. Edited May 11, 2022 by ghost82 2 Quote Link to comment
reggienaz Posted May 11, 2022 Author Share Posted May 11, 2022 The specific vm is the one called "Dev1". Im pretty sure things look correct on my end. <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='writeback'/> <source file='/mnt/user/domains/DEV1/vdisk1.img' index='3'/> <backingStore/> <target dev='hdc' bus='virtio'/> <boot order='1'/> <alias name='virtio-disk2'/> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/user/isos/Windows/Window11_Insiders.iso' index='2'/> <backingStore/> <target dev='hda' bus='sata'/> <readonly/> <boot order='2'/> <alias name='sata0-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='sata'/> <readonly/> <alias name='sata0-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='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='0x10'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x11'/> <alias name='pci.2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0x12'/> <alias name='pci.3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0x13'/> <alias name='pci.4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0x14'/> <alias name='pci.5'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <interface type='bridge'> <mac address='52:54:00:b9:43:05'/> <source bridge='br0'/> <target dev='vnet1'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 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-5-DEV1/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='1'/> </input> <input type='mouse' bus='ps2'> <alias name='input1'/> </input> <input type='keyboard' bus='ps2'> <alias name='input2'/> </input> <graphics type='vnc' port='5901' autoport='yes' websocket='5701' listen='0.0.0.0' keymap='en-us'> <listen type='address' address='0.0.0.0'/> </graphics> <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='0x08' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <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='0x08' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> <memballoon model='none'/> </devices> Does that help? I've tried re-configuring things so far outside the XML view to avoid accidentally breaking something. Quote Link to comment
reggienaz Posted May 11, 2022 Author Share Posted May 11, 2022 34 minutes ago, ghost82 said: Which vm?you have several. Anyway...make sure the qxl video device is attached always at bus 0x00 otherwise you will get the guest has not initialized the display yet. If it's not at bus 0x00 set it manually and find the first slot available to not have a dublicate address error when you run the vm. Always set the dgpu as a multifunction device. Install a remote desktop inside the vm so that you can see if the vm effectively boots or if it hangs before for other reasons. It's failing to boot and hanging before. Every cpu core assigned is at 0% as long as the gpu is being passed through. Quote Link to comment
reggienaz Posted May 11, 2022 Author Share Posted May 11, 2022 Havent been able to figure thois out so far. What i do know is no matter what if i create a vm and use the graphics card i get the same error and the vm never starts. I just get a message in vnc saying guest has not initialized the display yet. Quote Link to comment
reggienaz Posted May 11, 2022 Author Share Posted May 11, 2022 SOLVED!! Make sure to disable adressable-bar in actual bios. Above-4G decoding is still enabled but changing that setting in bios fixed everything. 1 Quote Link to comment
ghost82 Posted May 12, 2022 Share Posted May 12, 2022 Nice, for better compatibility with the drivers I suggest to change the target as multifunction, replace: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x08' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <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='0x08' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> With: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x08' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <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='0x08' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> </hostdev> 1 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.