[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
commit 354e8318d5a9b6f32fbd3c01d1a9f1970007010b Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Thu May 21 09:45:27 2020 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Mon May 25 16:37:48 2020 +0100 x86/shadow: Reposition sh_remove_write_access_from_sl1p() When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with: common.c:41:12: error: â??sh_remove_write_access_from_sl1pâ?? declared â??staticâ?? but never defined [-Werror=unused-function] static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ due to an unguarded forward declaration. It turns out there is no need to forward declare sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of its first user, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block. Fix up for style while moving it. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Tim Deegan <tim@xxxxxxx> --- xen/arch/x86/mm/shadow/common.c | 58 +++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 0ac3f880e1..5fcb04ce8b 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -38,9 +38,6 @@ #include <xen/numa.h> #include "private.h" -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, - mfn_t smfn, unsigned long offset); - DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags); static int sh_enable_log_dirty(struct domain *, bool log_global); @@ -252,6 +249,33 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t gmfn, mfn_t snpmfn) SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn); } +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, + mfn_t smfn, unsigned long off) +{ + ASSERT(mfn_valid(smfn)); + ASSERT(mfn_valid(gmfn)); + + switch ( mfn_to_page(smfn)->u.sh.type ) + { + case SH_type_l1_32_shadow: + case SH_type_fl1_32_shadow: + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 2) + (d, gmfn, smfn, off); + + case SH_type_l1_pae_shadow: + case SH_type_fl1_pae_shadow: + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 3) + (d, gmfn, smfn, off); + + case SH_type_l1_64_shadow: + case SH_type_fl1_64_shadow: + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 4) + (d, gmfn, smfn, off); + + default: + return 0; + } +} /* * Fixup arrays: We limit the maximum number of writable mappings to @@ -2001,34 +2025,6 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn, } #endif /* CONFIG_HVM */ -#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC) -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, - mfn_t smfn, unsigned long off) -{ - struct page_info *sp = mfn_to_page(smfn); - - ASSERT(mfn_valid(smfn)); - ASSERT(mfn_valid(gmfn)); - - if ( sp->u.sh.type == SH_type_l1_32_shadow - || sp->u.sh.type == SH_type_fl1_32_shadow ) - { - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,2) - (d, gmfn, smfn, off); - } - else if ( sp->u.sh.type == SH_type_l1_pae_shadow - || sp->u.sh.type == SH_type_fl1_pae_shadow ) - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,3) - (d, gmfn, smfn, off); - else if ( sp->u.sh.type == SH_type_l1_64_shadow - || sp->u.sh.type == SH_type_fl1_64_shadow ) - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,4) - (d, gmfn, smfn, off); - - return 0; -} -#endif - /**************************************************************************/ /* Remove all mappings of a guest frame from the shadow tables. * Returns non-zero if we need to flush TLBs. */ -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |