From: kaf24@firebug.cl.cam.ac.uk Date: Sun, 30 Apr 2006 08:47:51 +0000 (+0100) Subject: Balloon driver: when in autotranslate mode, pages are returned X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~16108^2~44 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ab105de48f04c6b8b5bcc705b287dcafb12a119d;p=xen.git Balloon driver: when in autotranslate mode, pages are returned to xen without traversing init_mm. This change is needed for xen/ia64 vp model. Signed-off-by: Isaku Yamahata --- diff --git a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c index f773f8edaa..1a7216c8bd 100644 --- a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c +++ b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c @@ -550,9 +550,22 @@ struct page *balloon_alloc_empty_page_range(unsigned long nr_pages) scrub_pages(vstart, 1 << order); balloon_lock(flags); - ret = apply_to_page_range(&init_mm, vstart, - PAGE_SIZE << order, dealloc_pte_fn, NULL); - BUG_ON(ret); + if (xen_feature(XENFEAT_auto_translated_physmap)) { + unsigned long gmfn = __pa(vstart) >> PAGE_SHIFT; + struct xen_memory_reservation reservation = { + .nr_extents = 1, + .extent_order = order, + .domid = DOMID_SELF + }; + set_xen_guest_handle(reservation.extent_start, &gmfn); + ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, + &reservation); + BUG_ON(ret != 1); + } else { + ret = apply_to_page_range(&init_mm, vstart, PAGE_SIZE << order, + dealloc_pte_fn, NULL); + BUG_ON(ret); + } current_pages -= 1UL << order; totalram_pages = current_pages; balloon_unlock(flags);