--- a/tools/firmware/hvmloader/rombios.c	2012-06-18 01:02:20.000000000 +0200
+++ b/tools/firmware/hvmloader/rombios.c	2012-06-18 01:26:41.000000000 +0200
@@ -35,6 +35,7 @@
 
 #define ROM_INCLUDE_ROMBIOS
 #define ROM_INCLUDE_VGABIOS
+#define ROM_INCLUDE_PTVGABIOS
 #define ROM_INCLUDE_ETHERBOOT
 #include "roms.inc"
 
@@ -45,6 +46,7 @@
 
 extern unsigned char dsdt_anycpu[], dsdt_15cpu[];
 extern int dsdt_anycpu_len, dsdt_15cpu_len;
+extern uint8_t gfx_bdf;
 
 static void rombios_setup_e820(void)
 {
@@ -88,8 +90,10 @@ static void rombios_load_roms(void)
         break;
     case VGA_pt:
         printf("Loading VGABIOS of passthroughed gfx ...\n");
-        vgabios_sz = round_option_rom(
-            (*(uint8_t *)(VGABIOS_PHYSICAL_ADDRESS+2)) * 512);
+        memcpy((void *)VGABIOS_PHYSICAL_ADDRESS,
+               vgabios_pt, sizeof(vgabios_pt));
+        *(uint8_t *)(VGABIOS_PHYSICAL_ADDRESS + sizeof(vgabios_pt)) = gfx_bdf;
+        vgabios_sz = round_option_rom(sizeof(vgabios_pt) + 1);
         break;
     default:
         printf("No emulated VGA adaptor ...\n");
