aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGianluca Guida <gianluca.guida@citrix.com>2009-07-30 17:54:36 -0400
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-12-04 11:13:44 -0500
commit3d65c9488cadd2f11bd4d60c7266e639ece5d0d6 (patch)
tree94790d79e492f8fee50b8d9e6a5a7043b1941eff
parentb4606f2165153833247823e8c04c5e88cb3d298b (diff)
Xen balloon: fix totalram_pages counting.
Change totalram_pages when a single page is added/removed to the ballooned list. This avoid totalram_pages to be set erroneously to max_pfn at boot. Signed-off-by: Gianluca Guida <gianluca.guida@citrix.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Stable Kernel <stable@kernel.org>
-rw-r--r--drivers/xen/balloon.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index d31505b6f7a4..6eb62654410a 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -136,6 +136,8 @@ static void balloon_append(struct page *page)
136 list_add(&page->lru, &ballooned_pages); 136 list_add(&page->lru, &ballooned_pages);
137 balloon_stats.balloon_low++; 137 balloon_stats.balloon_low++;
138 } 138 }
139
140 totalram_pages--;
139} 141}
140 142
141/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */ 143/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
@@ -156,6 +158,8 @@ static struct page *balloon_retrieve(void)
156 else 158 else
157 balloon_stats.balloon_low--; 159 balloon_stats.balloon_low--;
158 160
161 totalram_pages++;
162
159 return page; 163 return page;
160} 164}
161 165
@@ -260,7 +264,6 @@ static int increase_reservation(unsigned long nr_pages)
260 } 264 }
261 265
262 balloon_stats.current_pages += nr_pages; 266 balloon_stats.current_pages += nr_pages;
263 totalram_pages = balloon_stats.current_pages;
264 267
265 out: 268 out:
266 spin_unlock_irqrestore(&balloon_lock, flags); 269 spin_unlock_irqrestore(&balloon_lock, flags);
@@ -323,7 +326,6 @@ static int decrease_reservation(unsigned long nr_pages)
323 BUG_ON(ret != nr_pages); 326 BUG_ON(ret != nr_pages);
324 327
325 balloon_stats.current_pages -= nr_pages; 328 balloon_stats.current_pages -= nr_pages;
326 totalram_pages = balloon_stats.current_pages;
327 329
328 spin_unlock_irqrestore(&balloon_lock, flags); 330 spin_unlock_irqrestore(&balloon_lock, flags);
329 331
@@ -422,7 +424,6 @@ static int __init balloon_init(void)
422 pr_info("xen_balloon: Initialising balloon driver.\n"); 424 pr_info("xen_balloon: Initialising balloon driver.\n");
423 425
424 balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn); 426 balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn);
425 totalram_pages = balloon_stats.current_pages;
426 balloon_stats.target_pages = balloon_stats.current_pages; 427 balloon_stats.target_pages = balloon_stats.current_pages;
427 balloon_stats.balloon_low = 0; 428 balloon_stats.balloon_low = 0;
428 balloon_stats.balloon_high = 0; 429 balloon_stats.balloon_high = 0;