[SeaBIOS] [PATCH 2/3] vgahooks: Register 155f vga hooks for Xen Intel passthrough devices

julian.pidancet at gmail.com julian.pidancet at gmail.com
Mon Jan 30 14:55:55 CET 2012


From: Julian Pidancet <julian.pidancet at citrix.com>

Some Intel VGA option ROMs require some 155f hooks implemented in the
BIOS.

Signed-off-by: Julian Pidancet <julian.pidancet at 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)
-- 
Julian Pidancet




More information about the SeaBIOS mailing list