[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86/64: Account for allocation bitmap by making Xen heap appropriately larger.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1216730216 -3600 # Node ID a637c023e066e972d03e95b1359786e72f32d2be # Parent fc44e35b39136449247d3f9d013776f8fe3ba9db x86/64: Account for allocation bitmap by making Xen heap appropriately larger. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/arch/x86/setup.c | 25 +++++++++++++++++-------- 1 files changed, 17 insertions(+), 8 deletions(-) diff -r fc44e35b3913 -r a637c023e066 xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Tue Jul 22 11:56:26 2008 +0100 +++ b/xen/arch/x86/setup.c Tue Jul 22 13:36:56 2008 +0100 @@ -521,14 +521,6 @@ void __init __start_xen(unsigned long mb if ( ((unsigned long)cpu0_stack & (STACK_SIZE-1)) != 0 ) EARLY_FAIL("Misaligned CPU0 stack.\n"); - /* - * Since there are some stubs getting built on the stacks which use - * direct calls/jumps, the heap must be confined to the lower 2G so - * that those branches can reach their targets. - */ - if ( opt_xenheap_megabytes > 2048 ) - opt_xenheap_megabytes = 2048; - if ( e820_raw_nr != 0 ) { memmap_type = "Xen-e820"; @@ -599,6 +591,23 @@ void __init __start_xen(unsigned long mb /* Sanitise the raw E820 map to produce a final clean version. */ max_page = init_e820(memmap_type, e820_raw, &e820_raw_nr); + +#ifdef CONFIG_X86_64 + /* + * On x86/64 we are able to account for the allocation bitmap + * (allocated in common/page_alloc.c:init_boot_allocator()) stealing + * from the Xen heap. Here we make the Xen heap appropriately larger. + */ + opt_xenheap_megabytes += (max_page / 8) >> 20; +#endif + + /* + * Since there are some stubs getting built on the stacks which use + * direct calls/jumps, the heap must be confined to the lower 2G so + * that those branches can reach their targets. + */ + if ( opt_xenheap_megabytes > 2048 ) + opt_xenheap_megabytes = 2048; /* Create a temporary copy of the E820 map. */ memcpy(&boot_e820, &e820, sizeof(e820)); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |