[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH V2 6/8] xen/vm_event: Decouple vm_event and mem_access.
The vm_event subsystem has been artifically tied to the presence of mem_access. While mem_access does depend on vm_event, vm_event is an entirely independent subsystem that can be used for arbitrary function-offloading to helper apps in domains. This patch removes the dependency that mem_access needs to be supported in order to enable vm_event. Signed-off-by: Tamas K Lengyel <tamas.lengyel@xxxxxxxxxxxx> --- xen/common/Makefile | 2 +- xen/include/xen/vm_event.h | 56 ---------------------------------------------- xen/include/xsm/dummy.h | 2 -- xen/include/xsm/xsm.h | 2 -- xen/xsm/dummy.c | 2 -- xen/xsm/flask/hooks.c | 32 +++++++++++--------------- 6 files changed, 14 insertions(+), 82 deletions(-) diff --git a/xen/common/Makefile b/xen/common/Makefile index f1b73a3..2ccf0bb 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -52,9 +52,9 @@ obj-y += tmem_xen.o obj-y += radix-tree.o obj-y += rbtree.o obj-y += lzo.o +obj-y += vm_event.o obj-$(HAS_PDX) += pdx.o obj-$(HAS_MEM_ACCESS) += mem_access.o -obj-$(HAS_MEM_ACCESS) += vm_event.o obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o) diff --git a/xen/include/xen/vm_event.h b/xen/include/xen/vm_event.h index 988ea42..477ef7e 100644 --- a/xen/include/xen/vm_event.h +++ b/xen/include/xen/vm_event.h @@ -26,8 +26,6 @@ #include <xen/sched.h> -#ifdef HAS_MEM_ACCESS - /* Clean up on domain destruction */ void vm_event_cleanup(struct domain *d); @@ -76,60 +74,6 @@ int vm_event_domctl(struct domain *d, xen_domctl_vm_event_op_t *mec, void vm_event_vcpu_pause(struct vcpu *v); void vm_event_vcpu_unpause(struct vcpu *v); -#else - -static inline void vm_event_cleanup(struct domain *d) {} - -static inline bool_t vm_event_check_ring(struct vm_event_domain *med) -{ - return 0; -} - -static inline int vm_event_claim_slot(struct domain *d, - struct vm_event_domain *med) -{ - return -ENOSYS; -} - -static inline int vm_event_claim_slot_nosleep(struct domain *d, - struct vm_event_domain *med) -{ - return -ENOSYS; -} - -static inline -void vm_event_cancel_slot(struct domain *d, struct vm_event_domain *med) -{} - -static inline -void vm_event_put_request(struct domain *d, struct vm_event_domain *med, - vm_event_request_t *req) -{} - -static inline -int vm_event_get_response(struct domain *d, struct vm_event_domain *med, - vm_event_response_t *rsp) -{ - return -ENOSYS; -} - -static inline int do_vm_event_op(int op, uint32_t domain, void *arg) -{ - return -ENOSYS; -} - -static inline -int vm_event_domctl(struct domain *d, xen_domctl_vm_event_op_t *mec, - XEN_GUEST_HANDLE_PARAM(void) u_domctl) -{ - return -ENOSYS; -} - -static inline void vm_event_vcpu_pause(struct vcpu *v) {} -static inline void vm_event_vcpu_unpause(struct vcpu *v) {} - -#endif /* HAS_MEM_ACCESS */ - #endif /* __VM_EVENT_H__ */ diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index 4227093..50ee929 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -513,7 +513,6 @@ static XSM_INLINE int xsm_hvm_param_nested(XSM_DEFAULT_ARG struct domain *d) return xsm_default_action(action, current->domain, d); } -#ifdef HAS_MEM_ACCESS static XSM_INLINE int xsm_vm_event_control(XSM_DEFAULT_ARG struct domain *d, int mode, int op) { XSM_ASSERT_ACTION(XSM_PRIV); @@ -525,7 +524,6 @@ static XSM_INLINE int xsm_vm_event_op(XSM_DEFAULT_ARG struct domain *d, int op) XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); } -#endif #ifdef CONFIG_X86 static XSM_INLINE int xsm_do_mca(XSM_DEFAULT_VOID) diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index cff9d35..61c5acc 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -141,10 +141,8 @@ struct xsm_operations { int (*hvm_param_nested) (struct domain *d); int (*get_vnumainfo) (struct domain *d); -#ifdef HAS_MEM_ACCESS int (*vm_event_control) (struct domain *d, int mode, int op); int (*vm_event_op) (struct domain *d, int op); -#endif #ifdef CONFIG_X86 int (*do_mca) (void); diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c index 25fca68..6d12d32 100644 --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -118,10 +118,8 @@ void xsm_fixup_ops (struct xsm_operations *ops) set_to_dummy_if_null(ops, remove_from_physmap); set_to_dummy_if_null(ops, map_gmfn_foreign); -#ifdef HAS_MEM_ACCESS set_to_dummy_if_null(ops, vm_event_control); set_to_dummy_if_null(ops, vm_event_op); -#endif #ifdef CONFIG_X86 set_to_dummy_if_null(ops, do_mca); diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index c419543..5008b79 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -577,9 +577,7 @@ static int flask_domctl(struct domain *d, int cmd) case XEN_DOMCTL_iomem_permission: case XEN_DOMCTL_memory_mapping: case XEN_DOMCTL_set_target: -#ifdef HAS_MEM_ACCESS case XEN_DOMCTL_vm_event_op: -#endif #ifdef CONFIG_X86 /* These have individual XSM hooks (arch/x86/domctl.c) */ case XEN_DOMCTL_shadow_op: @@ -1136,6 +1134,16 @@ static int flask_hvm_param_nested(struct domain *d) return current_has_perm(d, SECCLASS_HVM, HVM__NESTED); } +static int flask_vm_event_control(struct domain *d, int mode, int op) +{ + return current_has_perm(d, SECCLASS_HVM, HVM__VM_EVENT); +} + +static int flask_vm_event_op(struct domain *d, int op) +{ + return current_has_perm(d, SECCLASS_HVM, HVM__VM_EVENT); +} + #if defined(HAS_PASSTHROUGH) && defined(HAS_PCI) static int flask_get_device_group(uint32_t machine_bdf) { @@ -1202,18 +1210,6 @@ static int flask_deassign_device(struct domain *d, uint32_t machine_bdf) } #endif /* HAS_PASSTHROUGH && HAS_PCI */ -#ifdef HAS_MEM_ACCESS -static int flask_vm_event_control(struct domain *d, int mode, int op) -{ - return current_has_perm(d, SECCLASS_HVM, HVM__VM_EVENT); -} - -static int flask_vm_event_op(struct domain *d, int op) -{ - return current_has_perm(d, SECCLASS_HVM, HVM__VM_EVENT); -} -#endif /* HAS_MEM_ACCESS */ - #ifdef CONFIG_X86 static int flask_do_mca(void) { @@ -1581,6 +1577,9 @@ static struct xsm_operations flask_ops = { .do_xsm_op = do_flask_op, .get_vnumainfo = flask_get_vnumainfo, + .vm_event_control = flask_vm_event_control, + .vm_event_op = flask_vm_event_op, + #ifdef CONFIG_COMPAT .do_compat_op = compat_flask_op, #endif @@ -1596,11 +1595,6 @@ static struct xsm_operations flask_ops = { .deassign_device = flask_deassign_device, #endif -#ifdef HAS_MEM_ACCESS - .vm_event_control = flask_vm_event_control, - .vm_event_op = flask_vm_event_op, -#endif - #ifdef CONFIG_X86 .do_mca = flask_do_mca, .shadow_control = flask_shadow_control, -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |