How does one create a Windows (11 25H2) VM with GPU passthrough (in Fedora 42)?

As originally posted at linux.codidact.com/posts/294836: [1]

My Desire

To summarise, I want to create a Windows 11 25H2 Enterprise Insider Preview Canary virtual machine on my Fedora 42 installation. Ideally, via virt-manager (because VirtualBox taints the kernel).

However, I don’t know whether anything needs to be modified to achieve this, what that would be if so, nor how to verify, when achieved, that it is operative (except by playing a game).

To elaborate:

My Environment

My OS (and DE) are, per /etc/os-release:

NAME="Fedora Linux"
VERSION_ID=42
VARIANT="KDE Plasma Desktop Edition"

Effort Undertaken To Achieve This

I have installed virt-manager (per rpmreaper):

L      3.5M virt-manager              5.0.0-2.fc42.noarch
        229K ├─> gtk-vnc2                  1.5.0-3.fc42.x86_64
        133K ├─> libvirt-glib              5.0.0-6.fc42.x86_64
         29K ├─> python3                   3.13.9-1.fc42.x86_64
         20K ├─> python3-gobject           3.50.0-3.fc42.x86_64
        282K ├─> spice-gtk3                0.42-6.fc42.x86_64
        6.2M ├─> virt-manager-common       5.0.0-2.fc42.noarch
        1.0M ├─> vte291                    0.80.4-1.fc42.x86_64
        316K │┌> dconf                     0.40.0-15.fc42.x86_64
 l      305K ├┴> dconf                     0.40.0-15.fc42.i686
       23.1M │┌> gtk3                      3.24.49-2.fc42.x86_64
       24.0M └┴> gtk3                      3.24.49-2.fc42.i686

However, VirtualBox is also available to me.

I err on not bothering to add amd_iommu=on to /etc/default/grub, because IOMMU support appears to be detected without it, as discussion.fedoraproject.org/t/73815/3 explains.

I don’t know what else needs to be done, nor how to verify; the information online is sparse, terse, and inconsistent.

My Rationale

I want GPU passthrough because:

  1. Some applications do not operate without HW acceleration.

  2. I want to play some games that do not operate under Wine, or its Proton superset.

I want it on a VM because:

  1. As superuser.com/a/1865269 explains, I have had it install its EFI on the wrong storage device, causing a reinstallation of another OS to cause it to become inaccessible. This matters on a machine with solely NVMe-based storage.

  2. When I last installed the desired OS, it added its EFI stub to every storage device, and reordered my EFI boot order. It does this after most feature updates.

I merely want to reinstall because:

  1. As reddit.com/r/techsupport/comments/1l1wwsj/comment/nlbi86c cites, Windows Update always somehow becomes inoperative for me, despite me never touching the preinstalled MSIX/AppX packages, or the WU service.

  2. When I last installed the desired OS, it would not exceed a 300 by 600-pixel display resolution, because the Basic Display Adapter failed to load, requiring a reinstallation.

Fedora is my primary OS, so I prioritise it.


  1. linux.codidact.com/posts/294836/history#3 ↩︎

1 Like

It seems quite possible to do so.
I had a win10 VM on f41 some time back and the only difference was I did not use GPU passthru. If you do use GPU passthru you will need 2 different GPUs installed. One for the host and one for the guest to use with passthru.

2 Likes

@computersavvy, I’ve already created that. Luckily, that’s a trivial endeavour.

That’s a real shame. You do appear to be correct:

However, my primary use is for this VM is to simultaneously work on both OSes:

1 Like

Hey Roke,

I went down this same rabbit hole a long while back and came to the same conclusion as the above. One thing to note in case it hasn’t come up, if you have an integrated GPU on your processor and a dedicated GPU attached to your motherboard, you already have two GPUs. I don’t remember the in-and-outs of how, but the idea is that you put the host machine on the integrated GPU and the VM passthrough to use the dedicated GPU.

Your mileage may vary depending on your processor and GPU make/model. Let us know if you get it working, I’ll be curious to hear what you end up doing!

1 Like

@dannflower, thank you. I’ll attempt this approach. Because I’ve a dedicated and internal GPU:

Graphics Processor 1: AMD Radeon RX 5700
Graphics Processor 2: AMD Radeon Graphics

…it’s more feasible than the temporary display server / compositor shenanigans that are required for single-GPU passthrough:

However, my choice of motherboard may be problematic: [1] [2]

Manufacturer: ASRock
Product Name: X670E Taichi

  1. github.com/bryansteiner/gpu-passthrough-tutorial/blob/cb7ea3705f329fbbc1452d28316e8e6c11450ea0/README.md?plain=1#L87-L89 ↩︎

  2. reddit.com/r/VFIO/comments/10orw7g/comment/j6hqp1x ↩︎

Unless you truly need the additional power of the actual physical device (probably needed for gaming) the virtual gpu is very powerful. I suspect passthru would be necessary only if hardware acceleration is needed. If necessary passthru of the dGPU would seem best.

1 Like

Hello, instead of VirtualBox, could you try KVM? https://gemini.google.com/share/2330bcb324b5

Good to know.

I do: I want it in order to be able to debug games that require hardware acceleration to operate (at least, at a usable speed). However, what’s a virtual GPU?

That’s my intention. However, I fear that switching my compositor to the iGPU when the VM initialises, then returning it to the dGPU when the VM deinitialises, might be difficult.


@cviniciusm, I listed virt-manager as part of my environment in /1, and I don’t believe that it supports a VirtualBox backend. Therefore, I’m already bound to QEMU/KVM via libvirt, to my knowledge.


@steppybug, are you suggesting that instinct.docs.amd.com/projects/gpu-operator/en/main/kubevirt/kubevirt.html#prerequisites’s requirement for:

Kubernetes v1.29.0+ with KubeVirt installed.

…might not be required, if the rest of the steps are adhered to on a bare-metal Fedora installation? I am wary, because most low-level configuration isn’t applicable across OSes. To demonstrate, I believe that providing those arguments to the GRUB_CMDLINE_LINUX variable in GRUB2 isn’t required on f42, for I see dmesg output logs about it without that specified, which should indicate IOMMU’s activation.

With qemu/kvm (libvirt) the default GPU for the VM is a virtual gpu since it is not directly connected to the physical gpu.

When using the VMM it shows here

1 Like

@computersavvy, interestingly, mine defaults to QXL (rather than virtio):

Perhaps, the Windows 11 preset is unique. (It certainly is, in that it pleasantly defaulted to UEFI MB FW, which most of virt-manager’s presets do not.) This might be superior: [1]

However, I doubt it, because it appears to prevent at least software-based graphical acceleration (if that exists; it’s how it was described) operate: [2] [3]

That might provide more performance in the meantime, but appears tangential. Considering that I’ve yet to locate even sufficient documentation on this, I fear that this might all be a little too complex for me to accomplish safely. [4] I’ll continue, nevertheless.


  1. serverfault.com/posts/1184326/timeline#comment_1547432 ↩︎

  2. askubuntu.com/revisions/1389829/3 ↩︎

  3. ↩︎
  4. github.com/orgs/quickemu-project/discussions/1757 [5] ↩︎

  5. github.com/quickemu-project/quickemu/issues/1416#issuecomment-3457233862 ↩︎