Fix resolution and multi-display support in KVM Linux guest, broken after Fedora system upgrade (F35)

With Fedora Linux running as guest in KVM, upgrading Fedora often breaks display support or something else. This issue is not limited to one computer, it’s happening on multiple clients and it’s happening in different setups, it might be familiar to some who have used virtual machines with graphics support on Linux.

The guest’s screen resolution isn’t automatically adjusted to the virt-manager or virt-viewer window anymore. Also, after upgrading, it often starts with a resolution much smaller than it was set to before the upgrade. That can be really frustrating when your program windows don’t fit on the screen anymore, just because you’ve upgraded your system.

Example: Two Fedora guests, both have been upgraded to Fedora 35 (using the gnome-software GUI but running Mate Desktop), qemu-guest-agent and spice-vdagent installed. One of them reports “Dependency failed for QEMU Guest Agent” when calling “systemctl status qemu-guest-agent.service”. On the other Fedora guest, that service is running. Interestingly, copy&paste from the VM to the host (wherever virt-manager is running) works most of the time, at least when copying plain text.

Both vms have Display Type set to Spice server and Video Model set to Virtio. Note that they used to be set to QXL but that had to be changed about a year ago due to a new bug that causes Xorg to crash in the vm randomly, killing the desktop session. That’s one example why some users don’t want to upgrade their system: One of the vms used to work for years and was regularly upgraded to the latest Fedora release until one upgrade introduced random crashes. It took weeks to figure out that changing the video driver to Virtio helps prevent the crashes. What’s a user supposed to do now? Is anyone working on this? This video driver is extremely slow.

Another issue is multi-display support: Say, you have 3 monitors connected to your workstation that’s running virt-manager. The Fedora guest only sees one of them. This page of the official documentation suggests that you could use the “remote-viewer” client:

# remote-viewer spice://testguest:5900

Seems like the example command is a bit misleading because you need to connect to the host, not to the guest. So instead of testguest, you’d have to use the name or ip of the virtualization host; if the host also happens to be the workstation where you’d otherwise use virt-manager, the command would be: remote-viewer spice://localhost:5900
This client program has a menu where you can select which display(s) to attach to the vm, but it only lists “Display 1”, even though there are multiple monitors connected to the workstation.
Does the documentation mention multi-display support somewhere else?

Any hints or links to documentation or bug reports would be appreciated.

As a side-note, KVM is sometimes recommended over VirtualBox because it runs natively, so you’d expect it wouldn’t break after upgrades like VirtualBox does (kernel module needs to be rebuilt every time which sometimes fails, other times the automatic build system doesn’t even attempt to rebuild the module, the error message leads in the wrong direction and a manual force build is required). It would be great if KVM, being a native Linux product, would not have issues as well after every other upgrade. I’ve seen a similar setup where the user has simply stopped installing updates to not break anything.