After Motherboard exchange no Video output from Guest GPU

Hey guys,
for me, GPU passthrough worked just fine with the 5700xt, but since I swapped my MSI b450 Tomahawk for a MSI b450 Tomahawk MAX, I can’t get any video output through my guest GPU. In Windows 10, I only get the error code 43 and that no AMD driver is installed. I suspect that this is the problem. The guest GPU is recognised normally by the host system.

I mentioned something else about this in the thread.

My system:
OS: Manjaro Linux x86_64
Host: MS-7C02 1.0
Kernel: 5.9.11-3-MANJARO
Uptime: 26 mins
Packages: 2085 (pacman), 3 (snap)
Shell: bash 5.0.18
Resolution: 1920x1080, 1920x1080, 1920x1080
DE: Cinnamon
WM: Mutter (Muffin)
WM Theme: Mint-Y-Dark-Teal (Mint-Y-Dark)
Theme: Mint-Y-Dark-Teal [GTK2/3]
Icons: Papirus-Dark-Maia [GTK2/3]
Terminal: tilix
CPU: AMD Ryzen 5 2600X (12) @ 3.957GHz
GPU: AMD ATI Radeon RX 5600 OEM/5600 XT / 5700/5700 XT
GPU: NVIDIA GeForce RTX 2080 Rev. A
Memory: 4493MiB / 32036MiB

I am super bummed and don’t know what else to try. :frowning:

1 Like

bios issue, make sure iommu is enabled, not just on auto, enable above 4g decoding, enable resizable bar, disable csm

1 Like

Hey @wendell

I already have the bios up to date and IOMMU enabled, but I did not have 4g decoding and resizable bar enabled. I have now done this, but now the VM remains completely black. Windows does not boot. Virtual Manager shows that the VM is running, but there is no signal either via Spice or via the video output.

1 Like

csm?

Oh, if you aren’t getting the kernel errors anymore, you need to update your config to hide the fact it’s a VM.

1 Like

the problem with changing csm to uefi is that i cant boot my OS anymore :frowning:

the BAR 0 errors are gone!

[2.193568] vfio-pci 0000:28:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none
[    2.209520] vfio_pci: add [1002:731f[ffffffff:ffffffff]] class 0x000000/00000000
[    2.226188] vfio_pci: add [1002:ab38[ffffffff:ffffffff]] class 0x000000/00000000
[   49.589203] vfio-pci 0000:28:00.0: enabling device (0000 -> 0003)
[   49.589322] vfio-pci 0000:28:00.0: AMD_NAVI10: version 1.1
[   49.589323] vfio-pci 0000:28:00.0: AMD_NAVI10: performing pre-reset
[   49.589401] vfio-pci 0000:28:00.0: AMD_NAVI10: performing reset
[   49.590122] vfio-pci 0000:28:00.0: AMD_NAVI10: amdgpu_discovery_reg_base_init failed, using legacy method
[   49.590130] vfio-pci 0000:28:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
[   49.590135] vfio-pci 0000:28:00.0: AMD_NAVI10: amdgpu_get_bios failed: -22
[   49.590135] vfio-pci 0000:28:00.0: AMD_NAVI10: failed to reset device
[   49.590136] vfio-pci 0000:28:00.0: AMD_NAVI10: performing post-reset
[   49.590209] vfio-pci 0000:28:00.0: AMD_NAVI10: reset result = 0
[   49.590328] vfio-pci 0000:28:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
[   49.590337] vfio-pci 0000:28:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
[   49.590341] vfio-pci 0000:28:00.0: vfio_ecap_init: hiding ecap 0x25@0x400
[   49.590342] vfio-pci 0000:28:00.0: vfio_ecap_init: hiding ecap 0x26@0x410
[   49.590343] vfio-pci 0000:28:00.0: vfio_ecap_init: hiding ecap 0x27@0x440
[   49.669373] vfio-pci 0000:28:00.0: AMD_NAVI10: version 1.1
[   49.669375] vfio-pci 0000:28:00.0: AMD_NAVI10: performing pre-reset
[   49.669455] vfio-pci 0000:28:00.0: AMD_NAVI10: performing reset
[   49.988441] vfio-pci 0000:28:00.0: AMD_NAVI10: bus reset disabled? yes
[   49.988446] vfio-pci 0000:28:00.0: AMD_NAVI10: SMU response reg: 0, sol reg: 0, mp1 intr enabled? no, bl ready? yes
[   49.988449] vfio-pci 0000:28:00.0: AMD_NAVI10: performing post-reset
[   50.002531] vfio-pci 0000:28:00.0: AMD_NAVI10: reset result = 0
[   60.409250] vfio-pci 0000:28:00.0: AMD_NAVI10: version 1.1
[   60.409252] vfio-pci 0000:28:00.0: AMD_NAVI10: performing pre-reset
[   60.409323] vfio-pci 0000:28:00.0: AMD_NAVI10: performing reset
[   60.726753] vfio-pci 0000:28:00.0: AMD_NAVI10: bus reset disabled? yes
[   60.726758] vfio-pci 0000:28:00.0: AMD_NAVI10: SMU response reg: 0, sol reg: 0, mp1 intr enabled? no, bl ready? yes
[   60.726761] vfio-pci 0000:28:00.0: AMD_NAVI10: performing post-reset
[   60.742526] vfio-pci 0000:28:00.0: AMD_NAVI10: reset result = 0

but with my old motherboard csm was no issue

1 Like

well one problem at a time. with bar errors gone, then you may now be just facing the fact you need to hide your hypervisor.

try that?

1 Like

yes, here is my VM XML:

<domain type="kvm">
  <name>win10-2</name>
  <uuid>96538a1c-d332-405f-b27c-64bbcca077f2</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">16777216</memory>
  <currentMemory unit="KiB">16777216</currentMemory>
  <vcpu placement="static">8</vcpu>
  <os>
    <type arch="x86_64" machine="pc-q35-5.0">hvm</type>
    <loader readonly="yes" type="pflash">/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/win10-2_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
      <vendor_id state="on" value="randomid"/>
    </hyperv>
    <kvm>
      <hidden state="on"/>
    </kvm>
    <vmport state="off"/>
  </features>
  <cpu mode="host-model" check="partial">
    <topology sockets="1" dies="1" cores="4" threads="2"/>
  </cpu>
  <clock offset="localtime">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
    <timer name="hypervclock" present="yes"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/var/lib/libvirt/images/win10.qcow2"/>
      <target dev="sda" bus="sata"/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </disk>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/mnt/7057ea32-d9de-43d9-a03f-9db53e768cee/Win10_Games.qcow2"/>
      <target dev="sdb" bus="sata"/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk>
    <controller type="usb" index="0" model="qemu-xhci" ports="15">
      <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
    </controller>
    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" 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="0x10"/>
      <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"/>
      <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"/>
      <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"/>
      <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"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0x15"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
    </controller>
    <controller type="pci" index="7" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="7" port="0x16"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
    </controller>
    <controller type="pci" index="8" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="8" port="0x17"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
    </controller>
    <controller type="pci" index="9" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="9" port="0x18"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="10" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="10" port="0x19"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
    </controller>
    <controller type="pci" index="11" model="pcie-to-pci-bridge">
      <model name="pcie-pci-bridge"/>
      <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <interface type="direct">
      <mac address="52:54:00:18:e3:4d"/>
      <source dev="enp34s0" mode="bridge"/>
      <model type="e1000e"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" 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="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="3"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <graphics type="spice" autoport="yes">
      <listen type="address"/>
      <image compression="off"/>
    </graphics>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
    </sound>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x0b" slot="0x01" function="0x0"/>
    </sound>
    <video>
      <model type="virtio" heads="1" primary="yes"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
    </video>
    <hostdev mode="subsystem" type="usb" managed="yes">
      <source>
        <vendor id="0x046d"/>
        <product id="0xc332"/>
      </source>
      <address type="usb" bus="0" port="1"/>
    </hostdev>
    <hostdev mode="subsystem" type="usb" managed="yes">
      <source>
        <vendor id="0x046d"/>
        <product id="0xc33f"/>
      </source>
      <address type="usb" bus="0" port="2"/>
    </hostdev>
    <hostdev mode="subsystem" type="usb" managed="yes">
      <source>
        <vendor id="0x1532"/>
        <product id="0x0526"/>
      </source>
      <address type="usb" bus="0" port="6"/>
    </hostdev>
    <hostdev mode="subsystem" type="pci" managed="yes">
      <source>
        <address domain="0x0000" bus="0x28" slot="0x00" function="0x0"/>
      </source>
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </hostdev>
    <hostdev mode="subsystem" type="pci" managed="yes">
      <source>
        <address domain="0x0000" bus="0x28" slot="0x00" function="0x1"/>
      </source>
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
    </hostdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="4"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="5"/>
    </redirdev>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </memballoon>
  </devices>
</domain>

i refer to the arch wiki:https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Video_card_driver_virtualisation_detection

1 Like

but do you still get code43 in device manager?

1 Like

the vm start but only with a black screen :frowning:

before i did the change in BIOS i had the spice to look into windows

1 Like

try to ditch pass through device for now, setup rdp, and rdp into it once it comes up to troubleshoot further

1 Like

mhhh so virtual manager shows that the vm is running, but it does not start windows :confused: i cant reach it with rdp or teamviewer :frowning:

i get the same on other VMs. i have a Manjaro VM but there is also black screen only.

1 Like

and thats with the passed-through gpu removed?

try making a new vm, no passthrough, leave spice defaults alone, see if it works. if it does then attach the same block device/file for the hard drive, and see if that still works?

do you get the “tianocore” screen at boot via spice now, or no?

1 Like

both the tomahawk and tomahawk max look to share the same PCB design but they still my have some device ID differences and possibly chipset revisions not labled

I don’t know much about linux or VMs but I do just a little, try doing what wendell said with a new VM, I’m betting that device IDs have changed

1 Like

i tried it with a new VM and without guest gpu windows starts normally, but when i add the GPU spice stays black and windows doesn’t boot. i also don’t see the tiancore. :frowning:

1 Like

Ok so the idea there was to enable rdp so you could rdp in after adding the gpu to troubleshoot… did you do that?

1 Like

if i’m honest, i don’t know exactly how to bridge from my host to the vm. It seems to be quite complicated in the Virt Manager.

I have the following NIC setting and also have an IP from my home network, but I cannot ping the VM. What works was Teamviewer, but when I start the VM with guest GPU Teamviewer can’t reach the VM anymore.

1 Like

Need rdp. Bridge via the gui before adding the gpu?

1 Like

sorry for the stupid question, is there any easy way to bridge from my linux to the Win10 VM? it seems not so easy with virt manager.

i cannot ping the VM, whether with or without gui. the only way to access the VM is via Teamviewer (but only without a guest gpu) or spice.

1 Like

The drop down in the screenshot first option should bridge the vm? At that point it should get a dhcp address in your local network? From there you can rdp in?

1 Like

ah okay, I have found out how to connect bridged!

Apparently the Windows VM won’t boot when the guest GPU is installed. I can’t access it via RDP either.

1 Like