summaryrefslogtreecommitdiff
path: root/arch/x86/xen
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/xen')
-rw-r--r--arch/x86/xen/setup.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 7a4ab05..0ce9d58 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -149,6 +149,7 @@ char * __init xen_memory_setup(void)
unsigned long extra_pages = 0;
unsigned long extra_limit;
int i;
+ int op;
max_pfn = min(MAX_DOMAIN_PAGES, max_pfn);
mem_end = PFN_PHYS(max_pfn);
@@ -156,7 +157,10 @@ char * __init xen_memory_setup(void)
memmap.nr_entries = E820MAX;
set_xen_guest_handle(memmap.buffer, map);
- rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap);
+ op = xen_initial_domain() ?
+ XENMEM_machine_memory_map :
+ XENMEM_memory_map;
+ rc = HYPERVISOR_memory_op(op, &memmap);
if (rc == -ENOSYS) {
memmap.nr_entries = 1;
map[0].addr = 0ULL;
@@ -235,7 +239,8 @@ char * __init xen_memory_setup(void)
else
extra_pages = 0;
- xen_add_extra_mem(extra_pages);
+ if (!xen_initial_domain())
+ xen_add_extra_mem(extra_pages);
return "Xen";
}