From b81813dfb36fde9bd47c2e1b806e368cb9d6cbdb Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 14 May 2019 16:18:58 +0200 Subject: [PATCH] x86/mm: short-circuit HVM-only mode flags when !HVM #define-ing them to zero allows better code generation in this case, and paves the way for more DCE, allowing to leave certain functions just declared, but not defined. Signed-off-by: Jan Beulich Reviewed-by: Wei Liu Reviewed-by: George Dunlap --- xen/arch/x86/mm/paging.c | 2 ++ xen/include/asm-x86/paging.h | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c index 9b0f268e74..011089368a 100644 --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -837,7 +837,9 @@ int paging_enable(struct domain *d, u32 mode) switch ( mode & (PG_external | PG_translate | PG_refcounts) ) { case 0: +#if PG_external | PG_translate | PG_refcounts case PG_external | PG_translate | PG_refcounts: +#endif break; default: return -EINVAL; diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h index 0d212d352e..cf57ca708d 100644 --- a/xen/include/asm-x86/paging.h +++ b/xen/include/asm-x86/paging.h @@ -46,19 +46,29 @@ #define PG_SH_enable 0 #define PG_SH_forced 0 #endif +#ifdef CONFIG_HVM #define PG_HAP_enable (1U << PG_HAP_shift) +#else +#define PG_HAP_enable 0 +#endif /* common paging mode bits */ #define PG_mode_shift 10 +#ifdef CONFIG_HVM /* Refcounts based on shadow tables instead of guest tables */ #define PG_refcounts (XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT << PG_mode_shift) -/* Enable log dirty mode */ -#define PG_log_dirty (XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY << PG_mode_shift) /* Xen does p2m translation, not guest */ #define PG_translate (XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE << PG_mode_shift) /* Xen does not steal address space from the domain for its own booking; * requires VT or similar mechanisms */ #define PG_external (XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL << PG_mode_shift) +#else +#define PG_refcounts 0 +#define PG_translate 0 +#define PG_external 0 +#endif +/* Enable log dirty mode */ +#define PG_log_dirty (XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY << PG_mode_shift) /* All paging modes. */ #define PG_MASK (PG_refcounts | PG_log_dirty | PG_translate | PG_external) -- 2.39.5