VMs seem to have no GPU at all using amdgpu

I have a Thinkpad T495 with an AMD Vega 8 GPU. I thought this was great as AMD is awesome and all, but it seems to not be the case at all?

My setup:

  • Fedora Kinoite
  • Wayland
  • layered RPMs: virt-manager qemu qemu-kvm virglrenderer

But even after layering VirGL, nothing changed. The VMs are extremely slow, and I know even on my 2012 Thinkpad integrated Intel Graphics they were way faster.

Like 2 FPS slow, it seems to not use the GPU at all, I can see the pages refreshing line per line.

Do you know if there is anything I can do to fix this? VMs dont seem to use my GPU at all, not shared, nothing. They all run Linux, Fedora Silverblue, Fedora Rawhide, KDE Neon, Artix, NixOS, Arch,…

Do I need to change some virt-manager setting to enable shared GPU or VirGL or something?

Help very much appreciated! This is such a dealbreaker currently

sudo virt-host-validate

Thanks for the quick response!

  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : PASS
  QEMU: Checking if IOMMU is enabled by kernel                               : PASS
  QEMU: Checking for secure guest support                                    : WARN (AMD Secure Encrypted Virtualization appears to be disabled in firmware.)
   LXC: Checking for Linux >= 2.6.26                                         : PASS
   LXC: Checking for namespace ipc                                           : PASS
   LXC: Checking for namespace mnt                                           : PASS
   LXC: Checking for namespace pid                                           : PASS
   LXC: Checking for namespace uts                                           : PASS
   LXC: Checking for namespace net                                           : PASS
   LXC: Checking for namespace user                                          : PASS
   LXC: Checking for cgroup 'cpu' controller support                         : PASS
   LXC: Checking for cgroup 'cpuacct' controller support                     : PASS
   LXC: Checking for cgroup 'cpuset' controller support                      : PASS
   LXC: Checking for cgroup 'memory' controller support                      : PASS
   LXC: Checking for cgroup 'devices' controller support                     : PASS
   LXC: Checking for cgroup 'freezer' controller support                     : FAIL (Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system)
   LXC: Checking for cgroup 'blkio' controller support                       : PASS
   LXC: Checking if device /sys/fs/fuse/connections exists                   : PASS

I did not disable anything in that **** Lenovo firmware. Could this be a vendor lock?

Using a VM with qemu the options for video are available on the config screen and the default is virtio with others available. The display is by default spice but can be vnc. While some video modes are adjustable, none are the same as having a dedicated GPU for use.

The only way to get full performance of a GPU is to have a spare GPU that can be passed through into the VM so the os in the VM may be able to use the hardware acceleration for graphics. A GPU that is passed into the VM is not available for use by the host.

Without using a dedicated GPU for the VM it becomes necessary for the available CPUs to manage the graphics rendering which is extremely taxing on available processor time. This results in the slowdown you mention and thus makes most VMs unsuitable for tasks that are highly graphics intensive (games, video and photography work, 3D graphics design, etc.).

It works fine for me on Intel video using the default Linux guest config.
Your output looks normal.
I suspect the cause of the issue is video driver on the host side.
But it can also be related to specific guest side tasks with high GPU load or requirements for certain rendering features.

Specified App:
amd-gpu-firmware-20230804-153.fc38.noarch
mesa-filesystem-23.1.7-1.fc38.x86_64
mesa-libxatracker-23.1.7-1.fc38.x86_64
mesa-va-drivers-23.1.7-1.fc38.x86_64
mesa-libgbm-23.1.7-1.fc38.x86_64
mesa-libEGL-23.1.7-1.fc38.x86_64
mesa-libglapi-23.1.7-1.fc38.x86_64
mesa-dri-drivers-23.1.7-1.fc38.x86_64
mesa-libGL-23.1.7-1.fc38.x86_64
mesa-vulkan-drivers-23.1.7-1.fc38.x86_64


--- Software ---
OS: Fedora Linux 38.20230914.0 (Kinoite)
KDE Plasma: 5.27.7
KDE Frameworks: 5.109.0
Qt: 5.15.10
Kernel: 6.4.15-200.fc38.x86_64
Compositor: wayland

--- Hardware ---
CPU: AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
RAM: 13.5 GB
GPU: AMD Radeon Vega 8 Graphics
Video memory: 2048MB
Audio: Pipewire

hmm yes thats what I know too. But its not intensive stuff like videos or even games, NOTHING works, not even refreshing normal displays! Not even scrolling in a browser works normally, this is not normal, right?

Many factors are involved.
How many CPU cores? (host & VM)
How much RAM? (host & VM)
What is the host doing?
What is the VM trying to do?
How many VMs are active?
How much drive space?

I never set up even a simple mostly idle VM with less than 2 cores and 4 GB ram on a 40 GB virtual drive. Even then it sometimes bogs down with relatively nothing running, though mostly it is as good as my host.

Another factor may be the bios. Is the bios set up to support virtualization? If not then it should be.