badai.xyz
Linux 6.x EFI framebuffer crash during binding VFIO-PCI
After the release 6.0 many PCI passthrough setups began having issues with having no video output on TTY or a frozen screen after boot loader like this:
:: running early hook [udev]
Starting version 251.6-1-arch
This issue is caused by this minor commit. Hence one solution and my go to solution currently for fixing the issue is to build a custom kernel and revert the commit.
Several other methods exist for solving this issue, but as of writing this article with dual NVIDIA cards custom kernel appears to be the only solution if you don’t want to login blind or use 5.x kernel.
One method is to load the driver before VFIO-PCI binding. Example with i915 in mkinitcpio.conf:
MODULES=(i915 vfio_pci vfio vfio_iommu_type1 vfio_virqfd)
Some users have had success with the “Relaxed RMRR Mapping” patch. This method also has the same downside as the first option as it requires building a custom kernel.
Other discussion
- https://bbs.archlinux.org/viewtopic.php?id=280436
- https://bbs.archlinux.org/viewtopic.php?pid=2063423#p2063423
- https://forum.manjaro.org/t/kernel-6-0-hangs-at-boot-running-early-hooks-udev/124695/2
- https://forum.level1techs.com/t/linux-kernel-6-seems-to-be-incompatible-with-the-vfio-pci-module-needed-for-pci-passthrough/190039
- https://www.heiko-sieger.info/vfio-grub-vfio-pci-ids-doesnt-work-with-kernel-6-try-driver-verride-feature/