GPU Passthrough shows Black Screen

Solution: After logging in activate sleep mode on the host computer for 5-10 seconds, removing any residual framebuffers on the guest GPU.

I came across this solution by accident from running SpaceInvaderOne’s vBIOS dump script. My original plan was to dump the guest GPU’s vBIOS while connected to the primary slot. The script failed to dump the vBIOS, but I noticed the GPU wasn’t sending any signal to my monitor after going into sleep mode. I then decided to run the Ubuntu VM thinking the vfio-pci driver grabbed the card and Voila! The VM boots on the primary slot.

I’m still unsure what is sending framebuffers to the GPU. I am aware that the primary slot is connected to the CPU, whereas the other slots are powered by the chipset. It may have to do with how VGA Arbiter initializes CPU bound slots. I know that Xorg is not involved since the Intel iGPU is set as the primary GPU, thus blacklisting any other VGA devices. The kernel parameters "video=efifb:off" "video=vesafb:off" "quiet" are also enabled.

This remains a mystery, but at least there is an easy solution. I do wonder about the many forum posts across the internet with users having issues with GPU passthrough from the primary slot. Had I not attempted to dump my vBIOS I would’ve never guessed to flush framebuffers via sleep mode. If anyone has any insight into this phenomenon I’d love to read it.

1 Like