From: Julian Pidancet julian.pidancet@citrix.com
Some Intel VGA option ROMs require some 155f hooks implemented in the BIOS.
Signed-off-by: Julian Pidancet julian.pidancet@citrix.com --- src/vgahooks.c | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/src/vgahooks.c b/src/vgahooks.c index a8f667c..ca12e31 100644 --- a/src/vgahooks.c +++ b/src/vgahooks.c @@ -11,6 +11,7 @@ #include "pci_ids.h" // PCI_VENDOR_ID_VIA #include "util.h" // handle_155f #include "config.h" // CONFIG_* +#include "xen.h" // usingXen
#define VH_VIA 1 #define VH_INTEL 2 @@ -228,6 +229,15 @@ getac_setup(struct pci_device *pci) { }
+static void +xen_vgapt_setup(struct pci_device *pci) +{ + if (pci->vendor == 0x8086 && pci->class == 0x300) { + VGAHookHandlerType = VH_INTEL; + IntelDisplayType = BOOT_DISPLAY_DEFAULT; + IntelDisplayId = 3; + } +}
/**************************************************************** * Entry and setup @@ -254,7 +264,15 @@ handle_155f(struct bregs *regs) void vgahook_setup(struct pci_device *pci) { - if (!CONFIG_VGAHOOKS || !CBvendor || !CBpart) + if (!CONFIG_VGAHOOKS) + return; + + if (usingXen()) { + xen_vgapt_setup(pci); + return; + } + + if (!CBvendor || !CBpart) return;
if (strcmp(CBvendor, "KONTRON") == 0 && strcmp(CBpart, "986LCD-M") == 0)