All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolin Chen <nicolinc@nvidia.com>
To: Eric Auger <eric.auger@redhat.com>
Cc: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
	<qemu-arm@nongnu.org>, <qemu-devel@nongnu.org>,
	<peter.maydell@linaro.org>, <jgg@nvidia.com>,
	<ddutile@redhat.com>, <berrange@redhat.com>, <nathanc@nvidia.com>,
	<mochs@nvidia.com>, <smostafa@google.com>, <linuxarm@huawei.com>,
	<wangzhou1@hisilicon.com>, <jiangkunkun@huawei.com>,
	<jonathan.cameron@huawei.com>, <zhangfei.gao@linaro.org>
Subject: Re: [RFC PATCH v2 19/20] hw/arm/virt-acpi-build: Update IORT with multiple smmuv3-accel nodes
Date: Wed, 26 Mar 2025 11:50:43 -0700	[thread overview]
Message-ID: <Z+RMg92cjxZkNyWJ@nvidia.com> (raw)
In-Reply-To: <1b03e73c-f50b-4be6-b5a5-58f3e80f9161@redhat.com>

On Wed, Mar 26, 2025 at 07:14:31PM +0100, Eric Auger wrote:
> 
> 
> On 3/11/25 3:10 PM, Shameer Kolothum wrote:
> > Now that we can have multiple user-creatable smmuv3-accel devices,
> > each associated with different pci buses, update IORT ID mappings
> > accordingly.
> >
> > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
> > ---
> >  hw/arm/virt-acpi-build.c | 113 +++++++++++++++++++++++++++++++++------
> >  1 file changed, 97 insertions(+), 16 deletions(-)
> >
> > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> > index 3ac8f8e178..c232850e36 100644
> > --- a/hw/arm/virt-acpi-build.c
> > +++ b/hw/arm/virt-acpi-build.c
> > @@ -43,6 +43,7 @@
> >  #include "hw/acpi/generic_event_device.h"
> >  #include "hw/acpi/tpm.h"
> >  #include "hw/acpi/hmat.h"
> > +#include "hw/arm/smmuv3-accel.h"
> >  #include "hw/pci/pcie_host.h"
> >  #include "hw/pci/pci.h"
> >  #include "hw/pci/pci_bus.h"
> > @@ -233,6 +234,51 @@ struct AcpiIortIdMapping {
> >  };
> >  typedef struct AcpiIortIdMapping AcpiIortIdMapping;
> >  
> > +struct SMMUv3Accel {
> > +    int irq;
> > +    hwaddr base;
> > +    AcpiIortIdMapping smmu_idmap;
> > +};
> > +typedef struct SMMUv3Accel SMMUv3Accel;
> > +
> > +static int smmuv3_accel_idmap_compare(gconstpointer a, gconstpointer b)
> > +{
> > +    SMMUv3Accel *accel_a = (SMMUv3Accel *)a;
> > +    SMMUv3Accel *accel_b = (SMMUv3Accel *)b;
> > +
> > +    return accel_a->smmu_idmap.input_base - accel_b->smmu_idmap.input_base;
> > +}
> > +
> > +static int get_smmuv3_accel(Object *obj, void *opaque)
> > +{
> > +    GArray *s_accel_blob = opaque;
> > +
> > +    if (object_dynamic_cast(obj, TYPE_ARM_SMMUV3_ACCEL)) {
> > +        PCIBus *bus = (PCIBus *) object_property_get_link(obj, "primary-bus",
> > +                                                          &error_abort);
> > +        if (bus && !pci_bus_bypass_iommu(bus)) {
> > +            SMMUv3Accel accel;
> > +            int min_bus, max_bus;
> > +            VirtMachineState *v = VIRT_MACHINE(qdev_get_machine());
> > +            PlatformBusDevice *pbus = PLATFORM_BUS_DEVICE(v->platform_bus_dev);
> > +            SysBusDevice *sbdev = SYS_BUS_DEVICE(obj);
> > +            hwaddr base = platform_bus_get_mmio_addr(pbus, sbdev, 0);
> > +            int irq = platform_bus_get_irqn(pbus, sbdev, 0);
> > +
> > +            base += v->memmap[VIRT_PLATFORM_BUS].base;
> > +            irq += v->irqmap[VIRT_PLATFORM_BUS];
> > +
> > +            pci_bus_range(bus, &min_bus, &max_bus);
> > +            accel.smmu_idmap.input_base = min_bus << 8;
> > +            accel.smmu_idmap.id_count = (max_bus - min_bus + 1) << 8;
> > +            accel.base = base;
> > +            accel.irq = irq + ARM_SPI_BASE;
> > +            g_array_append_val(s_accel_blob, accel);
> > +        }
> > +    }
> > +    return 0;
> > +}
> > +
> >  /* Build the iort ID mapping to SMMUv3 for a given PCI host bridge */
> >  static int
> >  iort_host_bridges(Object *obj, void *opaque)
> > @@ -275,30 +321,51 @@ static void
> >  build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> >  {
> >      int i, nb_nodes, rc_mapping_count;
> > -    size_t node_size, smmu_offset = 0;
> > +    size_t node_size, *smmu_offset = NULL;
> >      AcpiIortIdMapping *idmap;
> > +    SMMUv3Accel *accel;
> > +    int num_smmus = 0;
> >      uint32_t id = 0;
> >      GArray *smmu_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping));
> >      GArray *its_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping));
> > +    GArray *smmuv3_accel = g_array_new(false, true, sizeof(SMMUv3Accel));
> >  
> >      AcpiTable table = { .sig = "IORT", .rev = 3, .oem_id = vms->oem_id,
> >                          .oem_table_id = vms->oem_table_id };
> >      /* Table 2 The IORT */
> >      acpi_table_begin(&table, table_data);
> >  
> > -    if (vms->iommu == VIRT_IOMMU_SMMUV3) {
> > -        AcpiIortIdMapping next_range = {0};
> > -
> > +    nb_nodes = 2; /* RC, ITS */
> > +    if (vms->iommu == VIRT_IOMMU_SMMUV3_ACCEL) {
> > +        object_child_foreach_recursive(object_get_root(),
> > +                                       get_smmuv3_accel, smmuv3_accel);
> > +        /* Sort the smmuv3-accel by smmu idmap input_base */
> > +        g_array_sort(smmuv3_accel, smmuv3_accel_idmap_compare);
> > +
> > +        /*  Fill smmu idmap from sorted accel array */
> > +        for (i = 0; i < smmuv3_accel->len; i++) {
> > +            accel = &g_array_index(smmuv3_accel, SMMUv3Accel, i);
> > +            g_array_append_val(smmu_idmaps, accel->smmu_idmap);
> > +        }
> > +        num_smmus = smmuv3_accel->len;
> > +    } else if (vms->iommu == VIRT_IOMMU_SMMUV3) {
> >          object_child_foreach_recursive(object_get_root(),
> >                                         iort_host_bridges, smmu_idmaps);
> >  
> >          /* Sort the smmu idmap by input_base */
> >          g_array_sort(smmu_idmaps, iort_idmap_compare);
> > +        num_smmus = 1;
> > +    }
> >  
> > -        /*
> > -         * Split the whole RIDs by mapping from RC to SMMU,
> > -         * build the ID mapping from RC to ITS directly.
> > -         */
> > +    /*
> > +     * Split the whole RIDs by mapping from RC to SMMU,
> > +     * build the ID mapping from RC to ITS directly.
> > +     */
> > +    if (num_smmus) {
> > +        AcpiIortIdMapping next_range = {0};
> > +
> > +        smmu_offset = g_new0(size_t, num_smmus);
> > +        nb_nodes += num_smmus;
> >          for (i = 0; i < smmu_idmaps->len; i++) {
> >              idmap = &g_array_index(smmu_idmaps, AcpiIortIdMapping, i);
> >  
> > @@ -316,10 +383,8 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> >              g_array_append_val(its_idmaps, next_range);
> >          }
> >  
> > -        nb_nodes = 3; /* RC, ITS, SMMUv3 */
> >          rc_mapping_count = smmu_idmaps->len + its_idmaps->len;
> >      } else {
> > -        nb_nodes = 2; /* RC, ITS */
> >          rc_mapping_count = 1;
> >      }
> >      /* Number of IORT Nodes */
> > @@ -341,10 +406,19 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> >      /* GIC ITS Identifier Array */
> >      build_append_int_noprefix(table_data, 0 /* MADT translation_id */, 4);
> >  
> > -    if (vms->iommu == VIRT_IOMMU_SMMUV3) {
> > -        int irq =  vms->irqmap[VIRT_SMMU] + ARM_SPI_BASE;
> > +    for (i = 0; i < num_smmus; i++) {
> > +        hwaddr base;
> > +        int irq;
> > +        if (vms->iommu == VIRT_IOMMU_SMMUV3_ACCEL) {
> > +            accel = &g_array_index(smmuv3_accel, SMMUv3Accel, i);
> > +            base = accel->base;
> > +            irq = accel->irq;
> > +        } else {
> > +            base = vms->memmap[VIRT_SMMU].base;
> > +            irq = vms->irqmap[VIRT_SMMU] + ARM_SPI_BASE;
> > +        }
> >  
> > -        smmu_offset = table_data->len - table.table_offset;
> > +        smmu_offset[i] = table_data->len - table.table_offset;
> >          /* Table 9 SMMUv3 Format */
> >          build_append_int_noprefix(table_data, 4 /* SMMUv3 */, 1); /* Type */
> >          node_size =  SMMU_V3_ENTRY_SIZE + ID_MAPPING_ENTRY_SIZE;
> > @@ -355,7 +429,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> >          /* Reference to ID Array */
> >          build_append_int_noprefix(table_data, SMMU_V3_ENTRY_SIZE, 4);
> >          /* Base address */
> > -        build_append_int_noprefix(table_data, vms->memmap[VIRT_SMMU].base, 8);
> > +        build_append_int_noprefix(table_data, base, 8);
> >          /* Flags */
> >          build_append_int_noprefix(table_data, 1 /* COHACC Override */, 4);
> >          build_append_int_noprefix(table_data, 0, 4); /* Reserved */
> > @@ -404,15 +478,22 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> >      build_append_int_noprefix(table_data, 0, 3); /* Reserved */
> >  
> >      /* Output Reference */
> > -    if (vms->iommu == VIRT_IOMMU_SMMUV3) {
> > +    if (num_smmus) {
> >          AcpiIortIdMapping *range;
> > +        size_t offset;
> >  
> >          /* translated RIDs connect to SMMUv3 node: RC -> SMMUv3 -> ITS */
> >          for (i = 0; i < smmu_idmaps->len; i++) {
> > +            if (vms->iommu == VIRT_IOMMU_SMMUV3_ACCEL) {
> > +                offset = smmu_offset[i];
> > +            } else {
> > +                offset = smmu_offset[0];

> maybe we can also use smmu_offset array for non accel mode and get rid
> of this.

I recall that my previous version does combine two modes, i.e.
non-accel mode only uses smmu_offset[0]. Perhaps Shameer found
some mismatch between smmu_idmaps->len and num_smmus?

Nicolin

  reply	other threads:[~2025-03-26 18:51 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-11 14:10 [RFC PATCH v2 00/20] hw/arm/virt: Add support for user-creatable accelerated SMMUv3 Shameer Kolothum via
2025-03-11 14:10 ` [RFC PATCH v2 01/20] backends/iommufd: Introduce iommufd_backend_alloc_viommu Shameer Kolothum via
2025-03-12 15:20   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 02/20] backends/iommufd: Introduce iommufd_vdev_alloc Shameer Kolothum via
2025-03-12 15:25   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 03/20] hw/arm/smmuv3-accel: Add initial infrastructure for smmuv3-accel device Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-11 20:13   ` Nicolin Chen
2025-03-12 15:15   ` Eric Auger
2025-03-17 17:54     ` Nicolin Chen
2025-03-17 18:07       ` Eric Auger
2025-03-17 19:10         ` Nicolin Chen
2025-03-17 19:24           ` Jason Gunthorpe
2025-03-17 20:19             ` Nicolin Chen
2025-03-18  9:50               ` Shameerali Kolothum Thodi via
2025-03-18  9:50                 ` Shameerali Kolothum Thodi via
2025-03-18 18:31               ` Eric Auger
2025-03-18 19:13                 ` Nicolin Chen
2025-03-18 21:22                   ` Donald Dutile
2025-03-19  0:23                     ` Jason Gunthorpe
2025-03-19  2:15                       ` Donald Dutile
2025-03-19 17:00                       ` Eric Auger
2025-03-19 17:12                         ` Shameerali Kolothum Thodi via
2025-03-19 17:12                           ` Shameerali Kolothum Thodi via
2025-03-19 17:38                           ` Eric Auger
2025-03-21  0:55                         ` Donald Dutile
2025-03-19 17:04                     ` Eric Auger
2025-03-21  0:54                       ` Donald Dutile
2025-03-24 14:52                         ` Eric Auger
2025-03-19  0:31                 ` Jason Gunthorpe
2025-03-19  5:27                   ` Nicolin Chen
2025-03-24 14:08                   ` Eric Auger
2025-03-18 21:42             ` Donald Dutile
2025-03-19 16:45           ` Eric Auger
2025-03-19 16:53             ` Shameerali Kolothum Thodi via
2025-03-19 16:53               ` Shameerali Kolothum Thodi via
2025-03-19 17:26               ` Eric Auger
2025-03-19 17:34                 ` Jason Gunthorpe
2025-03-19 17:41                   ` Eric Auger
2025-03-19 17:14             ` Nicolin Chen
2025-03-19 18:09               ` Eric Auger
2025-03-19 18:34                 ` Nicolin Chen
2025-03-24 14:46                   ` Eric Auger
2025-03-21  1:26                 ` Donald Dutile
2025-03-24 14:59                   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 04/20] hw/arm/virt: Add support for smmuv3-accel Shameer Kolothum via
2025-03-11 20:22   ` Nicolin Chen
2025-03-12  9:44     ` Shameerali Kolothum Thodi via
2025-03-12 15:36   ` Eric Auger
2025-03-12 15:46     ` Shameerali Kolothum Thodi via
2025-03-12 15:46       ` Shameerali Kolothum Thodi via
2025-03-12 16:13       ` Eric Auger
2025-03-12 16:22         ` Shameerali Kolothum Thodi via
2025-03-12 16:27           ` Eric Auger
2025-03-12 17:34             ` Shameerali Kolothum Thodi via
2025-03-12 18:30               ` Eric Auger
2025-03-13  8:26                 ` Shameerali Kolothum Thodi via
2025-03-13 15:22                   ` Eric Auger
2025-03-18 22:49   ` Donald Dutile
2025-03-19  9:28     ` Shameerali Kolothum Thodi via
2025-03-19  9:28       ` Shameerali Kolothum Thodi via
2025-03-11 14:10 ` [RFC PATCH v2 05/20] hw/arm/smmuv3-accel: Associate a pxb-pcie bus Shameer Kolothum via
2025-03-12 16:07   ` Eric Auger
2025-03-12 16:34     ` Shameerali Kolothum Thodi via
2025-03-12 16:34       ` Shameerali Kolothum Thodi via
2025-03-12 16:39       ` Daniel P. Berrangé
2025-03-12 17:28         ` Shameerali Kolothum Thodi via
2025-03-12 17:28           ` Shameerali Kolothum Thodi via
2025-03-13 15:21           ` Eric Auger
2025-03-12 16:42       ` Eric Auger
2025-03-13  8:22         ` Shameerali Kolothum Thodi via
2025-03-13  8:22           ` Shameerali Kolothum Thodi via
2025-03-17 16:57           ` Eric Auger
2025-03-18 22:12   ` Donald Dutile
2025-03-19  9:26     ` Shameerali Kolothum Thodi via
2025-03-19  9:26       ` Shameerali Kolothum Thodi via
2025-03-19 16:21       ` Donald Dutile
2025-03-19 18:21         ` Eric Auger
2025-03-21  0:59           ` Donald Dutile
2025-03-24 14:56             ` Eric Auger
2025-03-24 15:02               ` Daniel P. Berrangé
2025-03-24 21:43               ` Donald Dutile
2025-03-20 17:02       ` Nicolin Chen
2025-03-24  8:19         ` Shameerali Kolothum Thodi via
2025-03-24  8:19           ` Shameerali Kolothum Thodi via
2025-03-24 13:13           ` Eric Auger
2025-03-24 13:55             ` Shameerali Kolothum Thodi via
2025-03-24 13:55               ` Shameerali Kolothum Thodi via
2025-03-24 15:34               ` Eric Auger
2025-03-24 16:01             ` Nicolin Chen
2025-03-24 16:06               ` Shameerali Kolothum Thodi via
2025-03-24 16:06                 ` Shameerali Kolothum Thodi via
2025-03-24 15:50           ` Nicolin Chen
2025-03-11 14:10 ` [RFC PATCH v2 06/20] hw/arm/smmu-common: Factor out common helper functions and export Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-12 16:12   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 07/20] hw/arm/smmu-common: Introduce callbacks for PCIIOMMUOps Shameer Kolothum via
2025-03-12 16:23   ` Eric Auger
2025-03-13  8:09     ` Shameerali Kolothum Thodi via
2025-03-13  8:09       ` Shameerali Kolothum Thodi via
2025-03-17 16:52       ` Eric Auger
2025-03-18  9:47         ` Shameerali Kolothum Thodi via
2025-03-12 17:10   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 08/20] hw/arm/smmuv3-accel: Provide get_address_space callback Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-11 20:50   ` Nicolin Chen
2025-03-12 17:14   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 09/20] hw/arm/smmuv3-accel: Add set/unset_iommu_device callback Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-11 21:07   ` Nicolin Chen
2025-03-17  8:38     ` Shameerali Kolothum Thodi via
2025-03-17  8:38       ` Shameerali Kolothum Thodi via
2025-03-17 18:19       ` Nicolin Chen
2025-03-12 12:52   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 10/20] hw/arm/smmuv3-accel: Support nested STE install/uninstall support Shameer Kolothum via
2025-03-25 18:08   ` Eric Auger
2025-03-25 19:33     ` Nicolin Chen
2025-03-11 14:10 ` [RFC PATCH v2 11/20] hw/arm/smmuv3-accel: Allocate a vDEVICE object for device Shameer Kolothum via
2025-03-18 23:30   ` Donald Dutile
2025-03-25 18:13   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 12/20] hw/arm/smmuv3-accel: Return sysmem if stage-1 is bypassed Shameer Kolothum via
2025-03-25 18:47   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 13/20] hw/arm/smmuv3-accel: Introduce helpers to batch and issue cache invalidations Shameer Kolothum via
2025-03-19  1:31   ` Donald Dutile
2025-03-19  9:48     ` Shameerali Kolothum Thodi via
2025-03-19  9:48       ` Shameerali Kolothum Thodi via
2025-03-19 16:24       ` Donald Dutile
2025-03-19 16:48         ` Nicolin Chen
2025-03-26 13:38   ` Eric Auger
2025-03-26 19:16     ` Nicolin Chen
2025-03-27  7:46       ` Shameerali Kolothum Thodi via
2025-03-27  8:00       ` Eric Auger
2025-03-26 13:59   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 14/20] hw/arm/smmuv3: Install nested ste for CFGI_STE Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-26 13:39   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 15/20] hw/arm/smmuv3: Forward invalidation commands to hw Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-26 14:16   ` Eric Auger
2025-03-26 19:27     ` Nicolin Chen
2025-03-27  8:03       ` Eric Auger
2025-03-26 14:18   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 16/20] hw/arm/smmuv3-accel: Read host SMMUv3 device info Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-19  2:45   ` Donald Dutile
2025-03-26 14:57   ` Eric Auger
2025-03-11 14:10 ` [RFC PATCH v2 17/20] hw/arm/smmuv3: Check idr registers for STE_S1CDMAX and STE_S1STALLD Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-26 17:18   ` Eric Auger
2025-03-26 19:46     ` Nicolin Chen
2025-03-27  7:54       ` Shameerali Kolothum Thodi via
2025-03-27  7:54         ` Shameerali Kolothum Thodi via
2025-03-27  9:11         ` Eric Auger
2025-03-27 13:05     ` Jason Gunthorpe
2025-03-11 14:10 ` [RFC PATCH v2 18/20] hw/arm/smmu-common: Bypass emulated IOTLB for a accel SMMUv3 Shameer Kolothum via
2025-03-19  2:52   ` Donald Dutile
2025-03-26 17:40   ` Eric Auger
2025-03-26 19:57     ` Nicolin Chen
2025-03-11 14:10 ` [RFC PATCH v2 19/20] hw/arm/virt-acpi-build: Update IORT with multiple smmuv3-accel nodes Shameer Kolothum via
2025-03-26 18:14   ` Eric Auger
2025-03-26 18:50     ` Nicolin Chen [this message]
2025-03-27  9:26       ` Shameerali Kolothum Thodi via
2025-03-27  9:26         ` Shameerali Kolothum Thodi via
2025-03-11 14:10 ` [RFC PATCH v2 20/20] hw/arm/smmuv3-accel: Enable smmuv3-accel creation Shameer Kolothum via
2025-03-11 14:10   ` Shameer Kolothum via
2025-03-19 16:40 ` [RFC PATCH v2 00/20] hw/arm/virt: Add support for user-creatable accelerated SMMUv3 Philippe Mathieu-Daudé
2025-03-19 17:13   ` Eric Auger
2025-03-25 14:42 ` Eric Auger
2025-03-25 15:43   ` Shameerali Kolothum Thodi via
2025-03-25 18:26     ` Nicolin Chen via
2025-03-25 18:26       ` Nicolin Chen via
2025-03-25 18:52       ` Eric Auger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z+RMg92cjxZkNyWJ@nvidia.com \
    --to=nicolinc@nvidia.com \
    --cc=berrange@redhat.com \
    --cc=ddutile@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=jiangkunkun@huawei.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=linuxarm@huawei.com \
    --cc=mochs@nvidia.com \
    --cc=nathanc@nvidia.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=smostafa@google.com \
    --cc=wangzhou1@hisilicon.com \
    --cc=zhangfei.gao@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.