|
@@ -227,11 +227,7 @@ char * __init xen_memory_setup(void)
|
|
|
|
|
|
memcpy(map_raw, map, sizeof(map));
|
|
|
e820.nr_map = 0;
|
|
|
-#ifdef CONFIG_X86_32
|
|
|
xen_extra_mem_start = mem_end;
|
|
|
-#else
|
|
|
- xen_extra_mem_start = max((1ULL << 32), mem_end);
|
|
|
-#endif
|
|
|
for (i = 0; i < memmap.nr_entries; i++) {
|
|
|
unsigned long long end;
|
|
|
|
|
@@ -266,6 +262,12 @@ char * __init xen_memory_setup(void)
|
|
|
if (map[i].size > 0)
|
|
|
e820_add_region(map[i].addr, map[i].size, map[i].type);
|
|
|
}
|
|
|
+ /* Align the balloon area so that max_low_pfn does not get set
|
|
|
+ * to be at the _end_ of the PCI gap at the far end (fee01000).
|
|
|
+ * Note that xen_extra_mem_start gets set in the loop above to be
|
|
|
+ * past the last E820 region. */
|
|
|
+ if (xen_initial_domain() && (xen_extra_mem_start < (1ULL<<32)))
|
|
|
+ xen_extra_mem_start = (1ULL<<32);
|
|
|
|
|
|
/*
|
|
|
* In domU, the ISA region is normal, usable memory, but we
|