/* this will put all low memory onto the freelists */
totalram_pages += free_all_bootmem();
+ /* XEN: init and count low-mem pages outside initial allocation. */
+ for (pfn = boot_pfn; pfn < max_low_pfn; pfn++) {
+ ClearPageReserved(&mem_map[pfn]);
+ atomic_set(&mem_map[pfn].count, 1);
+ totalram_pages++;
+ }
reservedpages = 0;
for (pfn = 0; pfn < boot_pfn ; pfn++) {
pte = one_page_table_init(pmd);
pte += pte_ofs;
- /* XEN: Only map initial RAM allocation. */
- for (; pte_ofs < PTRS_PER_PTE && pfn < max_ram_pfn; pte++, pfn++, pte_ofs++) {
+ for (; pte_ofs < PTRS_PER_PTE && pfn < max_low_pfn; pte++, pfn++, pte_ofs++) {
+ /* XEN: Only map initial RAM allocation. */
+ if (pfn >= max_ram_pfn)
+ break;
if (pte_present(*pte))
continue;
if (is_kernel_text(address))
int codesize, reservedpages, datasize, initsize;
int tmp;
int bad_ppro;
+ unsigned long pfn;
#ifndef CONFIG_DISCONTIGMEM
if (!mem_map)
/* this will put all low memory onto the freelists */
totalram_pages += __free_all_bootmem();
+ /* XEN: init and count low-mem pages outside initial allocation. */
+ for (pfn = xen_start_info.nr_pages; pfn < max_low_pfn; pfn++) {
+ ClearPageReserved(&mem_map[pfn]);
+ atomic_set(&mem_map[pfn].count, 1);
+ totalram_pages++;
+ }
reservedpages = 0;
for (tmp = 0; tmp < max_low_pfn; tmp++)
printk("done.\n");
/* Construct a frame-allocation list for the initial domain. */
+ p->max_pages = ~0U;
for ( mfn = (alloc_start>>PAGE_SHIFT);
mfn < (alloc_end>>PAGE_SHIFT);
mfn++ )
page->u.inuse.type_info = 0;
page->count_info = PGC_allocated | 1;
list_add_tail(&page->list, &p->page_list);
- p->tot_pages++; p->max_pages++;
+ p->tot_pages++;
}
mpt_alloc = (vpt_start - dsi.v_start) + alloc_start;