]> xenbits.xensource.com Git - xen.git/commitdiff
hvmloader: Allocate 3 pages for Intel GPU OpRegion passthrough.
authorKeir Fraser <keir@xen.org>
Thu, 10 Jan 2013 17:26:24 +0000 (17:26 +0000)
committerKeir Fraser <keir@xen.org>
Thu, 10 Jan 2013 17:26:24 +0000 (17:26 +0000)
The 8kB region may not be page aligned, hence requiring 3 pages to
be mapped through.

Signed-off-by: Keir Fraser <keir@xen.org>
tools/firmware/hvmloader/config.h
tools/firmware/hvmloader/e820.c
tools/firmware/hvmloader/pci.c

index 3a4e145c6e212d7bf6cbf9e5a01233474adfa574..7f8a90f993d6461b0cd7575abf01309ba4d0bf4d 100644 (file)
@@ -5,7 +5,9 @@
 
 enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
 extern enum virtual_vga virtual_vga;
+
 extern unsigned long igd_opregion_pgbase;
+#define IGD_OPREGION_PAGES 3
 
 struct bios_config {
     const char *name;
index 0fc0b1c30613ceb99a7a5c1baa8525a509d03158..0a46b80e8bd2b3585838f80cb85d66abda8fe3c7 100644 (file)
@@ -142,11 +142,11 @@ int build_e820_table(struct e820entry *e820,
         nr++;
 
         e820[nr].addr = igd_opregion_base;
-        e820[nr].size = 2 * PAGE_SIZE;
+        e820[nr].size = IGD_OPREGION_PAGES * PAGE_SIZE;
         e820[nr].type = E820_NVS;
         nr++;
 
-        e820[nr].addr = igd_opregion_base + 2 * PAGE_SIZE;
+        e820[nr].addr = igd_opregion_base + IGD_OPREGION_PAGES * PAGE_SIZE;
         e820[nr].size = (uint32_t)-e820[nr].addr;
         e820[nr].type = E820_RESERVED;
         nr++;
index 0500db5fbb13f7359429a1060b8521e2acd83f56..c7c87a76bf71cd269a760202ceef71ada140152c 100644 (file)
@@ -104,7 +104,7 @@ void pci_setup(void)
                 virtual_vga = VGA_pt;
                 if ( vendor_id == 0x8086 )
                 {
-                    igd_opregion_pgbase = mem_hole_alloc(2);
+                    igd_opregion_pgbase = mem_hole_alloc(IGD_OPREGION_PAGES);
                     /*
                      * Write the the OpRegion offset to give the opregion
                      * address to the device model. The device model will trap