Based on this article that I wrote, I have a setup with two display adapters that I use GPU Passthrough with Looking Glass solution to passthrough my discrete GPU adapter to play games on Windows using QEMU-KVM while retaining the display graphics capabilities on the Fedora host far as the Windows guest VM is not running, so let’s state as breaf what I do (more details in the article):
Starting Windows VM:
- Unbind the GPU from amdgpu driver
- Set the Resizable BAR (ReBAR) as follows:
a. REBAR 0 to 16GB (Already 16GB on Linux)
b. REBAR 2 to 8MB (It is 256MB on Linux host) - Attach
vfio-pci
driver to the display adapter - Start Windows VM with GPU attached.
Stopping Windows VM
- Unbind the
vfio-pci
driver from the display adapter. - Set back the ReBAR to 16GB for REBAR 0 and 256MB to REBAR 2.
- Virtually remove the display adapter from the bus
echo 1 > /sys/bus/pci/devices/0000:03:00.0/remove
- Rescan the bus for new devices, resetting the GPU and automatically binding it to the amd_gpu driver.
I have to do it that way because my onboard graphics also use the amd_gpu kernel driver, so I cannot unload the AMD driver while reattaching the display driver.
What happens is that until Kernel 6.11, everything was working as usual, but after upgrading the kernel to 6.12 (effectively 6.12.5-200.fc41.x86_64) the ReBAR has stopped working on Windows Guest. When I try to start the Windows Guest as usual, I get the infamous error 43
and the display adapter does not work until I restart the machine entirely.
So far, What am I doing to get around the issue?
Option 1:
. Disabling the ReBAR support entirely on BIOS.
Option 2:
. Setting the REBAR 0 to 256 MB and REBAR 2 to 256 MB while starting the VM, disabling the Resizeable BAR support while running the Windows host.
Is anyone having the same issue with kernel 6.12?