From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tamas K Lengyel Subject: [PATCH for-4.5 v8 05/19] xen: Relocate set_access_required domctl into common Date: Tue, 23 Sep 2014 15:14:16 +0200 Message-ID: <1411478070-13836-6-git-send-email-tklengyel@sec.in.tum.de> References: <1411478070-13836-1-git-send-email-tklengyel@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1411478070-13836-1-git-send-email-tklengyel@sec.in.tum.de> 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.xen.org Cc: ian.campbell@citrix.com, tim@xen.org, julien.grall@linaro.org, ian.jackson@eu.citrix.com, stefano.stabellini@citrix.com, andres@lagarcavilla.org, jbeulich@suse.com, dgdegra@tycho.nsa.gov, Tamas K Lengyel List-Id: xen-devel@lists.xenproject.org Signed-off-by: Tamas K Lengyel Acked-by: Tim Deegan Acked-by: Jan Beulich --- v8: Remove superfluous paranthesis in macro get_hostp2m. --- xen/arch/x86/domctl.c | 14 -------------- xen/common/domctl.c | 15 +++++++++++++++ xen/include/asm-arm/p2m.h | 7 +++++++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 26a3ea1..8731e7f 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -1163,20 +1163,6 @@ long arch_do_domctl( break; #endif /* P2M_AUDIT */ - case XEN_DOMCTL_set_access_required: - { - struct p2m_domain* p2m; - - ret = -EPERM; - if ( current->domain == d ) - break; - - ret = 0; - p2m = p2m_get_hostp2m(d); - p2m->access_required = domctl->u.access_required.access_required; - } - break; - case XEN_DOMCTL_set_broken_page_p2m: { p2m_type_t pt; diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 1ad0729..329e535 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -1116,6 +1117,20 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) } break; + case XEN_DOMCTL_set_access_required: + { + struct p2m_domain* p2m; + + ret = -EPERM; + if ( current->domain == d ) + break; + + ret = 0; + p2m = p2m_get_hostp2m(d); + p2m->access_required = op->u.access_required.access_required; + } + break; + case XEN_DOMCTL_set_virq_handler: { uint32_t virq = op->u.set_virq_handler.virq; diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h index b64dd9a..12fe808 100644 --- a/xen/include/asm-arm/p2m.h +++ b/xen/include/asm-arm/p2m.h @@ -44,6 +44,10 @@ struct p2m_domain { * at each p2m tree level. */ unsigned long shattered[4]; } stats; + + /* If true, and an access fault comes in and there is no mem_event listener, + * pause domain. Otherwise, remove access restrictions. */ + bool_t access_required; }; /* List of possible type for each page in the p2m entry. @@ -208,6 +212,9 @@ int arch_grant_map_page_identity(struct domain *d, unsigned long frame, bool_t writeable); int arch_grant_unmap_page_identity(struct domain *d, unsigned long frame); +/* get host p2m table */ +#define p2m_get_hostp2m(d) (&(d)->arch.p2m) + #endif /* _XEN_P2M_H */ /* -- 2.1.0