[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 11/19] xen/sysctl: wrap around XEN_SYSCTL_page_offline_op
On Wed, 12 Mar 2025, Penny Zheng wrote: > 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.Zheng@xxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > 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 >
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |