From patchwork Mon Jul 4 11:45:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergej Proskurin X-Patchwork-Id: 9212361 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6416360572 for ; Mon, 4 Jul 2016 11:48:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 554A0286DF for ; Mon, 4 Jul 2016 11:48:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4A2DB286E3; Mon, 4 Jul 2016 11:48:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E6A14286DF for ; Mon, 4 Jul 2016 11:48:45 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bK2LO-0008WS-AH; Mon, 04 Jul 2016 11:47:18 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bK2Kk-000848-UT for xen-devel@lists.xenproject.org; Mon, 04 Jul 2016 11:46:39 +0000 Received: from [85.158.137.68] by server-14.bemta-3.messagelabs.com id CF/D4-07949-E9C4A775; Mon, 04 Jul 2016 11:46:38 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrBLMWRWlGSWpSXmKPExsXSPJ+BQ3euT1W 4wYX18hbft0xmcmD0OPzhCksAYxRrZl5SfkUCa8acI+2MBVcEKiZePMLYwLiMt4uRi0NIYCOj xMSp71ggnOWMEvcm/WPtYuTkYBMwkJjyeiWYLSKgJHFv1WQmkCJmgSagosYHbCAJYQF7idlHT zGB2CwCqhKtGz6AxXkFbCUajtwBa5YQkJOYvPgSI4jNCRLv+ARWLyRgI9F99zHbBEbuBYwMqx g1ilOLylKLdI1M9ZKKMtMzSnITM3N0DQ2M9XJTi4sT01NzEpOK9ZLzczcxAn1cz8DAuIOx9YT fIUZJDiYlUd5096pwIb6k/JTKjMTijPii0pzU4kOMMhwcShK8bN5AOcGi1PTUirTMHGCwwaQl OHiURHhNQNK8xQWJucWZ6RCpU4yKUuK8T7yAEgIgiYzSPLg2WIBfYpSVEuZlZGBgEOIpSC3Kz SxBlX/FKM7BqCTMGwYyniczrwRu+iugxUxAi1ljy0EWlyQipKQaGFXTMv/NV5hpcm3poYOv3i hdeR6nLi1ifTudr3jOpvo7s2vu65SnFfBvuPHsn7fXSUvx74e3T53xvcqjwENJ/mDT/yMTv85 1Svqx7qPcBIvpTCLt/hueHDxxR9naRnebeRPzJibbZccVemauOvBmi7WFsa1ebvZ8+8VZ0n9a 8m6/nsf/VT918wklluKMREMt5qLiRAD9b1ovawIAAA== X-Env-Sender: proskurin@sec.in.tum.de X-Msg-Ref: server-7.tower-31.messagelabs.com!1467632797!41190843!1 X-Originating-IP: [131.159.0.8] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.46; banners=-,-,- X-VirusChecked: Checked Received: (qmail 21021 invoked from network); 4 Jul 2016 11:46:37 -0000 Received: from mail-out1.informatik.tu-muenchen.de (HELO mail-out1.informatik.tu-muenchen.de) (131.159.0.8) by server-7.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 4 Jul 2016 11:46:37 -0000 Received: from files.sec.in.tum.de (files.sec.in.tum.de [131.159.50.1]) by services.sec.in.tum.de (Postfix) with ESMTP id 15D5E100D1FB0; Mon, 4 Jul 2016 13:46:37 +0200 (CEST) Received: from ker.sec.in.tum.de (ker.sec.in.tum.de [131.159.50.36]) by files.sec.in.tum.de (Postfix) with ESMTP id 09B452EEF; Mon, 4 Jul 2016 13:46:37 +0200 (CEST) From: Sergej Proskurin To: xen-devel@lists.xenproject.org Date: Mon, 4 Jul 2016 13:45:54 +0200 Message-Id: <20160704114605.10086-26-proskurin@sec.in.tum.de> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20160704114605.10086-1-proskurin@sec.in.tum.de> References: <20160704114605.10086-1-proskurin@sec.in.tum.de> X-Mailman-Approved-At: Mon, 04 Jul 2016 11:47:11 +0000 Cc: Sergej Proskurin , Julien Grall , Stefano Stabellini Subject: [Xen-devel] [PATCH 07/18] arm/altp2m: Add HVMOP_altp2m_create_p2m. X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Sergej Proskurin --- Cc: Stefano Stabellini Cc: Julien Grall --- xen/arch/arm/hvm.c | 3 ++- xen/arch/arm/p2m.c | 23 +++++++++++++++++++++++ xen/include/asm-arm/p2m.h | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c index cb90a55..005d7c6 100644 --- a/xen/arch/arm/hvm.c +++ b/xen/arch/arm/hvm.c @@ -140,7 +140,8 @@ static int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg) break; case HVMOP_altp2m_create_p2m: - rc = -EOPNOTSUPP; + if ( !(rc = p2m_init_next_altp2m(d, &a.u.view.view)) ) + rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0; break; case HVMOP_altp2m_destroy_p2m: diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index ae789e6..6c41b98 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -2110,6 +2110,29 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx) return rc; } +int p2m_init_next_altp2m(struct domain *d, uint16_t *idx) +{ + int rc = -EINVAL; + unsigned int i; + + altp2m_lock(d); + + for ( i = 0; i < MAX_ALTP2M; i++ ) + { + if ( d->arch.altp2m_vttbr[i] != INVALID_MFN ) + continue; + + p2m_init_altp2m_helper(d, i); + *idx = i; + rc = 0; + + break; + } + + altp2m_unlock(d); + return rc; +} + /* Reset this p2m table to be empty */ static void p2m_flush_table(struct p2m_domain *p2m) { diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h index 51d784f..c51532a 100644 --- a/xen/include/asm-arm/p2m.h +++ b/xen/include/asm-arm/p2m.h @@ -137,6 +137,9 @@ void p2m_flush_altp2m(struct domain *d); /* Make a specific alternate p2m valid */ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx); +/* Find an available alternate p2m and make it valid */ +int p2m_init_next_altp2m(struct domain *d, uint16_t *idx); + #define p2m_is_foreign(_t) ((_t) == p2m_map_foreign) #define p2m_is_ram(_t) ((_t) == p2m_ram_rw || (_t) == p2m_ram_ro)