xen: ask the hypervisor how much space it needs reserved
Ask the hypervisor how much space it needs reserved, since 32-on-64 doesn't need any space, and it may change in future. Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
This commit is contained in:
parent
74260714c5
commit
fb1d84043c
@ -1112,6 +1112,17 @@ static const struct machine_ops __initdata xen_machine_ops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void __init xen_reserve_top(void)
|
||||||
|
{
|
||||||
|
unsigned long top = HYPERVISOR_VIRT_START;
|
||||||
|
struct xen_platform_parameters pp;
|
||||||
|
|
||||||
|
if (HYPERVISOR_xen_version(XENVER_platform_parameters, &pp) == 0)
|
||||||
|
top = pp.virt_start;
|
||||||
|
|
||||||
|
reserve_top_address(-top + 2 * PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
/* First C function to be called on Xen boot */
|
/* First C function to be called on Xen boot */
|
||||||
asmlinkage void __init xen_start_kernel(void)
|
asmlinkage void __init xen_start_kernel(void)
|
||||||
{
|
{
|
||||||
@ -1169,7 +1180,7 @@ asmlinkage void __init xen_start_kernel(void)
|
|||||||
pv_info.kernel_rpl = 0;
|
pv_info.kernel_rpl = 0;
|
||||||
|
|
||||||
/* set the limit of our address space */
|
/* set the limit of our address space */
|
||||||
reserve_top_address(-HYPERVISOR_VIRT_START + 2 * PAGE_SIZE);
|
xen_reserve_top();
|
||||||
|
|
||||||
/* set up basic CPUID stuff */
|
/* set up basic CPUID stuff */
|
||||||
cpu_detect(&new_cpu_data);
|
cpu_detect(&new_cpu_data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user