Commit 9be4d457 authored by Jeremy Fitzhardinge's avatar Jeremy Fitzhardinge

xen: add extra pages to balloon

Add extra pages in the pseudo-physical address space to the balloon
so we can extend into them later.
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
parent e0419564
...@@ -119,7 +119,7 @@ static void scrub_page(struct page *page) ...@@ -119,7 +119,7 @@ static void scrub_page(struct page *page)
} }
/* balloon_append: add the given page to the balloon. */ /* balloon_append: add the given page to the balloon. */
static void balloon_append(struct page *page) static void __balloon_append(struct page *page)
{ {
/* Lowmem is re-populated first, so highmem pages go at list tail. */ /* Lowmem is re-populated first, so highmem pages go at list tail. */
if (PageHighMem(page)) { if (PageHighMem(page)) {
...@@ -130,7 +130,11 @@ static void balloon_append(struct page *page) ...@@ -130,7 +130,11 @@ static void balloon_append(struct page *page)
list_add(&page->lru, &ballooned_pages); list_add(&page->lru, &ballooned_pages);
balloon_stats.balloon_low++; balloon_stats.balloon_low++;
} }
}
static void balloon_append(struct page *page)
{
__balloon_append(page);
totalram_pages--; totalram_pages--;
} }
...@@ -416,10 +420,13 @@ static int __init balloon_init(void) ...@@ -416,10 +420,13 @@ static int __init balloon_init(void)
register_balloon(&balloon_sysdev); register_balloon(&balloon_sysdev);
/* Initialise the balloon with excess memory space. */ /* Initialise the balloon with excess memory space. */
for (pfn = xen_start_info->nr_pages; pfn < max_pfn; pfn++) { for (pfn = PFN_UP(xen_extra_mem_start);
pfn < PFN_DOWN(xen_extra_mem_start + xen_extra_mem_size);
pfn++) {
page = pfn_to_page(pfn); page = pfn_to_page(pfn);
if (!PageReserved(page)) /* totalram_pages doesn't include the boot-time
balloon_append(page); balloon extension, so don't subtract from it. */
__balloon_append(page);
} }
target_watch.callback = watch_target; target_watch.callback = watch_target;
......
#ifndef _XEN_PAGE_H
#define _XEN_PAGE_H
#include <asm/xen/page.h> #include <asm/xen/page.h>
extern phys_addr_t xen_extra_mem_start, xen_extra_mem_size;
#endif /* _XEN_PAGE_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment