[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 13/20] x86/shadow: Alter sh_{clear_shadow_entry, remove_shadow_via_pointer}() to take a domain
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> --- xen/arch/x86/mm/shadow/common.c | 11 +++++------ xen/arch/x86/mm/shadow/multi.c | 4 +--- xen/arch/x86/mm/shadow/multi.h | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 046201a..e522b60 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -2466,11 +2466,10 @@ static int sh_remove_all_mappings(struct vcpu *v, mfn_t gmfn) /**************************************************************************/ /* Remove all shadows of a guest frame from the shadow tables */ -static int sh_remove_shadow_via_pointer(struct vcpu *v, mfn_t smfn) +static int sh_remove_shadow_via_pointer(struct domain *d, mfn_t smfn) /* Follow this shadow's up-pointer, if it has one, and remove the reference * found there. Returns 1 if that was the only reference to this shadow */ { - struct domain *d = v->domain; struct page_info *sp = mfn_to_page(smfn); mfn_t pmfn; void *vaddr; @@ -2496,19 +2495,19 @@ static int sh_remove_shadow_via_pointer(struct vcpu *v, mfn_t smfn) { case SH_type_l1_32_shadow: case SH_type_l2_32_shadow: - SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 2)(v, vaddr, pmfn); + SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 2)(d, vaddr, pmfn); break; case SH_type_l1_pae_shadow: case SH_type_l2_pae_shadow: case SH_type_l2h_pae_shadow: - SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 3)(v, vaddr, pmfn); + SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 3)(d, vaddr, pmfn); break; case SH_type_l1_64_shadow: case SH_type_l2_64_shadow: case SH_type_l2h_64_shadow: case SH_type_l3_64_shadow: case SH_type_l4_64_shadow: - SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 4)(v, vaddr, pmfn); + SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 4)(d, vaddr, pmfn); break; default: BUG(); /* Some wierd unknown shadow type */ } @@ -2618,7 +2617,7 @@ void sh_remove_shadows(struct vcpu *v, mfn_t gmfn, int fast, int all) if ( sh_type_is_pinnable(d, t) ) \ sh_unpin(d, smfn); \ else if ( sh_type_has_up_pointer(d, t) ) \ - sh_remove_shadow_via_pointer(v, smfn); \ + sh_remove_shadow_via_pointer(d, smfn); \ if( !fast \ && (pg->count_info & PGC_page_table) \ && (pg->shadow_flags & (1 << t)) ) \ diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 1db8161..469ad25 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -4347,11 +4347,9 @@ int sh_rm_mappings_from_l1(struct vcpu *v, mfn_t sl1mfn, mfn_t target_mfn) /**************************************************************************/ /* Functions to excise all pointers to shadows from higher-level shadows. */ -void sh_clear_shadow_entry(struct vcpu *v, void *ep, mfn_t smfn) +void sh_clear_shadow_entry(struct domain *d, void *ep, mfn_t smfn) /* Blank out a single shadow entry */ { - struct domain *d = v->domain; - switch ( mfn_to_page(smfn)->u.sh.type ) { case SH_type_l1_shadow: diff --git a/xen/arch/x86/mm/shadow/multi.h b/xen/arch/x86/mm/shadow/multi.h index 614103d..e33948c 100644 --- a/xen/arch/x86/mm/shadow/multi.h +++ b/xen/arch/x86/mm/shadow/multi.h @@ -69,7 +69,7 @@ SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, GUEST_LEVELS) extern void SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, GUEST_LEVELS) - (struct vcpu *v, void *ep, mfn_t smfn); + (struct domain *d, void *ep, mfn_t smfn); extern int SHADOW_INTERNAL_NAME(sh_remove_l1_shadow, GUEST_LEVELS) -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |