diff options
Diffstat (limited to 'arch/x86/xen/setup.c')
| -rw-r--r-- | arch/x86/xen/setup.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index be1a464f6d6..60aeeb56948 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -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  |