[PATCH v4 0/6] xen/igd: fixes for Intel IGD passthrough
Chuck Zmudzinski <[email protected]> Fri, 31 Jul 2026 20:17:24 -0400
| Newsgroups | gmane.comp.emulators.xen.devel,gmane.comp.emulators.qemu,gmane.comp.emulators.qemu.stable |
|---|---|
| Message-ID | <[email protected]> |
Please note that Patch 5 of this series also requires a patch to hvmloader of Xen for the new support to take effect that is available here: https://lore.kernel.org/qemu-devel/[email protected]/ This patch series aims to fix long-standing bugs that need to be backported to all currently supported stable versions in order to support passthrough of both older and modern Intel IGD devices to Xen HVM guests. Note that previous versions of this patch series only fixed the bugs affecting older devices and the patches needed for newer devices were not included, so this is the first version of this patch series that is suitable for use and testing with newer devices that, for example, are designed by the manufacturer to only work with UEFI firmware. These patches fix several bugs that cause problems ranging from a dark screen in the guest until the guest OS graphics are loaded to an assert failure or other failures in newer devices that in many cases prevent guest creation from succeeding or cause other problems such as code 43 errors in Windows guests. To test the the third patch and verify it fixes the bug of no video output from Seabios, it is necessary to test with older Intel IGD devices that have support for legacy VGA bios (Seabios) because the newer devices, as far as I can tell, are not compatible with legacy VGA BIOS. The first three patches have been tested using Xen 4.21 and Seabios 1.17 on Fedora 44 using an older Intel NUC7i5BNK with an i5-7260U processor and have been verified to fix the bugs described in the individual patches. This device is compatible with legacy VGA BIOS and Seabios. With the fourth through sixth patches applied, it is possible to use/test with newer devices since, with those patches applied, the bugs that prevent guest creation from succeeding with many newer devices are fixed. All six patches have been tested on both the older Intel NUC7i5BNK mentioned above and a newer 14th Gen i5-14500 Raptor Lake processor in an ASRock board that, as far as I can tell, is not compatible with legacy VGA BIOS and Seabios, which means that, although one can successfully create a guest with Seabios for the guest with the newer device, there will be no graphics output from the guest until the guest OS loads the graphics drivers when using the newer device with Seabios. The sixth patch is provided for use with newer devices that require an EFI graphics output protocol (GOP) driver for graphics output during early boot. For more details, read the commit message and the accompanying notes in Patch 6. Two hints to help configuring Xen HVM guests with Intel IGD passthrough: - Increase the value of mmio_hole from its default value of 256 to at least 512 using the mmio_hole setting in the guest config. The value of 512 works well when the stolen memory is 256 MiB. If more stolen memory is used, the mmio_hole may need to be increased even more. - If there are rdm conflicts, lower the rdm_mem_boundary setting in the guest config from its default value of 2048 to a value at which all rdm conflicts are resolved. I have discovered that lowering it in 128 MiB increments works well. With the older device I needed to lower it to 1792 and with the newer one I needed to lower it to 1664. See the description of the rdm_mem_boundary setting in the xl.cfg(5) man page for more details. Changes in v2: - close open files before setting errp - improvements to readability and style - small corrections to the commit messages - add stable to Cc list Changes in v3: - whitespace fix in first patch - fix Cc address for qemu-stable Changes in v4: - add three patches to provide support for newer Intel IGD devices - edit the commit messages for better consistency of style - use 12 digits instead of 7 when referencing commit hashes - re-write xen_pt_get_host_pch_info() in patch 1 using the functions declared in xen-host-pci-device.h - handle errors in patch 1 that in previous versions of that patch were not handled - add a Fixes tag to the third patch - add two hints in the cover letter to help those who are trying to configure Xen HVM guests with an Intel IGD passed through Chuck Zmudzinski (6): xen/igd: get PCH info from host sysfs xen/igd: don't register rom bar twice xen/igd: fixup device id before registering rom xen/igd: enable guest creation when ROM read fails xen/igd: implement support for extended VBT xen/igd: use custom option ROM if provided hw/xen/xen_pt.c | 13 +- hw/xen/xen_pt_graphics.c | 280 +++++++++++++++++++++++++++++++++++++-- hw/xen/xen_pt_load_rom.c | 64 ++++++--- include/hw/xen/xen_igd.h | 3 +- 4 files changed, 325 insertions(+), 35 deletions(-) -- 2.52.0