diff options
Diffstat (limited to 'xen/common/memory.c')
-rw-r--r-- | xen/common/memory.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/xen/common/memory.c b/xen/common/memory.c index 0a631ca83e..9962c2e89a 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -126,6 +126,11 @@ populate_physmap( for ( j = 0; j < (1 << extent_order); j++ ) guest_physmap_add_page(d, gpfn + j, mfn + j); } + else if ( unlikely(shadow2_mode_translate(d)) ) + { + for ( j = 0; j < (1 << extent_order); j++ ) + shadow2_guest_physmap_add_page(d, gpfn + j, mfn + j); + } else { for ( j = 0; j < (1 << extent_order); j++ ) @@ -153,7 +158,7 @@ guest_remove_page( if ( unlikely(!mfn_valid(mfn)) ) { DPRINTK("Domain %u page number %lx invalid\n", - d->domain_id, mfn); + d->domain_id, gmfn); return 0; } @@ -179,7 +184,7 @@ guest_remove_page( (unsigned long)page->count_info, page->u.inuse.type_info); } - guest_physmap_remove_page(d, gmfn, mfn); + shadow2_guest_physmap_remove_page(d, gmfn, mfn); put_page(page); @@ -250,7 +255,7 @@ translate_gpfn_list( if ( (d = find_domain_by_id(op.domid)) == NULL ) return -ESRCH; - if ( !shadow_mode_translate(d) ) + if ( !(shadow_mode_translate(d) || shadow2_mode_translate(d)) ) { put_domain(d); return -EINVAL; |