2017-06-22 06:10:40

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: [PATCH v4 0/2] acpi, gicv3-its, numa: Adding numa node mapping for ITS

ACPI 6.2 have added SRAT subtable to define proximity domain for ITS
devices. This patchset updates acpi header file from acpica repo and
adds numa node mapping for ITS devices.

v4:
-Addressed review comments.

v3:
- Use static array to stash parsed data from srat its table.

v2:
- Incorporated comments from Lorenzo Pieralisi and Marc Zyngier.

v1: first patch

Ganapatrao Kulkarni (2):
ACPICA: ACPI 6.2: Add support for new SRAT subtable
acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
include/acpi/actbl1.h | 12 ++++++-
2 files changed, 85 insertions(+), 2 deletions(-)

--
1.8.1.4


2017-06-22 06:10:47

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.

ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
Link: https://github.com/acpica/acpica/commit/5bc67f6

Signed-off-by: Ganapatrao Kulkarni <[email protected]>
---
include/acpi/actbl1.h | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index b4ce55c..253c9db 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -1192,7 +1192,8 @@ enum acpi_srat_type {
ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
- ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
+ ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
+ ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
};

/*
@@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
u32 clock_domain;
};

+/* 4: GIC ITS Affinity (ACPI 6.2) */
+
+struct acpi_srat_its_affinity {
+ struct acpi_subtable_header header;
+ u32 proximity_domain;
+ u16 reserved;
+ u32 its_id;
+};
+
/* Flags for struct acpi_srat_gicc_affinity */

#define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */
--
1.8.1.4

2017-06-22 06:11:07

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
Later in per device probe, ITS devices are mapped to numa node using
ITS Id to proximity domain mapping.

Signed-off-by: Ganapatrao Kulkarni <[email protected]>
---
drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 74 insertions(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 45ea1933..1c21e01 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)

#define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)

+#ifdef CONFIG_ACPI_NUMA
+struct its_srat_map {
+ u32 numa_node; /* numa node id */
+ u32 its_id; /* GIC ITS ID */
+};
+
+static struct its_srat_map its_srat_maps[MAX_NUMNODES] __initdata;
+static int its_in_srat __initdata;
+
+static int __init acpi_get_its_numa_node(u32 its_id)
+{
+ int i;
+
+ for (i = 0; i < its_in_srat; i++) {
+ if (its_id == its_srat_maps[i].its_id)
+ return its_srat_maps[i].numa_node;
+ }
+ return NUMA_NO_NODE;
+}
+
+static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header,
+ const unsigned long end)
+{
+ int pxm, node;
+ struct acpi_srat_its_affinity *its_affinity;
+
+ its_affinity = (struct acpi_srat_its_affinity *)header;
+ if (!its_affinity)
+ return -EINVAL;
+
+ if (its_affinity->header.length < sizeof(*its_affinity)) {
+ pr_err("SRAT: Invalid header length %d in ITS affinity\n",
+ its_affinity->header.length);
+ return -EINVAL;
+ }
+
+ if (its_in_srat >= MAX_NUMNODES) {
+ pr_err("SRAT: ITS affinity exceeding max count[%d]\n",
+ MAX_NUMNODES);
+ return -EINVAL;
+ }
+
+ pxm = its_affinity->proximity_domain;
+ node = acpi_map_pxm_to_node(pxm);
+
+ if (node == NUMA_NO_NODE || node >= MAX_NUMNODES) {
+ pr_err("SRAT: Invalid NUMA node %d in ITS affinity\n", node);
+ return 0;
+ }
+
+ its_srat_maps[its_in_srat].numa_node = node;
+ its_srat_maps[its_in_srat].its_id = its_affinity->its_id;
+ its_in_srat++;
+ pr_info("SRAT: PXM %d -> ITS %d -> Node %d\n",
+ pxm, its_affinity->its_id, node);
+
+ return 0;
+}
+
+static void __init acpi_table_parse_srat_its(void)
+{
+ acpi_table_parse_entries(ACPI_SIG_SRAT,
+ sizeof(struct acpi_table_srat),
+ ACPI_SRAT_TYPE_GIC_ITS_AFFINITY,
+ gic_acpi_parse_srat_its, 0);
+}
+#else
+static void __init acpi_table_parse_srat_its(void) { }
+static int __init acpi_get_its_numa_node(u32 its_id) { return NUMA_NO_NODE; }
+#endif
+
static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
const unsigned long end)
{
@@ -1861,7 +1932,8 @@ static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
goto dom_err;
}

- err = its_probe_one(&res, dom_handle, NUMA_NO_NODE);
+ err = its_probe_one(&res, dom_handle,
+ acpi_get_its_numa_node(its_entry->translation_id));
if (!err)
return 0;

@@ -1873,6 +1945,7 @@ static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,

static void __init its_acpi_probe(void)
{
+ acpi_table_parse_srat_its();
acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
gic_acpi_parse_madt_its, 0);
}
--
1.8.1.4

2017-06-22 13:41:51

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

Hi Rafael, Lv, Robert,

On Thu, Jun 22, 2017 at 11:40:11AM +0530, Ganapatrao Kulkarni wrote:
> Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.
>
> ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
> Link: https://github.com/acpica/acpica/commit/5bc67f6
>
> Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> ---
> include/acpi/actbl1.h | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)

This patch is fine to me but it is up to you or who sends the ACPICA
pull request to send it upstream or give us an ACK so that it can go
via irqchip.

We need to know how this commit (and other ACPICA changes) will be sent
upstream to handle trees dependencies, please advise it is a bit urgent,
thank you.

Lorenzo

> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
> index b4ce55c..253c9db 100644
> --- a/include/acpi/actbl1.h
> +++ b/include/acpi/actbl1.h
> @@ -1192,7 +1192,8 @@ enum acpi_srat_type {
> ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
> ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
> ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
> - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
> + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
> + ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> };
>
> /*
> @@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
> u32 clock_domain;
> };
>
> +/* 4: GIC ITS Affinity (ACPI 6.2) */
> +
> +struct acpi_srat_its_affinity {
> + struct acpi_subtable_header header;
> + u32 proximity_domain;
> + u16 reserved;
> + u32 its_id;
> +};
> +
> /* Flags for struct acpi_srat_gicc_affinity */
>
> #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */
> --
> 1.8.1.4
>

2017-06-22 13:44:53

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

On Thu, Jun 22, 2017 at 11:40:12AM +0530, Ganapatrao Kulkarni wrote:
> Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
> Later in per device probe, ITS devices are mapped to numa node using
> ITS Id to proximity domain mapping.
>
> Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> ---
> drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 74 insertions(+), 1 deletion(-)

Reviewed-by: Lorenzo Pieralisi <[email protected]>

> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
> index 45ea1933..1c21e01 100644
> --- a/drivers/irqchip/irq-gic-v3-its.c
> +++ b/drivers/irqchip/irq-gic-v3-its.c
> @@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)
>
> #define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
>
> +#ifdef CONFIG_ACPI_NUMA
> +struct its_srat_map {
> + u32 numa_node; /* numa node id */
> + u32 its_id; /* GIC ITS ID */
> +};
> +
> +static struct its_srat_map its_srat_maps[MAX_NUMNODES] __initdata;
> +static int its_in_srat __initdata;
> +
> +static int __init acpi_get_its_numa_node(u32 its_id)
> +{
> + int i;
> +
> + for (i = 0; i < its_in_srat; i++) {
> + if (its_id == its_srat_maps[i].its_id)
> + return its_srat_maps[i].numa_node;
> + }
> + return NUMA_NO_NODE;
> +}
> +
> +static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header,
> + const unsigned long end)
> +{
> + int pxm, node;
> + struct acpi_srat_its_affinity *its_affinity;
> +
> + its_affinity = (struct acpi_srat_its_affinity *)header;
> + if (!its_affinity)
> + return -EINVAL;
> +
> + if (its_affinity->header.length < sizeof(*its_affinity)) {
> + pr_err("SRAT: Invalid header length %d in ITS affinity\n",
> + its_affinity->header.length);
> + return -EINVAL;
> + }
> +
> + if (its_in_srat >= MAX_NUMNODES) {
> + pr_err("SRAT: ITS affinity exceeding max count[%d]\n",
> + MAX_NUMNODES);
> + return -EINVAL;
> + }
> +
> + pxm = its_affinity->proximity_domain;
> + node = acpi_map_pxm_to_node(pxm);
> +
> + if (node == NUMA_NO_NODE || node >= MAX_NUMNODES) {
> + pr_err("SRAT: Invalid NUMA node %d in ITS affinity\n", node);
> + return 0;
> + }
> +
> + its_srat_maps[its_in_srat].numa_node = node;
> + its_srat_maps[its_in_srat].its_id = its_affinity->its_id;
> + its_in_srat++;
> + pr_info("SRAT: PXM %d -> ITS %d -> Node %d\n",
> + pxm, its_affinity->its_id, node);
> +
> + return 0;
> +}
> +
> +static void __init acpi_table_parse_srat_its(void)
> +{
> + acpi_table_parse_entries(ACPI_SIG_SRAT,
> + sizeof(struct acpi_table_srat),
> + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY,
> + gic_acpi_parse_srat_its, 0);
> +}
> +#else
> +static void __init acpi_table_parse_srat_its(void) { }
> +static int __init acpi_get_its_numa_node(u32 its_id) { return NUMA_NO_NODE; }
> +#endif
> +
> static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
> const unsigned long end)
> {
> @@ -1861,7 +1932,8 @@ static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
> goto dom_err;
> }
>
> - err = its_probe_one(&res, dom_handle, NUMA_NO_NODE);
> + err = its_probe_one(&res, dom_handle,
> + acpi_get_its_numa_node(its_entry->translation_id));
> if (!err)
> return 0;
>
> @@ -1873,6 +1945,7 @@ static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
>
> static void __init its_acpi_probe(void)
> {
> + acpi_table_parse_srat_its();
> acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
> gic_acpi_parse_madt_its, 0);
> }
> --
> 1.8.1.4
>

2017-06-22 14:13:29

by Moore, Robert

[permalink] [raw]
Subject: RE: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

This support is already in the ACPICA code base, but I can't speak to when it will be upstreamed to Linux. Lv would know this.
Bob


> -----Original Message-----
> From: Lorenzo Pieralisi [mailto:[email protected]]
> Sent: Thursday, June 22, 2017 6:43 AM
> To: Ganapatrao Kulkarni <[email protected]>; Zheng, Lv
> <[email protected]>; Moore, Robert <[email protected]>; Rafael J.
> Wysocki <[email protected]>
> Cc: [email protected]; [email protected]; linux-
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT
> subtable
>
> Hi Rafael, Lv, Robert,
>
> On Thu, Jun 22, 2017 at 11:40:11AM +0530, Ganapatrao Kulkarni wrote:
> > Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.
> >
> > ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
> > Link: https://github.com/acpica/acpica/commit/5bc67f6
> >
> > Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> > ---
> > include/acpi/actbl1.h | 12 +++++++++++-
> > 1 file changed, 11 insertions(+), 1 deletion(-)
>
> This patch is fine to me but it is up to you or who sends the ACPICA
> pull request to send it upstream or give us an ACK so that it can go via
> irqchip.
>
> We need to know how this commit (and other ACPICA changes) will be sent
> upstream to handle trees dependencies, please advise it is a bit urgent,
> thank you.
>
> Lorenzo
>
> > diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index
> > b4ce55c..253c9db 100644
> > --- a/include/acpi/actbl1.h
> > +++ b/include/acpi/actbl1.h
> > @@ -1192,7 +1192,8 @@ enum acpi_srat_type {
> > ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
> > ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
> > ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
> > - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
> > + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
> > + ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> > };
> >
> > /*
> > @@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
> > u32 clock_domain;
> > };
> >
> > +/* 4: GIC ITS Affinity (ACPI 6.2) */
> > +
> > +struct acpi_srat_its_affinity {
> > + struct acpi_subtable_header header;
> > + u32 proximity_domain;
> > + u16 reserved;
> > + u32 its_id;
> > +};
> > +
> > /* Flags for struct acpi_srat_gicc_affinity */
> >
> > #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure
> */
> > --
> > 1.8.1.4
> >

2017-06-22 14:34:39

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

On Thursday, June 22, 2017 02:13:18 PM Moore, Robert wrote:
> This support is already in the ACPICA code base, but I can't speak to when it will be upstreamed to Linux. Lv would know this.

It should be there in linux-next already AFAICS.

Lorenzo, can you please double check?

Thanks,
Rafael


> > -----Original Message-----
> > From: Lorenzo Pieralisi [mailto:[email protected]]
> > Sent: Thursday, June 22, 2017 6:43 AM
> > To: Ganapatrao Kulkarni <[email protected]>; Zheng, Lv
> > <[email protected]>; Moore, Robert <[email protected]>; Rafael J.
> > Wysocki <[email protected]>
> > Cc: [email protected]; [email protected]; linux-
> > [email protected]; [email protected];
> > [email protected]; [email protected]; [email protected];
> > [email protected]; [email protected]; [email protected];
> > [email protected]; [email protected]
> > Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT
> > subtable
> >
> > Hi Rafael, Lv, Robert,
> >
> > On Thu, Jun 22, 2017 at 11:40:11AM +0530, Ganapatrao Kulkarni wrote:
> > > Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.
> > >
> > > ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
> > > Link: https://github.com/acpica/acpica/commit/5bc67f6
> > >
> > > Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> > > ---
> > > include/acpi/actbl1.h | 12 +++++++++++-
> > > 1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > This patch is fine to me but it is up to you or who sends the ACPICA
> > pull request to send it upstream or give us an ACK so that it can go via
> > irqchip.
> >
> > We need to know how this commit (and other ACPICA changes) will be sent
> > upstream to handle trees dependencies, please advise it is a bit urgent,
> > thank you.
> >
> > Lorenzo
> >
> > > diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index
> > > b4ce55c..253c9db 100644
> > > --- a/include/acpi/actbl1.h
> > > +++ b/include/acpi/actbl1.h
> > > @@ -1192,7 +1192,8 @@ enum acpi_srat_type {
> > > ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
> > > ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
> > > ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
> > > - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
> > > + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
> > > + ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> > > };
> > >
> > > /*
> > > @@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
> > > u32 clock_domain;
> > > };
> > >
> > > +/* 4: GIC ITS Affinity (ACPI 6.2) */
> > > +
> > > +struct acpi_srat_its_affinity {
> > > + struct acpi_subtable_header header;
> > > + u32 proximity_domain;
> > > + u16 reserved;
> > > + u32 its_id;
> > > +};
> > > +
> > > /* Flags for struct acpi_srat_gicc_affinity */
> > >
> > > #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure
> > */
> > > --
> > > 1.8.1.4
> > >

2017-06-22 14:49:35

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

On 22/06/17 07:10, Ganapatrao Kulkarni wrote:
> Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
> Later in per device probe, ITS devices are mapped to numa node using
> ITS Id to proximity domain mapping.
>
> Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> ---
> drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 74 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
> index 45ea1933..1c21e01 100644
> --- a/drivers/irqchip/irq-gic-v3-its.c
> +++ b/drivers/irqchip/irq-gic-v3-its.c
> @@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)
>
> #define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
>
> +#ifdef CONFIG_ACPI_NUMA

So given that there is a dependency issue between the irqchip and apcica
trees, I plan on taking this patch with the following change:

#if defined(CONFIG_ACPI_NUMA) && (ACPI_CA_VERSION >= 0x20170531)

matching what is currently in -next.

Thanks,

M.
--
Jazz is not dead. It just smells funny...

2017-06-22 16:21:14

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

On Thu, Jun 22, 2017 at 7:57 PM, Rafael J. Wysocki <[email protected]> wrote:
> On Thursday, June 22, 2017 02:13:18 PM Moore, Robert wrote:
>> This support is already in the ACPICA code base, but I can't speak to when it will be upstreamed to Linux. Lv would know this.
>
> It should be there in linux-next already AFAICS.
>
> Lorenzo, can you please double check?

thanks Rafael, this is added to linux-next on june12 [1].

When i sent my first version i.e on June 6, it was not there, hence i
have added to this series.
my bad, i have not checked when i sent subsequent versions.
this patch can be dropped.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/include/acpi/actbl1.h?id=a618c7f89a02f3c67a8f200855cff398855e3888

>
> Thanks,
> Rafael
>
>
>> > -----Original Message-----
>> > From: Lorenzo Pieralisi [mailto:[email protected]]
>> > Sent: Thursday, June 22, 2017 6:43 AM
>> > To: Ganapatrao Kulkarni <[email protected]>; Zheng, Lv
>> > <[email protected]>; Moore, Robert <[email protected]>; Rafael J.
>> > Wysocki <[email protected]>
>> > Cc: [email protected]; [email protected]; linux-
>> > [email protected]; [email protected];
>> > [email protected]; [email protected]; [email protected];
>> > [email protected]; [email protected]; [email protected];
>> > [email protected]; [email protected]
>> > Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT
>> > subtable
>> >
>> > Hi Rafael, Lv, Robert,
>> >
>> > On Thu, Jun 22, 2017 at 11:40:11AM +0530, Ganapatrao Kulkarni wrote:
>> > > Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.
>> > >
>> > > ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
>> > > Link: https://github.com/acpica/acpica/commit/5bc67f6
>> > >
>> > > Signed-off-by: Ganapatrao Kulkarni <[email protected]>
>> > > ---
>> > > include/acpi/actbl1.h | 12 +++++++++++-
>> > > 1 file changed, 11 insertions(+), 1 deletion(-)
>> >
>> > This patch is fine to me but it is up to you or who sends the ACPICA
>> > pull request to send it upstream or give us an ACK so that it can go via
>> > irqchip.
>> >
>> > We need to know how this commit (and other ACPICA changes) will be sent
>> > upstream to handle trees dependencies, please advise it is a bit urgent,
>> > thank you.
>> >
>> > Lorenzo
>> >
>> > > diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index
>> > > b4ce55c..253c9db 100644
>> > > --- a/include/acpi/actbl1.h
>> > > +++ b/include/acpi/actbl1.h
>> > > @@ -1192,7 +1192,8 @@ enum acpi_srat_type {
>> > > ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
>> > > ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
>> > > ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
>> > > - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
>> > > + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
>> > > + ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
>> > > };
>> > >
>> > > /*
>> > > @@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
>> > > u32 clock_domain;
>> > > };
>> > >
>> > > +/* 4: GIC ITS Affinity (ACPI 6.2) */
>> > > +
>> > > +struct acpi_srat_its_affinity {
>> > > + struct acpi_subtable_header header;
>> > > + u32 proximity_domain;
>> > > + u16 reserved;
>> > > + u32 its_id;
>> > > +};
>> > > +
>> > > /* Flags for struct acpi_srat_gicc_affinity */
>> > >
>> > > #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure
>> > */
>> > > --
>> > > 1.8.1.4
>> > >
>

thanks
Ganapat

2017-06-22 21:05:11

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT subtable

On Thu, Jun 22, 2017 at 04:27:18PM +0200, Rafael J. Wysocki wrote:
> On Thursday, June 22, 2017 02:13:18 PM Moore, Robert wrote:
> > This support is already in the ACPICA code base, but I can't speak to when it will be upstreamed to Linux. Lv would know this.
>
> It should be there in linux-next already AFAICS.
>
> Lorenzo, can you please double check?

Yes, it is all fine, thank you Rafael for taking the ACPICA changes.

Thanks !
Lorenzo

> Thanks,
> Rafael
>
>
> > > -----Original Message-----
> > > From: Lorenzo Pieralisi [mailto:[email protected]]
> > > Sent: Thursday, June 22, 2017 6:43 AM
> > > To: Ganapatrao Kulkarni <[email protected]>; Zheng, Lv
> > > <[email protected]>; Moore, Robert <[email protected]>; Rafael J.
> > > Wysocki <[email protected]>
> > > Cc: [email protected]; [email protected]; linux-
> > > [email protected]; [email protected];
> > > [email protected]; [email protected]; [email protected];
> > > [email protected]; [email protected]; [email protected];
> > > [email protected]; [email protected]
> > > Subject: Re: [PATCH v4 1/2] ACPICA: ACPI 6.2: Add support for new SRAT
> > > subtable
> > >
> > > Hi Rafael, Lv, Robert,
> > >
> > > On Thu, Jun 22, 2017 at 11:40:11AM +0530, Ganapatrao Kulkarni wrote:
> > > > Add GIC ITS Affinity (ACPI 6.2) subtable to SRAT table.
> > > >
> > > > ACPICA commit 5bc67f63918da249bfe279ee461d152bb3e6f55b
> > > > Link: https://github.com/acpica/acpica/commit/5bc67f6
> > > >
> > > > Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> > > > ---
> > > > include/acpi/actbl1.h | 12 +++++++++++-
> > > > 1 file changed, 11 insertions(+), 1 deletion(-)
> > >
> > > This patch is fine to me but it is up to you or who sends the ACPICA
> > > pull request to send it upstream or give us an ACK so that it can go via
> > > irqchip.
> > >
> > > We need to know how this commit (and other ACPICA changes) will be sent
> > > upstream to handle trees dependencies, please advise it is a bit urgent,
> > > thank you.
> > >
> > > Lorenzo
> > >
> > > > diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index
> > > > b4ce55c..253c9db 100644
> > > > --- a/include/acpi/actbl1.h
> > > > +++ b/include/acpi/actbl1.h
> > > > @@ -1192,7 +1192,8 @@ enum acpi_srat_type {
> > > > ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
> > > > ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
> > > > ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
> > > > - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */
> > > > + ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
> > > > + ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> > > > };
> > > >
> > > > /*
> > > > @@ -1260,6 +1261,15 @@ struct acpi_srat_gicc_affinity {
> > > > u32 clock_domain;
> > > > };
> > > >
> > > > +/* 4: GIC ITS Affinity (ACPI 6.2) */
> > > > +
> > > > +struct acpi_srat_its_affinity {
> > > > + struct acpi_subtable_header header;
> > > > + u32 proximity_domain;
> > > > + u16 reserved;
> > > > + u32 its_id;
> > > > +};
> > > > +
> > > > /* Flags for struct acpi_srat_gicc_affinity */
> > > >
> > > > #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure
> > > */
> > > > --
> > > > 1.8.1.4
> > > >
>

2017-06-26 17:38:23

by Robert Richter

[permalink] [raw]
Subject: Re: [Devel] [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

On 22.06.17 15:49:25, Marc Zyngier wrote:
> On 22/06/17 07:10, Ganapatrao Kulkarni wrote:
> > Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
> > Later in per device probe, ITS devices are mapped to numa node using
> > ITS Id to proximity domain mapping.
> >
> > Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> > ---
> > drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
> > 1 file changed, 74 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
> > index 45ea1933..1c21e01 100644
> > --- a/drivers/irqchip/irq-gic-v3-its.c
> > +++ b/drivers/irqchip/irq-gic-v3-its.c
> > @@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)
> >
> > #define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
> >
> > +#ifdef CONFIG_ACPI_NUMA
>
> So given that there is a dependency issue between the irqchip and apcica
> trees, I plan on taking this patch with the following change:
>
> #if defined(CONFIG_ACPI_NUMA) && (ACPI_CA_VERSION >= 0x20170531)

The struct name was changed :/

s/acpi_srat_its_affinity/acpi_srat_gic_its_affinity/

You need to update this too.

-Robert

>
> matching what is currently in -next.
>
> Thanks,
>
> M.
> --
> Jazz is not dead. It just smells funny...
> _______________________________________________
> Devel mailing list
> [email protected]
> https://lists.acpica.org/mailman/listinfo/devel

2017-06-26 17:43:56

by Marc Zyngier

[permalink] [raw]
Subject: Re: [Devel] [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

On 26/06/17 18:38, Robert Richter wrote:
> On 22.06.17 15:49:25, Marc Zyngier wrote:
>> On 22/06/17 07:10, Ganapatrao Kulkarni wrote:
>>> Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
>>> Later in per device probe, ITS devices are mapped to numa node using
>>> ITS Id to proximity domain mapping.
>>>
>>> Signed-off-by: Ganapatrao Kulkarni <[email protected]>
>>> ---
>>> drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
>>> 1 file changed, 74 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
>>> index 45ea1933..1c21e01 100644
>>> --- a/drivers/irqchip/irq-gic-v3-its.c
>>> +++ b/drivers/irqchip/irq-gic-v3-its.c
>>> @@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)
>>>
>>> #define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
>>>
>>> +#ifdef CONFIG_ACPI_NUMA
>>
>> So given that there is a dependency issue between the irqchip and apcica
>> trees, I plan on taking this patch with the following change:
>>
>> #if defined(CONFIG_ACPI_NUMA) && (ACPI_CA_VERSION >= 0x20170531)
>
> The struct name was changed :/
>
> s/acpi_srat_its_affinity/acpi_srat_gic_its_affinity/
>
> You need to update this too.

I changed it when I applied the patch. See

https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?h=irq/irqchip-4.13&id=dbd2b826723319eb6e4bee5214f8901e336c06be

Which is also in tip/irq/core.

Thanks,

M.
--
Jazz is not dead. It just smells funny...

2017-06-26 17:45:13

by Robert Richter

[permalink] [raw]
Subject: Re: [Devel] [PATCH v4 2/2] acpi, gicv3-its, numa: Adding numa node mapping for gic-its units

On 26.06.17 18:43:47, Marc Zyngier wrote:
> On 26/06/17 18:38, Robert Richter wrote:
> > On 22.06.17 15:49:25, Marc Zyngier wrote:
> >> On 22/06/17 07:10, Ganapatrao Kulkarni wrote:
> >>> Add code to parse SRAT ITS Affinity sub table as defined in ACPI 6.2.
> >>> Later in per device probe, ITS devices are mapped to numa node using
> >>> ITS Id to proximity domain mapping.
> >>>
> >>> Signed-off-by: Ganapatrao Kulkarni <[email protected]>
> >>> ---
> >>> drivers/irqchip/irq-gic-v3-its.c | 75 +++++++++++++++++++++++++++++++++++++++-
> >>> 1 file changed, 74 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
> >>> index 45ea1933..1c21e01 100644
> >>> --- a/drivers/irqchip/irq-gic-v3-its.c
> >>> +++ b/drivers/irqchip/irq-gic-v3-its.c
> >>> @@ -1833,6 +1833,77 @@ static int __init its_of_probe(struct device_node *node)
> >>>
> >>> #define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
> >>>
> >>> +#ifdef CONFIG_ACPI_NUMA
> >>
> >> So given that there is a dependency issue between the irqchip and apcica
> >> trees, I plan on taking this patch with the following change:
> >>
> >> #if defined(CONFIG_ACPI_NUMA) && (ACPI_CA_VERSION >= 0x20170531)
> >
> > The struct name was changed :/
> >
> > s/acpi_srat_its_affinity/acpi_srat_gic_its_affinity/
> >
> > You need to update this too.
>
> I changed it when I applied the patch. See
>
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?h=irq/irqchip-4.13&id=dbd2b826723319eb6e4bee5214f8901e336c06be
>
> Which is also in tip/irq/core.

Great, thanks for the pointer.

-Robert