From patchwork Wed Aug 9 20:34:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "lan,Tianyu" X-Patchwork-Id: 9892647 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 3485960236 for ; Thu, 10 Aug 2017 02:43:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1B76A28173 for ; Thu, 10 Aug 2017 02:43:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1088028174; Thu, 10 Aug 2017 02:43:58 +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=-2.7 required=2.0 tests=BAYES_00, DATE_IN_PAST_06_12, 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 AEA4627CF9 for ; Thu, 10 Aug 2017 02:43:57 +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 1dfdPi-0001CG-SS; Thu, 10 Aug 2017 02:41:34 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dfdPh-0001B2-KF for xen-devel@lists.xen.org; Thu, 10 Aug 2017 02:41:33 +0000 Received: from [193.109.254.147] by server-3.bemta-6.messagelabs.com id D4/C8-03044-CD7CB895; Thu, 10 Aug 2017 02:41:32 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJLMWRWlGSWpSXmKPExsVywNykWPfO8e5 Ig/1nRCyWfFzM4sDocXT3b6YAxijWzLyk/IoE1oxd76+wFPTwVyz51czYwHiAq4uRk0NIYBqj xM9bviC2hACvxJFlM1ghbH+Jzlt7WLoYuYBqOhglPj35wAaSYBNQlzixeCIjiC0iIC1x7fNlR pAiZoGrjBKnt81n7mLk4BAG6r7ZIQBisgioSny94ApSzivgKrFw5mWo+QoSUx6+ZwaxOYHiU7 dsZYK4x0Vi3fJpjBMYeRcwMqxi1ChOLSpLLdI1NNRLKspMzyjJTczM0TU0MNPLTS0uTkxPzUl MKtZLzs/dxAgMBgYg2MH4aVnAIUZJDiYlUd6Ohu5IIb6k/JTKjMTijPii0pzU4kOMMhwcShK8 3ceAcoJFqempFWmZOcCwhElLcPAoifAagaR5iwsSc4sz0yFSpxh1OV5N+P+NSYglLz8vVUqcV xekSACkKKM0D24ELEYuMcpKCfMyAh0lxFOQWpSbWYIq/4pRnINRSZi3AmQKT2ZeCdymV0BHMA EdEeHbCXJESSJCSqqBUeU8S3OEeOvs2C1lekI7Zef4fVVPez9XZon7lpBj1ntPNiy40K6dd+e f9NRlVy53PzJc+2vek2vPXuVvuXy5Ii5EwyTy84J15+VcPddODnL2eurxbV6kwkHhFy56BrNZ u+z2Jx+Zrpf3+ubGj9rrHO8tdJ/Lc+7ha+G41Y+/63tMXpkS37NraZMSS3FGoqEWc1FxIgCYs R1ujAIAAA== X-Env-Sender: tianyu.lan@intel.com X-Msg-Ref: server-6.tower-27.messagelabs.com!1502332890!111305155!1 X-Originating-IP: [192.55.52.115] X-SpamReason: No, hits=1.3 required=7.0 tests=BODY_RANDOM_LONG, DATE_IN_PAST_06_12 X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 28071 invoked from network); 10 Aug 2017 02:41:32 -0000 Received: from mga14.intel.com (HELO mga14.intel.com) (192.55.52.115) by server-6.tower-27.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 10 Aug 2017 02:41:32 -0000 Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Aug 2017 19:41:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,349,1498546800"; d="scan'208";a="117459409" Received: from sky-ws.sh.intel.com (HELO localhost) ([10.239.48.141]) by orsmga004.jf.intel.com with ESMTP; 09 Aug 2017 19:41:27 -0700 From: Lan Tianyu To: xen-devel@lists.xen.org Date: Wed, 9 Aug 2017 16:34:11 -0400 Message-Id: <1502310866-10450-11-git-send-email-tianyu.lan@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1502310866-10450-1-git-send-email-tianyu.lan@intel.com> References: <1502310866-10450-1-git-send-email-tianyu.lan@intel.com> Cc: Lan Tianyu , kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, Chao Gao Subject: [Xen-devel] [PATCH V2 10/25] tools/libxl: create vIOMMU during domain construction 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 From: Chao Gao If guest is configured to have a vIOMMU, create it during domain construction. Signed-off-by: Chao Gao Signed-off-by: Lan Tianyu --- tools/libxl/libxl_x86.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 455f6f0..ace20e5 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -341,8 +341,36 @@ int libxl__arch_domain_create(libxl__gc *gc, libxl_domain_config *d_config, if (d_config->b_info.type == LIBXL_DOMAIN_TYPE_HVM) { unsigned long shadow = DIV_ROUNDUP(d_config->b_info.shadow_memkb, 1024); + libxl_viommu_info *viommu = &d_config->b_info.viommu; + xc_shadow_control(ctx->xch, domid, XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION, NULL, 0, &shadow, 0, NULL); + + /* Check supported capbilities and create viommu */ + if (viommu->type) { + uint32_t id; + uint64_t cap; + + if (xc_viommu_query_cap(ctx->xch, domid, viommu->type, &cap)) { + LOGED(ERROR, domid, "failed to query vIOMMU's capabilities"); + ret = ERROR_FAIL; + goto out; + } + + if ((cap & viommu->cap) != viommu->cap) { + LOGED(ERROR, domid, "vIOMMU: Unsupported cap %"PRIu64, cap); + ret = ERROR_FAIL; + goto out; + } + + ret = xc_viommu_create(ctx->xch, domid, viommu->type, + viommu->base_addr, viommu->len, viommu->cap, &id); + if (ret) { + LOGED(ERROR, domid, "create vIOMMU fail"); + ret = ERROR_FAIL; + goto out; + } + } } if (d_config->c_info.type == LIBXL_DOMAIN_TYPE_PV &&