[LINUX][X86/64] Initialise pages outside initial allocation so that
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 9 Jun 2006 15:18:40 +0000 (16:18 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 9 Jun 2006 15:18:40 +0000 (16:18 +0100)
they are picked up by the balloon driver.
From: Jan Beulich
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c

index fe41bfacc380894280c314d1eb7c9f4b22e52c8f..4ee3b3b1df2c2c4ab282d5998ad1c8c81bf02a94 100644 (file)
@@ -882,6 +882,7 @@ static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel, kcore_modules,
 void __init mem_init(void)
 {
        long codesize, reservedpages, datasize, initsize;
+       unsigned long pfn;
 
        contiguous_bitmap = alloc_bootmem_low_pages(
                (end_pfn + 2*BITS_PER_LONG) >> 3);
@@ -910,6 +911,12 @@ void __init mem_init(void)
 #else
        totalram_pages = free_all_bootmem();
 #endif
+       /* XEN: init and count pages outside initial allocation. */
+       for (pfn = xen_start_info->nr_pages; pfn < max_pfn; pfn++) {
+               ClearPageReserved(&mem_map[pfn]);
+               set_page_count(&mem_map[pfn], 1);
+               totalram_pages++;
+       }
        reservedpages = end_pfn - totalram_pages - e820_hole_size(0, end_pfn);
 
        after_bootmem = 1;