[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/shadow: fold/rename sh_unhook_*_mappings()
commit 55ec42b857d85268aab513a9b056249d62aba953 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Mar 24 11:08:36 2023 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Mar 24 11:08:36 2023 +0100 x86/shadow: fold/rename sh_unhook_*_mappings() The "32b" and "pae" functions are identical at the source level (they differ in what they get compiled to, due to differences in SHADOW_FOREACH_L2E()), leaving aside a comment the PAE variant has and the non-PAE one doesn't. Replace these infixes by the more usual l<N> ones (and then also for the "64b" one for consistency; that'll also allow for re-use once we support 5-level paging, if need be). The two different instances are still distinguishable by their "level" suffix. While fiddling with the names, convert the last parameter to boolean as well. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/mm/shadow/common.c | 6 +++--- xen/arch/x86/mm/shadow/multi.c | 18 +++--------------- xen/arch/x86/mm/shadow/multi.h | 11 ++++------- xen/arch/x86/mm/shadow/types.h | 5 ++--- 4 files changed, 12 insertions(+), 28 deletions(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 7ced6aec0a..0e5e0bdbd6 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -898,14 +898,14 @@ void shadow_unhook_mappings(struct domain *d, mfn_t smfn, int user_only) { #ifdef CONFIG_HVM case SH_type_l2_32_shadow: - SHADOW_INTERNAL_NAME(sh_unhook_32b_mappings, 2)(d, smfn, user_only); + SHADOW_INTERNAL_NAME(sh_unhook_l2_mappings, 2)(d, smfn, user_only); break; case SH_type_l2_pae_shadow: - SHADOW_INTERNAL_NAME(sh_unhook_pae_mappings, 3)(d, smfn, user_only); + SHADOW_INTERNAL_NAME(sh_unhook_l2_mappings, 3)(d, smfn, user_only); break; #endif case SH_type_l4_64_shadow: - SHADOW_INTERNAL_NAME(sh_unhook_64b_mappings, 4)(d, smfn, user_only); + SHADOW_INTERNAL_NAME(sh_unhook_l4_mappings, 4)(d, smfn, user_only); break; default: printk(XENLOG_ERR "Bad top-level shadow type %08x\n", sp->u.sh.type); diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 415e18a8df..106f95cccc 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -1416,21 +1416,9 @@ void sh_destroy_l1_shadow(struct domain *d, mfn_t smfn) * This implementation is pretty crude and slow, but we hope that it won't * be called very often. */ -#if GUEST_PAGING_LEVELS == 2 - -void sh_unhook_32b_mappings(struct domain *d, mfn_t sl2mfn, int user_only) -{ - shadow_l2e_t *sl2e; - SHADOW_FOREACH_L2E(sl2mfn, sl2e, 0, 0, d, { - if ( !user_only || (sl2e->l2 & _PAGE_USER) ) - shadow_set_l2e(d, sl2e, shadow_l2e_empty(), sl2mfn); - }); -} - -#elif GUEST_PAGING_LEVELS == 3 +#if GUEST_PAGING_LEVELS < 4 -void sh_unhook_pae_mappings(struct domain *d, mfn_t sl2mfn, int user_only) -/* Walk a PAE l2 shadow, unhooking entries from all the subshadows */ +void sh_unhook_l2_mappings(struct domain *d, mfn_t sl2mfn, bool user_only) { shadow_l2e_t *sl2e; SHADOW_FOREACH_L2E(sl2mfn, sl2e, 0, 0, d, { @@ -1441,7 +1429,7 @@ void sh_unhook_pae_mappings(struct domain *d, mfn_t sl2mfn, int user_only) #elif GUEST_PAGING_LEVELS == 4 -void sh_unhook_64b_mappings(struct domain *d, mfn_t sl4mfn, int user_only) +void sh_unhook_l4_mappings(struct domain *d, mfn_t sl4mfn, bool user_only) { shadow_l4e_t *sl4e; SHADOW_FOREACH_L4E(sl4mfn, sl4e, 0, 0, d, { diff --git a/xen/arch/x86/mm/shadow/multi.h b/xen/arch/x86/mm/shadow/multi.h index 0918df753c..222c31bd10 100644 --- a/xen/arch/x86/mm/shadow/multi.h +++ b/xen/arch/x86/mm/shadow/multi.h @@ -50,14 +50,11 @@ SHADOW_INTERNAL_NAME(sh_destroy_l4_shadow, GUEST_LEVELS)( struct domain *d, mfn_t smfn); extern void -SHADOW_INTERNAL_NAME(sh_unhook_32b_mappings, GUEST_LEVELS) - (struct domain *d, mfn_t sl2mfn, int user_only); +SHADOW_INTERNAL_NAME(sh_unhook_l2_mappings, GUEST_LEVELS) + (struct domain *d, mfn_t sl2mfn, bool user_only); extern void -SHADOW_INTERNAL_NAME(sh_unhook_pae_mappings, GUEST_LEVELS) - (struct domain *d, mfn_t sl3mfn, int user_only); -extern void -SHADOW_INTERNAL_NAME(sh_unhook_64b_mappings, GUEST_LEVELS) - (struct domain *d, mfn_t sl4mfn, int user_only); +SHADOW_INTERNAL_NAME(sh_unhook_l4_mappings, GUEST_LEVELS) + (struct domain *d, mfn_t sl4mfn, bool user_only); int cf_check SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, GUEST_LEVELS) diff --git a/xen/arch/x86/mm/shadow/types.h b/xen/arch/x86/mm/shadow/types.h index fac59522b0..e81a3c2c5c 100644 --- a/xen/arch/x86/mm/shadow/types.h +++ b/xen/arch/x86/mm/shadow/types.h @@ -232,9 +232,8 @@ static inline shadow_l4e_t shadow_l4e_from_mfn(mfn_t mfn, u32 flags) #define sh_destroy_l3_shadow INTERNAL_NAME(sh_destroy_l3_shadow) #define sh_destroy_l2_shadow INTERNAL_NAME(sh_destroy_l2_shadow) #define sh_destroy_l1_shadow INTERNAL_NAME(sh_destroy_l1_shadow) -#define sh_unhook_32b_mappings INTERNAL_NAME(sh_unhook_32b_mappings) -#define sh_unhook_pae_mappings INTERNAL_NAME(sh_unhook_pae_mappings) -#define sh_unhook_64b_mappings INTERNAL_NAME(sh_unhook_64b_mappings) +#define sh_unhook_l2_mappings INTERNAL_NAME(sh_unhook_l2_mappings) +#define sh_unhook_l4_mappings INTERNAL_NAME(sh_unhook_l4_mappings) #define sh_paging_mode INTERNAL_NAME(sh_paging_mode) #define sh_audit_l1_table INTERNAL_NAME(sh_audit_l1_table) #define sh_audit_fl1_table INTERNAL_NAME(sh_audit_fl1_table) -- generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |