xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V6 0/3] libxl: arm: Make generic code independent of disk device
@ 2022-09-08  8:52 Viresh Kumar
  2022-09-08  8:52 ` [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params() Viresh Kumar
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Viresh Kumar @ 2022-09-08  8:52 UTC (permalink / raw)
  To: xen-devel
  Cc: Viresh Kumar, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Anthony PERARD

Hello,

This was earlier sent as part of a patch series [1] adding support for GPIO/I2C
virtio devices. The device specific patches would require some rework and
possibly several versions, and so this series separates out the generic
independent patches into a series of their own.

This series makes some of the generic code independent of the disk device, since
it can be used for other device types later on.

Rebased over staging branch from today.

V5->V6:
- Separated into a patch series of their own.
- Updated commit log of 1st patch to cover all changes.
- Rename make_virtio_mmio_node_simple() as make_virtio_mmio_node().
- New patch 3/3, separated code from device specific patch.

--
Viresh

Viresh Kumar (3):
  libxl: arm: Create alloc_virtio_mmio_params()
  libxl: arm: Split make_virtio_mmio_node()
  libxl: arm: make creation of iommu node independent of disk device

 tools/libs/light/libxl_arm.c | 83 +++++++++++++++++++++++++-----------
 1 file changed, 57 insertions(+), 26 deletions(-)

-- 
2.31.1.272.g89b43f80a514

--
Viresh

[1] https://lore.kernel.org/all/cover.1661159474.git.viresh.kumar@linaro.org/


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params()
  2022-09-08  8:52 [PATCH V6 0/3] libxl: arm: Make generic code independent of disk device Viresh Kumar
@ 2022-09-08  8:52 ` Viresh Kumar
  2022-09-09 13:19   ` Anthony PERARD
  2022-09-08  8:53 ` [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node() Viresh Kumar
  2022-09-08  8:53 ` [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device Viresh Kumar
  2 siblings, 1 reply; 15+ messages in thread
From: Viresh Kumar @ 2022-09-08  8:52 UTC (permalink / raw)
  To: xen-devel
  Cc: Viresh Kumar, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Anthony PERARD,
	Oleksandr Tyshchenko

In order to prepare for adding support for more device types, create a
separate routine to allocate base and irq for a device as the same code
will be required for other device types too.

Also move updates to virtio_irq and virtio_enabled out of the disk
device specific block, as they will depend on other device types too.

Suggested-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 tools/libs/light/libxl_arm.c | 47 +++++++++++++++++++++++++-----------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 1a3ac1646e94..cc30ba124918 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -48,6 +48,24 @@ static uint32_t alloc_virtio_mmio_irq(libxl__gc *gc, uint32_t *virtio_mmio_irq)
     return irq;
 }
 
+static int alloc_virtio_mmio_params(libxl__gc *gc, uint64_t *base,
+                                    uint32_t *irq, uint64_t *virtio_mmio_base,
+                                    uint32_t *virtio_mmio_irq)
+{
+    *base = alloc_virtio_mmio_base(gc, virtio_mmio_base);
+    if (!*base)
+        return ERROR_FAIL;
+
+    *irq = alloc_virtio_mmio_irq(gc, virtio_mmio_irq);
+    if (!*irq)
+        return ERROR_FAIL;
+
+    LOG(DEBUG, "Allocate Virtio MMIO params: IRQ %u BASE 0x%"PRIx64, *irq,
+        *base);
+
+    return 0;
+}
+
 static const char *gicv_to_string(libxl_gic_version gic_version)
 {
     switch (gic_version) {
@@ -70,6 +88,7 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     bool vuart_enabled = false, virtio_enabled = false;
     uint64_t virtio_mmio_base = GUEST_VIRTIO_MMIO_BASE;
     uint32_t virtio_mmio_irq = GUEST_VIRTIO_MMIO_SPI_FIRST;
+    int rc;
 
     /*
      * If pl011 vuart is enabled then increment the nr_spis to allow allocation
@@ -85,20 +104,12 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
         libxl_device_disk *disk = &d_config->disks[i];
 
         if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
-            disk->base = alloc_virtio_mmio_base(gc, &virtio_mmio_base);
-            if (!disk->base)
-                return ERROR_FAIL;
-
-            disk->irq = alloc_virtio_mmio_irq(gc, &virtio_mmio_irq);
-            if (!disk->irq)
-                return ERROR_FAIL;
-
-            if (virtio_irq < disk->irq)
-                virtio_irq = disk->irq;
-            virtio_enabled = true;
+            rc = alloc_virtio_mmio_params(gc, &disk->base, &disk->irq,
+                                          &virtio_mmio_base,
+                                          &virtio_mmio_irq);
 
-            LOG(DEBUG, "Allocate Virtio MMIO params for Vdev %s: IRQ %u BASE 0x%"PRIx64,
-                disk->vdev, disk->irq, disk->base);
+            if (rc)
+                return rc;
         }
     }
 
@@ -107,8 +118,16 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
      * present, make sure that we allocate enough SPIs for them.
      * The resulting "nr_spis" needs to cover the highest possible SPI.
      */
-    if (virtio_enabled)
+    if (virtio_mmio_irq != GUEST_VIRTIO_MMIO_SPI_FIRST) {
+        virtio_enabled = true;
+
+        /*
+         * Assumes that "virtio_mmio_irq" is the highest allocated irq, which is
+         * updated from alloc_virtio_mmio_irq() currently.
+         */
+        virtio_irq = virtio_mmio_irq - 1;
         nr_spis = max(nr_spis, virtio_irq - 32 + 1);
+    }
 
     for (i = 0; i < d_config->b_info.num_irqs; i++) {
         uint32_t irq = d_config->b_info.irqs[i];
-- 
2.31.1.272.g89b43f80a514



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node()
  2022-09-08  8:52 [PATCH V6 0/3] libxl: arm: Make generic code independent of disk device Viresh Kumar
  2022-09-08  8:52 ` [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params() Viresh Kumar
@ 2022-09-08  8:53 ` Viresh Kumar
  2022-09-09 13:21   ` Anthony PERARD
  2022-09-08  8:53 ` [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device Viresh Kumar
  2 siblings, 1 reply; 15+ messages in thread
From: Viresh Kumar @ 2022-09-08  8:53 UTC (permalink / raw)
  To: xen-devel
  Cc: Viresh Kumar, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Anthony PERARD,
	Oleksandr Tyshchenko

make_virtio_mmio_node() creates the DT node for simple MMIO devices
currently, i.e. the ones that don't require any additional properties.

In order to allow using it for other complex device types, split the
functionality into two, one where the fdt node isn't closed and the
other one to create a simple DT node.

Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 tools/libs/light/libxl_arm.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index cc30ba124918..55aee15c10b4 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -907,9 +907,9 @@ static int make_xen_iommu_node(libxl__gc *gc, void *fdt)
     return 0;
 }
 
-static int make_virtio_mmio_node(libxl__gc *gc, void *fdt,
-                                 uint64_t base, uint32_t irq,
-                                 uint32_t backend_domid)
+/* The caller is responsible to complete / close the fdt node */
+static int make_virtio_mmio_node_common(libxl__gc *gc, void *fdt, uint64_t base,
+                                        uint32_t irq, uint32_t backend_domid)
 {
     int res;
     gic_interrupt intr;
@@ -942,10 +942,18 @@ static int make_virtio_mmio_node(libxl__gc *gc, void *fdt,
         if (res) return res;
     }
 
-    res = fdt_end_node(fdt);
+    return res;
+}
+
+static int make_virtio_mmio_node(libxl__gc *gc, void *fdt, uint64_t base,
+                                 uint32_t irq, uint32_t backend_domid)
+{
+    int res;
+
+    res = make_virtio_mmio_node_common(gc, fdt, base, irq, backend_domid);
     if (res) return res;
 
-    return 0;
+    return fdt_end_node(fdt);
 }
 
 static const struct arch_info *get_arch_info(libxl__gc *gc,
-- 
2.31.1.272.g89b43f80a514



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-08  8:52 [PATCH V6 0/3] libxl: arm: Make generic code independent of disk device Viresh Kumar
  2022-09-08  8:52 ` [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params() Viresh Kumar
  2022-09-08  8:53 ` [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node() Viresh Kumar
@ 2022-09-08  8:53 ` Viresh Kumar
  2022-09-09 13:47   ` Anthony PERARD
  2022-09-09 14:43   ` [PATCH V6.1 " Viresh Kumar
  2 siblings, 2 replies; 15+ messages in thread
From: Viresh Kumar @ 2022-09-08  8:53 UTC (permalink / raw)
  To: xen-devel
  Cc: Viresh Kumar, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Anthony PERARD

The iommu node will be required for other virtio device types too, not
just disk device.

Move the call to make_xen_iommu_node(), out of the disk device specific
block and rename "iommu_created" variable to "iommu_needed", and set it
to true for virtio disk device.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 tools/libs/light/libxl_arm.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 55aee15c10b4..2637acafa358 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -1157,7 +1157,7 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
     size_t fdt_size = 0;
     int pfdt_size = 0;
     libxl_domain_build_info *const info = &d_config->b_info;
-    bool iommu_created;
+    bool iommu_needed;
     unsigned int i;
 
     const libxl_version_info *vers;
@@ -1265,22 +1265,26 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
         if (d_config->num_pcidevs)
             FDT( make_vpci_node(gc, fdt, ainfo, dom) );
 
-        iommu_created = false;
+        iommu_needed = false;
         for (i = 0; i < d_config->num_disks; i++) {
             libxl_device_disk *disk = &d_config->disks[i];
 
             if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
-                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID &&
-                    !iommu_created) {
-                    FDT( make_xen_iommu_node(gc, fdt) );
-                    iommu_created = true;
-                }
+                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID)
+                    iommu_needed = true;
 
                 FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq,
                                            disk->backend_domid) );
             }
         }
 
+        /*
+         * Note, this should be only called after creating all virtio-mmio
+         * device nodes
+         */
+        if (iommu_needed)
+            FDT( make_xen_iommu_node(gc, fdt) );
+
         if (pfdt)
             FDT( copy_partial_fdt(gc, fdt, pfdt) );
 
-- 
2.31.1.272.g89b43f80a514



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params()
  2022-09-08  8:52 ` [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params() Viresh Kumar
@ 2022-09-09 13:19   ` Anthony PERARD
  0 siblings, 0 replies; 15+ messages in thread
From: Anthony PERARD @ 2022-09-09 13:19 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Oleksandr Tyshchenko

On Thu, Sep 08, 2022 at 02:22:59PM +0530, Viresh Kumar wrote:
> In order to prepare for adding support for more device types, create a
> separate routine to allocate base and irq for a device as the same code
> will be required for other device types too.
> 
> Also move updates to virtio_irq and virtio_enabled out of the disk
> device specific block, as they will depend on other device types too.
> 
> Suggested-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node()
  2022-09-08  8:53 ` [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node() Viresh Kumar
@ 2022-09-09 13:21   ` Anthony PERARD
  0 siblings, 0 replies; 15+ messages in thread
From: Anthony PERARD @ 2022-09-09 13:21 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall, Oleksandr Tyshchenko

On Thu, Sep 08, 2022 at 02:23:00PM +0530, Viresh Kumar wrote:
> make_virtio_mmio_node() creates the DT node for simple MMIO devices
> currently, i.e. the ones that don't require any additional properties.
> 
> In order to allow using it for other complex device types, split the
> functionality into two, one where the fdt node isn't closed and the
> other one to create a simple DT node.
> 
> Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-08  8:53 ` [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device Viresh Kumar
@ 2022-09-09 13:47   ` Anthony PERARD
  2022-09-09 14:43   ` [PATCH V6.1 " Viresh Kumar
  1 sibling, 0 replies; 15+ messages in thread
From: Anthony PERARD @ 2022-09-09 13:47 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Oleksandr Tyshchenko,
	Wei Liu, Juergen Gross, Julien Grall

On Thu, Sep 08, 2022 at 02:23:01PM +0530, Viresh Kumar wrote:
> The iommu node will be required for other virtio device types too, not
> just disk device.
> 
> Move the call to make_xen_iommu_node(), out of the disk device specific
> block and rename "iommu_created" variable to "iommu_needed", and set it
> to true for virtio disk device.
> 
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  tools/libs/light/libxl_arm.c | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
> index 55aee15c10b4..2637acafa358 100644
> --- a/tools/libs/light/libxl_arm.c
> +++ b/tools/libs/light/libxl_arm.c
> @@ -1157,7 +1157,7 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
>      size_t fdt_size = 0;
>      int pfdt_size = 0;
>      libxl_domain_build_info *const info = &d_config->b_info;
> -    bool iommu_created;
> +    bool iommu_needed;
>      unsigned int i;
>  
>      const libxl_version_info *vers;
> @@ -1265,22 +1265,26 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
>          if (d_config->num_pcidevs)
>              FDT( make_vpci_node(gc, fdt, ainfo, dom) );
>  
> -        iommu_created = false;
> +        iommu_needed = false;

That variable could now be initialised at declaration rather than in
the middle of the code, as it could be used for more than just
virtio-disk.

>          for (i = 0; i < d_config->num_disks; i++) {
>              libxl_device_disk *disk = &d_config->disks[i];
>  
>              if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
> -                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID &&
> -                    !iommu_created) {
> -                    FDT( make_xen_iommu_node(gc, fdt) );
> -                    iommu_created = true;
> -                }
> +                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID)
> +                    iommu_needed = true;
>  
>                  FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq,
>                                             disk->backend_domid) );
>              }
>          }
>  
> +        /*
> +         * Note, this should be only called after creating all virtio-mmio
> +         * device nodes

I think this comment is confusing. Before this patch, it didn't seems to
matter that the node was created only after the first device. But the
comment seems to say that the node should only be created last. But it
seems that all that matter is that the node is only created once.
So maybe the comment is superfluous? Or we could comment that we will
create a single iommu node for all virtio-mmio node/device...


> +         */
> +        if (iommu_needed)
> +            FDT( make_xen_iommu_node(gc, fdt) );
> +
>          if (pfdt)
>              FDT( copy_partial_fdt(gc, fdt, pfdt) );
>  

Thanks,

-- 
Anthony PERARD


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-08  8:53 ` [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device Viresh Kumar
  2022-09-09 13:47   ` Anthony PERARD
@ 2022-09-09 14:43   ` Viresh Kumar
  2022-09-09 15:02     ` Anthony PERARD
  2022-09-16 10:21     ` Oleksandr
  1 sibling, 2 replies; 15+ messages in thread
From: Viresh Kumar @ 2022-09-09 14:43 UTC (permalink / raw)
  To: xen-devel
  Cc: Viresh Kumar, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes,
	Oleksandr Tyshchenko, Wei Liu, Juergen Gross, Julien Grall,
	Anthony PERARD

The iommu node will be required for other virtio device types too, not
just disk device.

Move the call to make_xen_iommu_node(), out of the disk device specific
block and rename "iommu_created" variable to "iommu_needed", and set it
to true for virtio disk device.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
V6->V6.1:
- Initialize iommu_needed at declaration time only.
- Update comment.

 tools/libs/light/libxl_arm.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 55aee15c10b4..fe1c92383dd6 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -1157,7 +1157,7 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
     size_t fdt_size = 0;
     int pfdt_size = 0;
     libxl_domain_build_info *const info = &d_config->b_info;
-    bool iommu_created;
+    bool iommu_needed = false;
     unsigned int i;
 
     const libxl_version_info *vers;
@@ -1265,22 +1265,25 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
         if (d_config->num_pcidevs)
             FDT( make_vpci_node(gc, fdt, ainfo, dom) );
 
-        iommu_created = false;
         for (i = 0; i < d_config->num_disks; i++) {
             libxl_device_disk *disk = &d_config->disks[i];
 
             if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
-                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID &&
-                    !iommu_created) {
-                    FDT( make_xen_iommu_node(gc, fdt) );
-                    iommu_created = true;
-                }
+                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID)
+                    iommu_needed = true;
 
                 FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq,
                                            disk->backend_domid) );
             }
         }
 
+        /*
+         * The iommu node should be created only once for all virtio-mmio
+         * devices.
+         */
+        if (iommu_needed)
+            FDT( make_xen_iommu_node(gc, fdt) );
+
         if (pfdt)
             FDT( copy_partial_fdt(gc, fdt, pfdt) );
 
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-09 14:43   ` [PATCH V6.1 " Viresh Kumar
@ 2022-09-09 15:02     ` Anthony PERARD
  2022-09-20 10:29       ` Viresh Kumar
  2022-09-16 10:21     ` Oleksandr
  1 sibling, 1 reply; 15+ messages in thread
From: Anthony PERARD @ 2022-09-09 15:02 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes,
	Oleksandr Tyshchenko, Wei Liu, Juergen Gross, Julien Grall

On Fri, Sep 09, 2022 at 08:13:28PM +0530, Viresh Kumar wrote:
> The iommu node will be required for other virtio device types too, not
> just disk device.
> 
> Move the call to make_xen_iommu_node(), out of the disk device specific
> block and rename "iommu_created" variable to "iommu_needed", and set it
> to true for virtio disk device.
> 
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-09 14:43   ` [PATCH V6.1 " Viresh Kumar
  2022-09-09 15:02     ` Anthony PERARD
@ 2022-09-16 10:21     ` Oleksandr
  1 sibling, 0 replies; 15+ messages in thread
From: Oleksandr @ 2022-09-16 10:21 UTC (permalink / raw)
  To: Viresh Kumar, xen-devel
  Cc: Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes, Wei Liu,
	Juergen Gross, Julien Grall, Anthony PERARD


On 09.09.22 17:43, Viresh Kumar wrote:

Hello Viresh

> The iommu node will be required for other virtio device types too, not
> just disk device.
>
> Move the call to make_xen_iommu_node(), out of the disk device specific
> block and rename "iommu_created" variable to "iommu_needed", and set it
> to true for virtio disk device.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
> V6->V6.1:
> - Initialize iommu_needed at declaration time only.
> - Update comment.

Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>



>
>   tools/libs/light/libxl_arm.c | 17 ++++++++++-------
>   1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
> index 55aee15c10b4..fe1c92383dd6 100644
> --- a/tools/libs/light/libxl_arm.c
> +++ b/tools/libs/light/libxl_arm.c
> @@ -1157,7 +1157,7 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
>       size_t fdt_size = 0;
>       int pfdt_size = 0;
>       libxl_domain_build_info *const info = &d_config->b_info;
> -    bool iommu_created;
> +    bool iommu_needed = false;
>       unsigned int i;
>   
>       const libxl_version_info *vers;
> @@ -1265,22 +1265,25 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config,
>           if (d_config->num_pcidevs)
>               FDT( make_vpci_node(gc, fdt, ainfo, dom) );
>   
> -        iommu_created = false;
>           for (i = 0; i < d_config->num_disks; i++) {
>               libxl_device_disk *disk = &d_config->disks[i];
>   
>               if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
> -                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID &&
> -                    !iommu_created) {
> -                    FDT( make_xen_iommu_node(gc, fdt) );
> -                    iommu_created = true;
> -                }
> +                if (disk->backend_domid != LIBXL_TOOLSTACK_DOMID)
> +                    iommu_needed = true;
>   
>                   FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq,
>                                              disk->backend_domid) );
>               }
>           }
>   
> +        /*
> +         * The iommu node should be created only once for all virtio-mmio
> +         * devices.
> +         */
> +        if (iommu_needed)
> +            FDT( make_xen_iommu_node(gc, fdt) );
> +
>           if (pfdt)
>               FDT( copy_partial_fdt(gc, fdt, pfdt) );
>   

-- 
Regards,

Oleksandr Tyshchenko



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-09 15:02     ` Anthony PERARD
@ 2022-09-20 10:29       ` Viresh Kumar
  2022-10-04  9:59         ` Julien Grall
  0 siblings, 1 reply; 15+ messages in thread
From: Viresh Kumar @ 2022-09-20 10:29 UTC (permalink / raw)
  To: Anthony PERARD
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes,
	Oleksandr Tyshchenko, Wei Liu, Juergen Gross, Julien Grall

On 09-09-22, 16:02, Anthony PERARD wrote:
> On Fri, Sep 09, 2022 at 08:13:28PM +0530, Viresh Kumar wrote:
> > The iommu node will be required for other virtio device types too, not
> > just disk device.
> > 
> > Move the call to make_xen_iommu_node(), out of the disk device specific
> > block and rename "iommu_created" variable to "iommu_needed", and set it
> > to true for virtio disk device.
> > 
> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> 
> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

I don't see these patches being applied yet, do I need to ping someone
for that ?

-- 
viresh


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-09-20 10:29       ` Viresh Kumar
@ 2022-10-04  9:59         ` Julien Grall
  2022-11-24 19:19           ` Julien Grall
  0 siblings, 1 reply; 15+ messages in thread
From: Julien Grall @ 2022-10-04  9:59 UTC (permalink / raw)
  To: Viresh Kumar, Anthony PERARD
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes,
	Oleksandr Tyshchenko, Wei Liu, Juergen Gross

Hi Viresh,

Apologies for the late reply. I was away for the past 2 weeks.

On 20/09/2022 11:29, Viresh Kumar wrote:
> On 09-09-22, 16:02, Anthony PERARD wrote:
>> On Fri, Sep 09, 2022 at 08:13:28PM +0530, Viresh Kumar wrote:
>>> The iommu node will be required for other virtio device types too, not
>>> just disk device.
>>>
>>> Move the call to make_xen_iommu_node(), out of the disk device specific
>>> block and rename "iommu_created" variable to "iommu_needed", and set it
>>> to true for virtio disk device.
>>>
>>> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
>>
>> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
> 
> I don't see these patches being applied yet, do I need to ping someone
> for that ?

We are currently preparing to release Xen 4.17 (plan for November) and 
have stopped accepting new code (other than bug fix) since the beginning 
of September.

Your series will be committed once the tree is re-opened (hopefully by 
the beginning of November). Please ping me mid-november if this is still 
not applied.

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-10-04  9:59         ` Julien Grall
@ 2022-11-24 19:19           ` Julien Grall
  2022-11-25  5:45             ` Viresh Kumar
  0 siblings, 1 reply; 15+ messages in thread
From: Julien Grall @ 2022-11-24 19:19 UTC (permalink / raw)
  To: Viresh Kumar, Anthony PERARD
  Cc: xen-devel, Vincent Guittot, stratos-dev, Alex Bennée,
	Stefano Stabellini, Mathieu Poirier, Mike Holmes,
	Oleksandr Tyshchenko, Wei Liu, Juergen Gross

Hi Viresh,

On 04/10/2022 11:59, Julien Grall wrote:
> On 20/09/2022 11:29, Viresh Kumar wrote:
>> On 09-09-22, 16:02, Anthony PERARD wrote:
>>> On Fri, Sep 09, 2022 at 08:13:28PM +0530, Viresh Kumar wrote:
>>>> The iommu node will be required for other virtio device types too, not
>>>> just disk device.
>>>>
>>>> Move the call to make_xen_iommu_node(), out of the disk device specific
>>>> block and rename "iommu_created" variable to "iommu_needed", and set it
>>>> to true for virtio disk device.
>>>>
>>>> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
>>>
>>> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
>>
>> I don't see these patches being applied yet, do I need to ping someone
>> for that ?
> 
> We are currently preparing to release Xen 4.17 (plan for November) and 
> have stopped accepting new code (other than bug fix) since the beginning 
> of September.
> 
> Your series will be committed once the tree is re-opened (hopefully by 
> the beginning of November). Please ping me mid-november if this is still 
> not applied.

Unfortunately, we had some delay for releasing 4.17. So I have pushed 
this series in a branch for-next/4.18. This will be applied to staging 
once the tree has re-opened.

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-11-24 19:19           ` Julien Grall
@ 2022-11-25  5:45             ` Viresh Kumar
  2022-11-28  9:31               ` Julien Grall
  0 siblings, 1 reply; 15+ messages in thread
From: Viresh Kumar @ 2022-11-25  5:45 UTC (permalink / raw)
  To: Julien Grall
  Cc: Anthony PERARD, xen-devel, Vincent Guittot, stratos-dev,
	Alex Bennée, Stefano Stabellini, Mathieu Poirier,
	Mike Holmes, Oleksandr Tyshchenko, Wei Liu, Juergen Gross

On 24-11-22, 20:19, Julien Grall wrote:
> Unfortunately, we had some delay for releasing 4.17. So I have pushed this
> series in a branch for-next/4.18.

Thanks.

> This will be applied to staging once the
> tree has re-opened.

I don't see the branch here though. Is it not public yet ? Or should I be
looking at a different tree ?

https://github.com/xen-project/xen

-- 
viresh


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH V6.1 3/3] libxl: arm: make creation of iommu node independent of disk device
  2022-11-25  5:45             ` Viresh Kumar
@ 2022-11-28  9:31               ` Julien Grall
  0 siblings, 0 replies; 15+ messages in thread
From: Julien Grall @ 2022-11-28  9:31 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Anthony PERARD, xen-devel, Vincent Guittot, stratos-dev,
	Alex Bennée, Stefano Stabellini, Mathieu Poirier,
	Mike Holmes, Oleksandr Tyshchenko, Wei Liu, Juergen Gross

Hi Viresh,

On 25/11/2022 06:45, Viresh Kumar wrote:
> On 24-11-22, 20:19, Julien Grall wrote:
>> Unfortunately, we had some delay for releasing 4.17. So I have pushed this
>> series in a branch for-next/4.18.
> 
> Thanks.
> 
>> This will be applied to staging once the
>> tree has re-opened.
> 
> I don't see the branch here though. Is it not public yet ? Or should I be
> looking at a different tree ?

The branch has been created in my personal tree for now:

https://xenbits.xen.org/gitweb/?p=people/julieng/xen-unstable.git;a=shortlog;h=refs/heads/for-next/4.18

Sorry I should have been clearer.

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2022-11-28  9:31 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08  8:52 [PATCH V6 0/3] libxl: arm: Make generic code independent of disk device Viresh Kumar
2022-09-08  8:52 ` [PATCH V6 1/3] libxl: arm: Create alloc_virtio_mmio_params() Viresh Kumar
2022-09-09 13:19   ` Anthony PERARD
2022-09-08  8:53 ` [PATCH V6 2/3] libxl: arm: Split make_virtio_mmio_node() Viresh Kumar
2022-09-09 13:21   ` Anthony PERARD
2022-09-08  8:53 ` [PATCH V6 3/3] libxl: arm: make creation of iommu node independent of disk device Viresh Kumar
2022-09-09 13:47   ` Anthony PERARD
2022-09-09 14:43   ` [PATCH V6.1 " Viresh Kumar
2022-09-09 15:02     ` Anthony PERARD
2022-09-20 10:29       ` Viresh Kumar
2022-10-04  9:59         ` Julien Grall
2022-11-24 19:19           ` Julien Grall
2022-11-25  5:45             ` Viresh Kumar
2022-11-28  9:31               ` Julien Grall
2022-09-16 10:21     ` Oleksandr

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).