aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2013-01-10 17:26:24 +0000
committerKeir Fraser <keir@xen.org>2013-01-10 17:26:24 +0000
commit408a9e56343b006c9e58a334f0b97dd2deedf9ac (patch)
tree79a8587372021468fef244e3a1226416330ac6b1 /tools/firmware
parent4a281d45f59bcc2cc21d63e7f6ec1f4bae642a9b (diff)
downloadxen-408a9e56343b006c9e58a334f0b97dd2deedf9ac.tar.gz
xen-408a9e56343b006c9e58a334f0b97dd2deedf9ac.tar.bz2
xen-408a9e56343b006c9e58a334f0b97dd2deedf9ac.zip
hvmloader: Allocate 3 pages for Intel GPU OpRegion passthrough.
The 8kB region may not be page aligned, hence requiring 3 pages to be mapped through. Signed-off-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'tools/firmware')
-rw-r--r--tools/firmware/hvmloader/config.h2
-rw-r--r--tools/firmware/hvmloader/e820.c4
-rw-r--r--tools/firmware/hvmloader/pci.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
index 3a4e145c6e..7f8a90f993 100644
--- a/tools/firmware/hvmloader/config.h
+++ b/tools/firmware/hvmloader/config.h
@@ -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;
diff --git a/tools/firmware/hvmloader/e820.c b/tools/firmware/hvmloader/e820.c
index 0fc0b1c306..0a46b80e8b 100644
--- a/tools/firmware/hvmloader/e820.c
+++ b/tools/firmware/hvmloader/e820.c
@@ -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++;
diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0500db5fbb..c7c87a76bf 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -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