The following functions are only to deal with XEN_SYSCTL_page_offline_op, then shall be wrapped: - xsm_page_offline - online_page - query_page_offline
Signed-off-by: Penny Zheng <penny.zh...@amd.com> --- xen/common/page_alloc.c | 2 ++ xen/include/xen/mm.h | 13 ++++++++++++- xen/include/xsm/dummy.h | 7 +++++++ xen/include/xsm/xsm.h | 9 +++++++++ xen/xsm/dummy.c | 2 ++ xen/xsm/flask/hooks.c | 6 ++++++ 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index b5ec4bda7d..7476d37238 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1759,6 +1759,7 @@ int offline_page(mfn_t mfn, int broken, uint32_t *status) return 0; } +#ifdef CONFIG_SYSCTL /* * Online the memory. * The caller should make sure end_pfn <= max_page, @@ -1843,6 +1844,7 @@ int query_page_offline(mfn_t mfn, uint32_t *status) return 0; } +#endif /* CONFIG_SYSCTL */ /* * This function should only be called with valid pages from the same NUMA diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index ae1c48a615..86bbb15890 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -144,9 +144,20 @@ unsigned long avail_domheap_pages(void); unsigned long avail_node_heap_pages(unsigned int nodeid); #define alloc_domheap_page(d,f) (alloc_domheap_pages(d,0,f)) #define free_domheap_page(p) (free_domheap_pages(p,0)) -int online_page(mfn_t mfn, uint32_t *status); int offline_page(mfn_t mfn, int broken, uint32_t *status); +#ifdef CONFIG_SYSCTL +int online_page(mfn_t mfn, uint32_t *status); int query_page_offline(mfn_t mfn, uint32_t *status); +#else +static inline int online_page(mfn_t mfn, uint32_t *status) +{ + return -EOPNOTSUPP; +} +static inline int query_page_offline(mfn_t mfn, uint32_t *status) +{ + return -EOPNOTSUPP; +} +#endif /* CONFIG_SYSCTL */ void heap_init_late(void); diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index 35d084aca7..5f89fc98fc 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -497,11 +497,18 @@ static XSM_INLINE int cf_check xsm_resource_setup_misc(XSM_DEFAULT_VOID) return xsm_default_action(action, current->domain, NULL); } +#ifdef CONFIG_SYSCTL static XSM_INLINE int cf_check xsm_page_offline(XSM_DEFAULT_ARG uint32_t cmd) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } +#else +static XSM_INLINE int cf_check xsm_page_offline(XSM_DEFAULT_ARG uint32_t cmd) +{ + return -EOPNOTSUPP; +} +#endif static XSM_INLINE int cf_check xsm_hypfs_op(XSM_DEFAULT_VOID) { diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index d322740de1..d6f27aa977 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -140,7 +140,9 @@ struct xsm_ops { int (*resource_setup_gsi)(int gsi); int (*resource_setup_misc)(void); +#ifdef CONFIG_SYSCTL int (*page_offline)(uint32_t cmd); +#endif int (*hypfs_op)(void); long (*do_xsm_op)(XEN_GUEST_HANDLE_PARAM(void) op); @@ -601,10 +603,17 @@ static inline int xsm_resource_setup_misc(xsm_default_t def) return alternative_call(xsm_ops.resource_setup_misc); } +#ifdef CONFIG_SYSCTL static inline int xsm_page_offline(xsm_default_t def, uint32_t cmd) { return alternative_call(xsm_ops.page_offline, cmd); } +#else +static inline int xsm_page_offline(xsm_default_t def, uint32_t cmd) +{ + return -EOPNOTSUPP; +} +#endif static inline int xsm_hypfs_op(xsm_default_t def) { diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c index 4c97db0c48..aa89ee5331 100644 --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -96,7 +96,9 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops = { .resource_setup_gsi = xsm_resource_setup_gsi, .resource_setup_misc = xsm_resource_setup_misc, +#ifdef CONFIG_SYSCTL .page_offline = xsm_page_offline, +#endif .hypfs_op = xsm_hypfs_op, .hvm_param = xsm_hvm_param, .hvm_param_altp2mhvm = xsm_hvm_param_altp2mhvm, diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 7c46657d97..9819cd407d 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1206,10 +1206,12 @@ static int cf_check flask_resource_unplug_core(void) return avc_current_has_perm(SECINITSID_DOMXEN, SECCLASS_RESOURCE, RESOURCE__UNPLUG, NULL); } +#ifdef CONFIG_SYSCTL static int flask_resource_use_core(void) { return avc_current_has_perm(SECINITSID_DOMXEN, SECCLASS_RESOURCE, RESOURCE__USE, NULL); } +#endif static int cf_check flask_resource_plug_pci(uint32_t machine_bdf) { @@ -1274,6 +1276,7 @@ static int cf_check flask_resource_setup_misc(void) return avc_current_has_perm(SECINITSID_XEN, SECCLASS_RESOURCE, RESOURCE__SETUP, NULL); } +#ifdef CONFIG_SYSCTL static inline int cf_check flask_page_offline(uint32_t cmd) { switch ( cmd ) @@ -1288,6 +1291,7 @@ static inline int cf_check flask_page_offline(uint32_t cmd) return avc_unknown_permission("page_offline", cmd); } } +#endif static inline int cf_check flask_hypfs_op(void) { @@ -1948,7 +1952,9 @@ static const struct xsm_ops __initconst_cf_clobber flask_ops = { .resource_setup_gsi = flask_resource_setup_gsi, .resource_setup_misc = flask_resource_setup_misc, +#ifdef CONFIG_SYSCTL .page_offline = flask_page_offline, +#endif .hypfs_op = flask_hypfs_op, .hvm_param = flask_hvm_param, .hvm_param_altp2mhvm = flask_hvm_param_altp2mhvm, -- 2.34.1