debuggers.hg

changeset 19960:00f2162a2c5c

i386: fix boot

Since the Xen heap pages (which are the only ones mapped at this
point) don't get passed to init_boot_pages(), it has no place to store
the bootmem regions without faulting. Hence, a mapped page must be
passed to that function as the very first thing.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
author Keir Fraser <keir.fraser@citrix.com>
date Mon Jul 13 11:18:57 2009 +0100 (2009-07-13)
parents 8ee92b9f890f
children 895695d91ec1
files xen/arch/x86/setup.c
line diff
     1.1 --- a/xen/arch/x86/setup.c	Fri Jul 10 18:12:13 2009 +0100
     1.2 +++ b/xen/arch/x86/setup.c	Mon Jul 13 11:18:57 2009 +0100
     1.3 @@ -763,7 +763,9 @@ void __init __start_xen(unsigned long mb
     1.4      reserve_e820_ram(&boot_e820, initial_images_base, initial_images_end);
     1.5  
     1.6  #if defined(CONFIG_X86_32)
     1.7 -    xenheap_initial_phys_start = __pa(&_end);
     1.8 +    xenheap_initial_phys_start = (PFN_UP(__pa(&_end)) + 1) << PAGE_SHIFT;
     1.9 +    /* Must pass a single mapped page for populating bootmem_region_list. */
    1.10 +    init_boot_pages(__pa(&_end), xenheap_initial_phys_start);
    1.11      xenheap_phys_end = DIRECTMAP_MBYTES << 20;
    1.12  #else
    1.13      if ( !xen_phys_start )