Skip to content

Commit

Permalink
xen/balloon: don't set P2M entry for auto translated guest
Browse files Browse the repository at this point in the history
In commit cd9151e: xen/balloon: set a mapping for ballooned out pages
we have the ballooned out page's mapping set to a scratch page.

That commit also sets the P2M entry of ballooned out page to the scratch
page's MFN. This is necessary for PV guest but not for HVM guest. On the
other hand, setting the P2M entry would trigger BUG_ON in
__set_phys_to_machine.

The correct thing to do here is to avoid calling __set_phys_to_machine
for auto translated guest.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
  • Loading branch information
Wei Liu authored and Konrad Rzeszutek Wilk committed Aug 30, 2013
1 parent 06b35d0 commit 04660bb
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/xen/balloon.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,8 +430,13 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
/* No more mappings: invalidate P2M and add to balloon. */
for (i = 0; i < nr_pages; i++) {
pfn = mfn_to_pfn(frame_list[i]);
__set_phys_to_machine(pfn,
pfn_to_mfn(page_to_pfn(__get_cpu_var(balloon_scratch_page))));
if (!xen_feature(XENFEAT_auto_translated_physmap)) {
unsigned long p;
struct page *pg;
pg = __get_cpu_var(balloon_scratch_page);
p = page_to_pfn(pg);
__set_phys_to_machine(pfn, pfn_to_mfn(p));
}
balloon_append(pfn_to_page(pfn));
}

Expand Down

0 comments on commit 04660bb

Please sign in to comment.