diff mbox

[Xen-devel,v4,11/21] xen/passthrough: rework hwdom_pvh_reqs to use it also on ARM

Message ID 1398172475-27873-12-git-send-email-julien.grall@linaro.org
State Superseded, archived
Headers show

Commit Message

Julien Grall April 22, 2014, 1:14 p.m. UTC
Hardware domain on ARM will have the same requirements as hwdom 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 <julien.grall@linaro.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Cc: Xiantao Zhang <xiantao.zhang@intel.com>

---
    Changes in v4:
        - Rebase on the latest staging (hwdom series was pushed)
        - Remove is_phv_domain bits ... and update the next patch
       (should be #7) to create in new function arch_iommu_check_dom0_reqs.
        - Update printed message to be more readable
    Changes in v2:
        - IOMMU can be disabled on ARM if the platform doesn't have
        IOMMU.
---
 xen/drivers/passthrough/iommu.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Comments

Ian Campbell April 28, 2014, 1:57 p.m. UTC | #1
On Tue, 2014-04-22 at 14:14 +0100, Julien Grall wrote:
> Hardware domain on ARM will have the same requirements as hwdom 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 <julien.grall@linaro.org>
> Acked-by: Jan Beulich <jbeulich@suse.com>
> Cc: Xiantao Zhang <xiantao.zhang@intel.com>

Acked-by: Ian Campbell <ian.campbell@citrix.com>

> 
> ---
>     Changes in v4:
>         - Rebase on the latest staging (hwdom series was pushed)
>         - Remove is_phv_domain bits ... and update the next patch
>        (should be #7) to create in new function arch_iommu_check_dom0_reqs.
>         - Update printed message to be more readable
>     Changes in v2:
>         - IOMMU can be disabled on ARM if the platform doesn't have
>         IOMMU.
> ---
>  xen/drivers/passthrough/iommu.c |   11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
> index 96a79ce..ccb354d 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 void __hwdom_init check_hwdom_pvh_reqs(struct domain *d)
> +static void __hwdom_init check_hwdom_reqs(struct domain *d)
>  {
> +    if ( !paging_mode_translate(d) )
> +        return;
> +
>      if ( !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 paging translated mode, dom0-passthrough must not be "
> +              "enabled\n");
>  
>      iommu_dom0_strict = 1;
>  }
> @@ -145,8 +149,7 @@ void __hwdom_init iommu_hwdom_init(struct domain *d)
>  {
>      struct hvm_iommu *hd = domain_hvm_iommu(d);
>  
> -    if ( is_pvh_domain(d) )
> -        check_hwdom_pvh_reqs(d);
> +    check_hwdom_reqs(d);
>  
>      if ( !iommu_enabled )
>          return;
diff mbox

Patch

diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 96a79ce..ccb354d 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 void __hwdom_init check_hwdom_pvh_reqs(struct domain *d)
+static void __hwdom_init check_hwdom_reqs(struct domain *d)
 {
+    if ( !paging_mode_translate(d) )
+        return;
+
     if ( !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 paging translated mode, dom0-passthrough must not be "
+              "enabled\n");
 
     iommu_dom0_strict = 1;
 }
@@ -145,8 +149,7 @@  void __hwdom_init iommu_hwdom_init(struct domain *d)
 {
     struct hvm_iommu *hd = domain_hvm_iommu(d);
 
-    if ( is_pvh_domain(d) )
-        check_hwdom_pvh_reqs(d);
+    check_hwdom_reqs(d);
 
     if ( !iommu_enabled )
         return;