[PATCH 12/24] x86/mm: get_page_from_l1e() is PV-or-shadow-only
Jan Beulich <[email protected]> Tue, 28 Jul 2026 15:18:52 +0200
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <[email protected]> |
Otherwise the function is unreachable, violating MISRA C:2012 rule 2.1. With the function compiled out, its dedicated XSM hook also becomes unreachable, so it is similarly guarded. Signed-off-by: Jan Beulich <[email protected]> --- It feels suspicious that the .priv_mapping() check is used for HVM guests in shadow mode, but not for ones in HAP mode. --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -837,6 +837,8 @@ static int cf_check print_mmio_emul_rang } #endif +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) + /* * get_page_from_l1e returns: * 0 => success (page not present also counts as such) @@ -1038,6 +1040,8 @@ get_page_from_l1e( return -EBUSY; } +#endif /* CONFIG_PV || CONFIG_SHADOW_PAGING */ + /* * The following flags are used to specify behavior of various get and * put commands. The first is also stored in page->partial_flags to --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -705,12 +705,14 @@ static XSM_INLINE int cf_check xsm_updat #endif /* CONFIG_PV */ +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) static XSM_INLINE int cf_check xsm_priv_mapping( XSM_DEFAULT_ARG struct domain *d, struct domain *t) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, t); } +#endif static XSM_INLINE int cf_check xsm_ioport_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, uint8_t allow) --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -141,7 +141,9 @@ XSM_HOOK(int, mmu_update, struct domain XSM_HOOK(int, mmuext_op, struct domain *, struct domain *) XSM_HOOK(int, update_va_mapping, struct domain *, struct domain *, l1_pgentry_t) #endif /* CONFIG_PV */ +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) XSM_HOOK(int, priv_mapping, struct domain *, struct domain *) +#endif XSM_HOOK(int, ioport_permission, struct domain *, uint32_t, uint32_t, uint8_t) XSM_HOOK(int, ioport_mapping, struct domain *, uint32_t, uint32_t, uint8_t) XSM_HOOK(int, pmu_op, struct domain *, unsigned int) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1828,10 +1828,12 @@ static int cf_check flask_update_va_mapp #endif /* CONFIG_PV */ +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) static int cf_check flask_priv_mapping(struct domain *d, struct domain *t) { return domain_has_perm(d, t, SECCLASS_MMU, MMU__TARGET_HACK); } +#endif static int cf_check flask_pmu_op(struct domain *d, unsigned int op) {