xen: actually release memory when shrinking domain
authorDan Magenheimer <dan.magenheimer@oracle.com>
Thu, 22 Jan 2009 22:36:08 +0000 (14:36 -0800)
committerIngo Molnar <mingo@elte.hu>
Thu, 22 Jan 2009 22:41:44 +0000 (23:41 +0100)
Fix this:

> It appears that in the upstream balloon driver,
> the call to HYPERVISOR_update_va_mapping is missing
> from decrease_reservation.  I think as a result,
> the balloon driver is eating memory but not
> releasing it to Xen, thus rendering the balloon
> driver essentially useless.  (Can be observed via xentop.)

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
drivers/xen/balloon.c

index 8dc7109d61b760ab6162402797b24d98cff80b88..8069d520c46048fee02441793d5b91977ae680df 100644 (file)
@@ -298,6 +298,11 @@ static int decrease_reservation(unsigned long nr_pages)
                frame_list[i] = pfn_to_mfn(pfn);
 
                scrub_page(page);
+
+               ret = HYPERVISOR_update_va_mapping(
+                       (unsigned long)__va(pfn << PAGE_SHIFT),
+                       __pte_ma(0), 0);
+               BUG_ON(ret);
        }
 
        /* Ensure that ballooned highmem pages don't have kmaps. */