From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v3 05/13] xen/passthrough: rework dom0_pvh_reqs to use it also on ARM Date: Tue, 11 Mar 2014 15:49:51 +0000 Message-ID: <1394552999-14171-6-git-send-email-julien.grall@linaro.org> References: <1394552999-14171-1-git-send-email-julien.grall@linaro.org> 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 1WNOwf-0006of-8A for xen-devel@lists.xenproject.org; Tue, 11 Mar 2014 15:50:21 +0000 Received: by mail-wg0-f47.google.com with SMTP id x12so10170615wgg.18 for ; Tue, 11 Mar 2014 08:50:19 -0700 (PDT) In-Reply-To: <1394552999-14171-1-git-send-email-julien.grall@linaro.org> 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: stefano.stabellini@citrix.com, Julien Grall , tim@xen.org, ian.campbell@citrix.com, Xiantao Zhang List-Id: xen-devel@lists.xenproject.org DOM0 on ARM will have the same requirements as DOM0 PVH when iommu is enabled. Both PVH and ARM guest has paging mode translate enabled, so Xen can use it to know if it needs to check the requirements. Rename the function and remove "pvh" word in the panic message. Signed-off-by: Julien Grall Acked-by: Jan Beulich Cc: Xiantao Zhang --- Changes in v2: - IOMMU can be disabled on ARM if the platform doesn't have IOMMU. --- xen/drivers/passthrough/iommu.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c index c70165a..3c63f87 100644 --- a/xen/drivers/passthrough/iommu.c +++ b/xen/drivers/passthrough/iommu.c @@ -130,13 +130,17 @@ int iommu_domain_init(struct domain *d) return hd->platform_ops->init(d); } -static __init void check_dom0_pvh_reqs(struct domain *d) +static __init void check_dom0_reqs(struct domain *d) { - if ( !iommu_enabled ) + if ( !paging_mode_translate(d) ) + return; + + if ( is_pvh_domain(d) && !iommu_enabled ) panic("Presently, iommu must be enabled for pvh dom0\n"); if ( iommu_passthrough ) - panic("For pvh dom0, dom0-passthrough must not be enabled\n"); + panic("Dom0 uses translate paging mode, dom0-passthrough must not be " + "enabled\n"); iommu_dom0_strict = 1; } @@ -145,8 +149,7 @@ void __init iommu_dom0_init(struct domain *d) { struct hvm_iommu *hd = domain_hvm_iommu(d); - if ( is_pvh_domain(d) ) - check_dom0_pvh_reqs(d); + check_dom0_reqs(d); if ( !iommu_enabled ) return; -- 1.7.10.4