From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mukesh Rathor Subject: [V9 PATCH 5/8] pvh dom0: make xsm_map_gmfn_foreign available for x86 Date: Tue, 15 Apr 2014 17:12:49 -0700 Message-ID: <1397607172-32065-6-git-send-email-mukesh.rathor@oracle.com> References: <1397607172-32065-1-git-send-email-mukesh.rathor@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WaDTb-0002q5-RR for xen-devel@lists.xenproject.org; Wed, 16 Apr 2014 00:13:20 +0000 In-Reply-To: <1397607172-32065-1-git-send-email-mukesh.rathor@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: George.Dunlap@eu.citrix.com, julien.grall@linaro.org, tim@xen.org, keir.xen@gmail.com, JBeulich@suse.com, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org In this patch we make xsm_map_gmfn_foreign available for x86 also. This is used in the next patch "pvh dom0: Add and remove foreign pages" in function p2m_add_foreign. Signed-off-by: Mukesh Rathor --- xen/include/xsm/dummy.h | 14 ++++++-------- xen/include/xsm/xsm.h | 16 ++++++---------- xen/xsm/dummy.c | 4 +--- xen/xsm/flask/hooks.c | 18 ++++++------------ 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index e722155..c3be99a 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -477,6 +477,12 @@ static XSM_INLINE int xsm_remove_from_physmap(XSM_DEFAULT_ARG struct domain *d1, return xsm_default_action(action, d1, d2); } +static XSM_INLINE int xsm_map_gmfn_foreign(XSM_DEFAULT_ARG struct domain *d, struct domain *t) +{ + XSM_ASSERT_ACTION(XSM_TARGET); + return xsm_default_action(action, d, t); +} + static XSM_INLINE int xsm_hvm_param(XSM_DEFAULT_ARG struct domain *d, unsigned long op) { XSM_ASSERT_ACTION(XSM_TARGET); @@ -624,11 +630,3 @@ static XSM_INLINE int xsm_ioport_mapping(XSM_DEFAULT_ARG struct domain *d, uint3 } #endif /* CONFIG_X86 */ - -#ifdef CONFIG_ARM -static XSM_INLINE int xsm_map_gmfn_foreign(XSM_DEFAULT_ARG struct domain *d, struct domain *t) -{ - XSM_ASSERT_ACTION(XSM_TARGET); - return xsm_default_action(action, d, t); -} -#endif diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index 2cd3a3b..330d5d2 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -91,6 +91,7 @@ struct xsm_operations { int (*memory_pin_page) (struct domain *d1, struct domain *d2, struct page_info *page); int (*add_to_physmap) (struct domain *d1, struct domain *d2); int (*remove_from_physmap) (struct domain *d1, struct domain *d2); + int (*map_gmfn_foreign) (struct domain *d, struct domain *t); int (*claim_pages) (struct domain *d); int (*console_io) (struct domain *d, int cmd); @@ -166,9 +167,6 @@ struct xsm_operations { int (*ioport_permission) (struct domain *d, uint32_t s, uint32_t e, uint8_t allow); int (*ioport_mapping) (struct domain *d, uint32_t s, uint32_t e, uint8_t allow); #endif -#ifdef CONFIG_ARM - int (*map_gmfn_foreign) (struct domain *d, struct domain *t); -#endif }; #ifdef XSM_ENABLE @@ -354,6 +352,11 @@ static inline int xsm_remove_from_physmap(xsm_default_t def, struct domain *d1, return xsm_ops->remove_from_physmap(d1, d2); } +static inline int xsm_map_gmfn_foreign (xsm_default_t def, struct domain *d, struct domain *t) +{ + return xsm_ops->map_gmfn_foreign(d, t); +} + static inline int xsm_claim_pages(xsm_default_t def, struct domain *d) { return xsm_ops->claim_pages(d); @@ -634,13 +637,6 @@ static inline int xsm_ioport_mapping (xsm_default_t def, struct domain *d, uint3 } #endif /* CONFIG_X86 */ -#ifdef CONFIG_ARM -static inline int xsm_map_gmfn_foreign (xsm_default_t def, struct domain *d, struct domain *t) -{ - return xsm_ops->map_gmfn_foreign(d, t); -} -#endif /* CONFIG_ARM */ - #endif /* XSM_NO_WRAPPERS */ #ifdef CONFIG_MULTIBOOT diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c index b79e10f..792a7fa 100644 --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -112,6 +112,7 @@ void xsm_fixup_ops (struct xsm_operations *ops) set_to_dummy_if_null(ops, add_to_physmap); set_to_dummy_if_null(ops, remove_from_physmap); + set_to_dummy_if_null(ops, map_gmfn_foreign); #ifdef CONFIG_X86 set_to_dummy_if_null(ops, do_mca); @@ -136,7 +137,4 @@ void xsm_fixup_ops (struct xsm_operations *ops) set_to_dummy_if_null(ops, ioport_permission); set_to_dummy_if_null(ops, ioport_mapping); #endif -#ifdef CONFIG_ARM - set_to_dummy_if_null(ops, map_gmfn_foreign); -#endif } diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 4ce31c9..9a6b199 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1078,6 +1078,11 @@ static int flask_remove_from_physmap(struct domain *d1, struct domain *d2) return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__PHYSMAP); } +static int flask_map_gmfn_foreign(struct domain *d, struct domain *t) +{ + return domain_has_perm(d, t, SECCLASS_MMU, MMU__MAP_READ | MMU__MAP_WRITE); +} + static int flask_hvm_param(struct domain *d, unsigned long op) { u32 perm; @@ -1460,13 +1465,6 @@ static int flask_unbind_pt_irq (struct domain *d, struct xen_domctl_bind_pt_irq } #endif /* CONFIG_X86 */ -#ifdef CONFIG_ARM -static int flask_map_gmfn_foreign(struct domain *d, struct domain *t) -{ - return domain_has_perm(d, t, SECCLASS_MMU, MMU__MAP_READ | MMU__MAP_WRITE); -} -#endif - long do_flask_op(XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_flask_op); int compat_flask_op(XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_flask_op); @@ -1548,7 +1546,7 @@ static struct xsm_operations flask_ops = { .add_to_physmap = flask_add_to_physmap, .remove_from_physmap = flask_remove_from_physmap, - + .map_gmfn_foreign = flask_map_gmfn_foreign, #if defined(HAS_PASSTHROUGH) && defined(HAS_PCI) .get_device_group = flask_get_device_group, @@ -1580,10 +1578,6 @@ static struct xsm_operations flask_ops = { .ioport_permission = flask_ioport_permission, .ioport_mapping = flask_ioport_mapping, #endif - -#ifdef CONFIG_ARM - .map_gmfn_foreign = flask_map_gmfn_foreign, -#endif }; static __init int flask_init(void) -- 1.8.3.1