* [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices @ 2017-06-08 4:44 Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping Ganapatrao Kulkarni ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Ganapatrao Kulkarni @ 2017-06-08 4:44 UTC (permalink / raw) To: linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, robin.murphy, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni ARM IORT specification(rev. C) has added provision to define proximity domain in SMMUv3 IORT table. Adding required code to parse Proximity domain and set numa_node of smmv3 platform devices. v3: - Addressed Lorenzo Pieralisi comment. v2: - Changed as per Lorenzo Pieralisi and Hanjun Guo suggestions. v1: - Initial patch Ganapatrao Kulkarni (2): acpica: iort: Update SMMUv3 header for proximity domain mapping acpi/iort: numa: Add numa node mapping for smmuv3 devices drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- include/acpi/actbl2.h | 4 ++++ 2 files changed, 30 insertions(+), 2 deletions(-) -- 1.8.1.4 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping 2017-06-08 4:44 [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni @ 2017-06-08 4:44 ` Ganapatrao Kulkarni 2017-06-19 17:54 ` Robin Murphy 2017-06-08 4:44 ` [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-08 9:04 ` [PATCH v3 0/2] acpi/iort, " John Garry 2 siblings, 1 reply; 12+ messages in thread From: Ganapatrao Kulkarni @ 2017-06-08 4:44 UTC (permalink / raw) To: linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, robin.murphy, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni ARM IORT specification (rev. C) has added two new fields to define proximity domain for the SMMUv3 node in the IORT table. Proximity Domain Valid: Set to 1 if the value provided in the Proximity Domain field is valid. Set to 0 otherwise. Proximity domain: If the Proximity Domain Valid flag is set to 1, this entry provides the proximity domain to which this SMMU instance belongs. Update header file to reflect this. Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> --- include/acpi/actbl2.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 4b306a6..389e91f 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h @@ -805,6 +805,9 @@ struct acpi_iort_smmu_v3 { u32 pri_gsiv; u32 gerr_gsiv; u32 sync_gsiv; + u8 pxm; + u8 reserved1; + u16 reserved2; }; /* Values for Model field above */ @@ -817,6 +820,7 @@ struct acpi_iort_smmu_v3 { #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) +#define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) /******************************************************************************* * -- 1.8.1.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping 2017-06-08 4:44 ` [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping Ganapatrao Kulkarni @ 2017-06-19 17:54 ` Robin Murphy 2017-06-20 2:27 ` Ganapatrao Kulkarni 0 siblings, 1 reply; 12+ messages in thread From: Robin Murphy @ 2017-06-19 17:54 UTC (permalink / raw) To: Ganapatrao Kulkarni, linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni On 08/06/17 05:44, Ganapatrao Kulkarni wrote: > ARM IORT specification (rev. C) has added two new fields to define > proximity domain for the SMMUv3 node in the IORT table. > > Proximity Domain Valid: > Set to 1 if the value provided in the Proximity Domain field is > valid. Set to 0 otherwise. > > Proximity domain: > If the Proximity Domain Valid flag is set to 1, this entry > provides the proximity domain to which this SMMU > instance belongs. > > Update header file to reflect this. > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > --- > include/acpi/actbl2.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h > index 4b306a6..389e91f 100644 > --- a/include/acpi/actbl2.h > +++ b/include/acpi/actbl2.h > @@ -805,6 +805,9 @@ struct acpi_iort_smmu_v3 { > u32 pri_gsiv; > u32 gerr_gsiv; > u32 sync_gsiv; > + u8 pxm; > + u8 reserved1; > + u16 reserved2; Why add the padding if you're not also adding the following field that it aligns? (side note: could it not just be a u8[3]?) If the actual structure definition is changing, do there not need to be corresponding IASL changes too? > }; > > /* Values for Model field above */ > @@ -817,6 +820,7 @@ struct acpi_iort_smmu_v3 { > > #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) > #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) > +#define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) Maybe it's just me, but "PXM" seems incredibly cryptic. Robin. > > /******************************************************************************* > * > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping 2017-06-19 17:54 ` Robin Murphy @ 2017-06-20 2:27 ` Ganapatrao Kulkarni 0 siblings, 0 replies; 12+ messages in thread From: Ganapatrao Kulkarni @ 2017-06-20 2:27 UTC (permalink / raw) To: Robin Murphy Cc: Ganapatrao Kulkarni, linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will Deacon, Lorenzo Pieralisi, Hanjun Guo, sudeep.holla, Lv Zheng, joro, Rafael J. Wysocki, Len Brown, Jayachandran C On Mon, Jun 19, 2017 at 11:24 PM, Robin Murphy <robin.murphy@arm.com> wrote: > On 08/06/17 05:44, Ganapatrao Kulkarni wrote: >> ARM IORT specification (rev. C) has added two new fields to define >> proximity domain for the SMMUv3 node in the IORT table. >> >> Proximity Domain Valid: >> Set to 1 if the value provided in the Proximity Domain field is >> valid. Set to 0 otherwise. >> >> Proximity domain: >> If the Proximity Domain Valid flag is set to 1, this entry >> provides the proximity domain to which this SMMU >> instance belongs. >> >> Update header file to reflect this. >> >> Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> >> --- >> include/acpi/actbl2.h | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h >> index 4b306a6..389e91f 100644 >> --- a/include/acpi/actbl2.h >> +++ b/include/acpi/actbl2.h >> @@ -805,6 +805,9 @@ struct acpi_iort_smmu_v3 { >> u32 pri_gsiv; >> u32 gerr_gsiv; >> u32 sync_gsiv; >> + u8 pxm; >> + u8 reserved1; >> + u16 reserved2; > > Why add the padding if you're not also adding the following field that > it aligns? (side note: could it not just be a u8[3]?) added to align as well to comply with the spec. > > If the actual structure definition is changing, do there not need to be > corresponding IASL changes too? yes, it is been added and sent to acpica devel ML. https://lists.acpica.org/pipermail/devel/2017-June/001243.html > >> }; >> >> /* Values for Model field above */ >> @@ -817,6 +820,7 @@ struct acpi_iort_smmu_v3 { >> >> #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) >> #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) >> +#define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) > > Maybe it's just me, but "PXM" seems incredibly cryptic. PXM stands for proximity(refer ACPI spec) it is widely used in spec and also in Linux kernel. > > Robin. > >> >> /******************************************************************************* >> * >> > thanks Ganapat ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-06-08 4:44 [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping Ganapatrao Kulkarni @ 2017-06-08 4:44 ` Ganapatrao Kulkarni 2017-06-15 13:46 ` Lorenzo Pieralisi 2017-07-22 3:23 ` Hanjun Guo 2017-06-08 9:04 ` [PATCH v3 0/2] acpi/iort, " John Garry 2 siblings, 2 replies; 12+ messages in thread From: Ganapatrao Kulkarni @ 2017-06-08 4:44 UTC (permalink / raw) To: linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, robin.murphy, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni Add code to parse proximity domain in SMMUv3 IORT table to set numa node mapping for smmuv3 devices. Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> --- drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index bba2b59..e804386 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; } +/* + * set numa proximity domain for smmuv3 device + */ +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, + struct device *dev) +{ + struct acpi_iort_smmu_v3 *smmu; + + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); + pr_info("SMMUV3[%llx] Mapped to Proximity domain %d\n", + smmu->base_address, + smmu->pxm); + } +} + static int __init arm_smmu_count_resources(struct acpi_iort_node *node) { struct acpi_iort_smmu *smmu; @@ -951,20 +968,24 @@ struct iort_iommu_config { int (*iommu_count_resources)(struct acpi_iort_node *node); void (*iommu_init_resources)(struct resource *res, struct acpi_iort_node *node); + void (*iommu_set_proximity)(struct acpi_iort_node *node, + struct device *dev); }; static const struct iort_iommu_config iort_arm_smmu_v3_cfg __initconst = { .name = "arm-smmu-v3", .iommu_is_coherent = arm_smmu_v3_is_coherent, .iommu_count_resources = arm_smmu_v3_count_resources, - .iommu_init_resources = arm_smmu_v3_init_resources + .iommu_init_resources = arm_smmu_v3_init_resources, + .iommu_set_proximity = arm_smmu_v3_set_proximity }; static const struct iort_iommu_config iort_arm_smmu_cfg __initconst = { .name = "arm-smmu", .iommu_is_coherent = arm_smmu_is_coherent, .iommu_count_resources = arm_smmu_count_resources, - .iommu_init_resources = arm_smmu_init_resources + .iommu_init_resources = arm_smmu_init_resources, + .iommu_set_proximity = NULL }; static __init @@ -1002,6 +1023,9 @@ static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node) if (!pdev) return -ENOMEM; + if (ops->iommu_set_proximity) + ops->iommu_set_proximity(node, &pdev->dev); + count = ops->iommu_count_resources(node); r = kcalloc(count, sizeof(*r), GFP_KERNEL); -- 1.8.1.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-06-08 4:44 ` [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni @ 2017-06-15 13:46 ` Lorenzo Pieralisi 2017-06-28 17:47 ` Robert Richter 2017-07-22 3:23 ` Hanjun Guo 1 sibling, 1 reply; 12+ messages in thread From: Lorenzo Pieralisi @ 2017-06-15 13:46 UTC (permalink / raw) To: Ganapatrao Kulkarni, lv.zheng, rjw Cc: linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will.Deacon, hanjun.guo, sudeep.holla, robin.murphy, joro, lenb, jnair, gpkulkarni Hi, On Thu, Jun 08, 2017 at 10:14:19AM +0530, Ganapatrao Kulkarni wrote: > Add code to parse proximity domain in SMMUv3 IORT table to > set numa node mapping for smmuv3 devices. > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > --- > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) I am happy to take this but I want to know what we shall do with patch 1 and related ACPICA changes first. Thanks, Lorenzo > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > index bba2b59..e804386 100644 > --- a/drivers/acpi/arm64/iort.c > +++ b/drivers/acpi/arm64/iort.c > @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) > return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; > } > > +/* > + * set numa proximity domain for smmuv3 device > + */ > +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, > + struct device *dev) > +{ > + struct acpi_iort_smmu_v3 *smmu; > + > + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { > + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); > + pr_info("SMMUV3[%llx] Mapped to Proximity domain %d\n", > + smmu->base_address, > + smmu->pxm); > + } > +} > + > static int __init arm_smmu_count_resources(struct acpi_iort_node *node) > { > struct acpi_iort_smmu *smmu; > @@ -951,20 +968,24 @@ struct iort_iommu_config { > int (*iommu_count_resources)(struct acpi_iort_node *node); > void (*iommu_init_resources)(struct resource *res, > struct acpi_iort_node *node); > + void (*iommu_set_proximity)(struct acpi_iort_node *node, > + struct device *dev); > }; > > static const struct iort_iommu_config iort_arm_smmu_v3_cfg __initconst = { > .name = "arm-smmu-v3", > .iommu_is_coherent = arm_smmu_v3_is_coherent, > .iommu_count_resources = arm_smmu_v3_count_resources, > - .iommu_init_resources = arm_smmu_v3_init_resources > + .iommu_init_resources = arm_smmu_v3_init_resources, > + .iommu_set_proximity = arm_smmu_v3_set_proximity > }; > > static const struct iort_iommu_config iort_arm_smmu_cfg __initconst = { > .name = "arm-smmu", > .iommu_is_coherent = arm_smmu_is_coherent, > .iommu_count_resources = arm_smmu_count_resources, > - .iommu_init_resources = arm_smmu_init_resources > + .iommu_init_resources = arm_smmu_init_resources, > + .iommu_set_proximity = NULL > }; > > static __init > @@ -1002,6 +1023,9 @@ static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node) > if (!pdev) > return -ENOMEM; > > + if (ops->iommu_set_proximity) > + ops->iommu_set_proximity(node, &pdev->dev); > + > count = ops->iommu_count_resources(node); > > r = kcalloc(count, sizeof(*r), GFP_KERNEL); > -- > 1.8.1.4 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-06-15 13:46 ` Lorenzo Pieralisi @ 2017-06-28 17:47 ` Robert Richter 2017-07-04 10:07 ` Lorenzo Pieralisi 0 siblings, 1 reply; 12+ messages in thread From: Robert Richter @ 2017-06-28 17:47 UTC (permalink / raw) To: Lorenzo Pieralisi Cc: Ganapatrao Kulkarni, lv.zheng, rjw, linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will.Deacon, hanjun.guo, sudeep.holla, robin.murphy, joro, lenb, jnair, gpkulkarni On 15.06.17 14:46:03, Lorenzo Pieralisi wrote: > On Thu, Jun 08, 2017 at 10:14:19AM +0530, Ganapatrao Kulkarni wrote: > > Add code to parse proximity domain in SMMUv3 IORT table to > > set numa node mapping for smmuv3 devices. > > > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > > --- > > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > > 1 file changed, 26 insertions(+), 2 deletions(-) > > I am happy to take this but I want to know what we shall do with > patch 1 and related ACPICA changes first. The change is now in acpica: https://github.com/acpica/acpica/commit/8cadc4fb500e2aa52241e367c87a0f95d9760c58 So we could guard the code with an #ifdef until that patch is pulled in via acpica tree: > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > > index bba2b59..e804386 100644 > > --- a/drivers/acpi/arm64/iort.c > > +++ b/drivers/acpi/arm64/iort.c > > @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) > > return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; > > } > > > > +/* > > + * set numa proximity domain for smmuv3 device > > + */ > > +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, > > + struct device *dev) > > +{ #ifdef ACPI_IORT_SMMU_V3_PXM_VALID > > + struct acpi_iort_smmu_v3 *smmu; > > + > > + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > > + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { > > + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); > > + pr_info("SMMUV3[%llx] Mapped to Proximity domain %d\n", > > + smmu->base_address, > > + smmu->pxm); > > + } #endif > > +} > > + Could the patch be applied with this change? Thanks, -Robert > > static int __init arm_smmu_count_resources(struct acpi_iort_node *node) > > { > > struct acpi_iort_smmu *smmu; > > @@ -951,20 +968,24 @@ struct iort_iommu_config { > > int (*iommu_count_resources)(struct acpi_iort_node *node); > > void (*iommu_init_resources)(struct resource *res, > > struct acpi_iort_node *node); > > + void (*iommu_set_proximity)(struct acpi_iort_node *node, > > + struct device *dev); > > }; > > > > static const struct iort_iommu_config iort_arm_smmu_v3_cfg __initconst = { > > .name = "arm-smmu-v3", > > .iommu_is_coherent = arm_smmu_v3_is_coherent, > > .iommu_count_resources = arm_smmu_v3_count_resources, > > - .iommu_init_resources = arm_smmu_v3_init_resources > > + .iommu_init_resources = arm_smmu_v3_init_resources, > > + .iommu_set_proximity = arm_smmu_v3_set_proximity > > }; > > > > static const struct iort_iommu_config iort_arm_smmu_cfg __initconst = { > > .name = "arm-smmu", > > .iommu_is_coherent = arm_smmu_is_coherent, > > .iommu_count_resources = arm_smmu_count_resources, > > - .iommu_init_resources = arm_smmu_init_resources > > + .iommu_init_resources = arm_smmu_init_resources, > > + .iommu_set_proximity = NULL > > }; > > > > static __init > > @@ -1002,6 +1023,9 @@ static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node) > > if (!pdev) > > return -ENOMEM; > > > > + if (ops->iommu_set_proximity) > > + ops->iommu_set_proximity(node, &pdev->dev); > > + > > count = ops->iommu_count_resources(node); > > > > r = kcalloc(count, sizeof(*r), GFP_KERNEL); > > -- > > 1.8.1.4 > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-06-28 17:47 ` Robert Richter @ 2017-07-04 10:07 ` Lorenzo Pieralisi 2017-07-06 11:20 ` Robert Richter 0 siblings, 1 reply; 12+ messages in thread From: Lorenzo Pieralisi @ 2017-07-04 10:07 UTC (permalink / raw) To: Robert Richter Cc: Ganapatrao Kulkarni, lv.zheng, rjw, linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will.Deacon, hanjun.guo, sudeep.holla, robin.murphy, joro, lenb, jnair, gpkulkarni Hi Robert, On Wed, Jun 28, 2017 at 07:47:50PM +0200, Robert Richter wrote: > On 15.06.17 14:46:03, Lorenzo Pieralisi wrote: > > On Thu, Jun 08, 2017 at 10:14:19AM +0530, Ganapatrao Kulkarni wrote: > > > Add code to parse proximity domain in SMMUv3 IORT table to > > > set numa node mapping for smmuv3 devices. > > > > > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > > > --- > > > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > > > 1 file changed, 26 insertions(+), 2 deletions(-) > > > > I am happy to take this but I want to know what we shall do with > > patch 1 and related ACPICA changes first. > > The change is now in acpica: > > https://github.com/acpica/acpica/commit/8cadc4fb500e2aa52241e367c87a0f95d9760c58 > > So we could guard the code with an #ifdef until that patch is pulled > in via acpica tree: > > > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > > > index bba2b59..e804386 100644 > > > --- a/drivers/acpi/arm64/iort.c > > > +++ b/drivers/acpi/arm64/iort.c > > > @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) > > > return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; > > > } > > > > > > +/* > > > + * set numa proximity domain for smmuv3 device > > > + */ > > > +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, > > > + struct device *dev) > > > +{ > > #ifdef ACPI_IORT_SMMU_V3_PXM_VALID > > > > + struct acpi_iort_smmu_v3 *smmu; > > > + > > > + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > > > + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { > > > + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); > > > + pr_info("SMMUV3[%llx] Mapped to Proximity domain %d\n", > > > + smmu->base_address, > > > + smmu->pxm); > > > + } > > #endif > > > > +} > > > + > > Could the patch be applied with this change? Sorry I was away (and the ARM64 tree was not accepting any new code last week anyway), I will send the patch upstream for 4.14 (with your change above - or whatever ACPICA guard make it safe - since we will depend on ACPICA changes merge timing anyway - they won't be merged this cycle). Bad timing, apologies, I hope it is not a burden to carry it for one cycle. Thanks, Lorenzo > > Thanks, > > -Robert > > > > static int __init arm_smmu_count_resources(struct acpi_iort_node *node) > > > { > > > struct acpi_iort_smmu *smmu; > > > @@ -951,20 +968,24 @@ struct iort_iommu_config { > > > int (*iommu_count_resources)(struct acpi_iort_node *node); > > > void (*iommu_init_resources)(struct resource *res, > > > struct acpi_iort_node *node); > > > + void (*iommu_set_proximity)(struct acpi_iort_node *node, > > > + struct device *dev); > > > }; > > > > > > static const struct iort_iommu_config iort_arm_smmu_v3_cfg __initconst = { > > > .name = "arm-smmu-v3", > > > .iommu_is_coherent = arm_smmu_v3_is_coherent, > > > .iommu_count_resources = arm_smmu_v3_count_resources, > > > - .iommu_init_resources = arm_smmu_v3_init_resources > > > + .iommu_init_resources = arm_smmu_v3_init_resources, > > > + .iommu_set_proximity = arm_smmu_v3_set_proximity > > > }; > > > > > > static const struct iort_iommu_config iort_arm_smmu_cfg __initconst = { > > > .name = "arm-smmu", > > > .iommu_is_coherent = arm_smmu_is_coherent, > > > .iommu_count_resources = arm_smmu_count_resources, > > > - .iommu_init_resources = arm_smmu_init_resources > > > + .iommu_init_resources = arm_smmu_init_resources, > > > + .iommu_set_proximity = NULL > > > }; > > > > > > static __init > > > @@ -1002,6 +1023,9 @@ static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node) > > > if (!pdev) > > > return -ENOMEM; > > > > > > + if (ops->iommu_set_proximity) > > > + ops->iommu_set_proximity(node, &pdev->dev); > > > + > > > count = ops->iommu_count_resources(node); > > > > > > r = kcalloc(count, sizeof(*r), GFP_KERNEL); > > > -- > > > 1.8.1.4 > > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-07-04 10:07 ` Lorenzo Pieralisi @ 2017-07-06 11:20 ` Robert Richter 0 siblings, 0 replies; 12+ messages in thread From: Robert Richter @ 2017-07-06 11:20 UTC (permalink / raw) To: Lorenzo Pieralisi Cc: Ganapatrao Kulkarni, lv.zheng, rjw, linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will.Deacon, hanjun.guo, sudeep.holla, robin.murphy, joro, lenb, jnair, gpkulkarni On 04.07.17 11:07:59, Lorenzo Pieralisi wrote: > On Wed, Jun 28, 2017 at 07:47:50PM +0200, Robert Richter wrote: > > On 15.06.17 14:46:03, Lorenzo Pieralisi wrote: > > > On Thu, Jun 08, 2017 at 10:14:19AM +0530, Ganapatrao Kulkarni wrote: > > > > Add code to parse proximity domain in SMMUv3 IORT table to > > > > set numa node mapping for smmuv3 devices. > > > > > > > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > > > > --- > > > > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > > > > 1 file changed, 26 insertions(+), 2 deletions(-) > > > > > > I am happy to take this but I want to know what we shall do with > > > patch 1 and related ACPICA changes first. > > > > The change is now in acpica: > > > > https://github.com/acpica/acpica/commit/8cadc4fb500e2aa52241e367c87a0f95d9760c58 > > > > So we could guard the code with an #ifdef until that patch is pulled > > in via acpica tree: > > > > > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > > > > index bba2b59..e804386 100644 > > > > --- a/drivers/acpi/arm64/iort.c > > > > +++ b/drivers/acpi/arm64/iort.c > > > > @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) > > > > return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; > > > > } > > > > > > > > +/* > > > > + * set numa proximity domain for smmuv3 device > > > > + */ > > > > +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, > > > > + struct device *dev) > > > > +{ > > > > #ifdef ACPI_IORT_SMMU_V3_PXM_VALID > > > > > > + struct acpi_iort_smmu_v3 *smmu; > > > > + > > > > + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > > > > + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { > > > > + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); > > > > + pr_info("SMMUV3[%llx] Mapped to Proximity domain %d\n", > > > > + smmu->base_address, > > > > + smmu->pxm); > > > > + } > > > > #endif > > > > > > +} > > > > + > > > > Could the patch be applied with this change? > > Sorry I was away (and the ARM64 tree was not accepting any new code last > week anyway), I will send the patch upstream for 4.14 (with your change > above - or whatever ACPICA guard make it safe - since we will depend on > ACPICA changes merge timing anyway - they won't be merged this cycle). > > Bad timing, apologies, I hope it is not a burden to carry it for one > cycle. No problem. Good to hear this is accepted for 4.14. Thanks, -Robert ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-06-08 4:44 ` [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-15 13:46 ` Lorenzo Pieralisi @ 2017-07-22 3:23 ` Hanjun Guo 2017-07-22 13:05 ` Ganapatrao Kulkarni 1 sibling, 1 reply; 12+ messages in thread From: Hanjun Guo @ 2017-07-22 3:23 UTC (permalink / raw) To: Ganapatrao Kulkarni, linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, robin.murphy, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni Hi Ganapat, On 2017/6/8 12:44, Ganapatrao Kulkarni wrote: > Add code to parse proximity domain in SMMUv3 IORT table to > set numa node mapping for smmuv3 devices. > > Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> > --- > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > index bba2b59..e804386 100644 > --- a/drivers/acpi/arm64/iort.c > +++ b/drivers/acpi/arm64/iort.c > @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) > return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; > } > > +/* > + * set numa proximity domain for smmuv3 device > + */ > +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, > + struct device *dev) > +{ > + struct acpi_iort_smmu_v3 *smmu; > + > + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; > + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { > + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); ^^ Will have compile error in !CONFIG_NUMA, I think we need to introduce a stub function in acpi_numa.h. Thanks Hanjun ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices 2017-07-22 3:23 ` Hanjun Guo @ 2017-07-22 13:05 ` Ganapatrao Kulkarni 0 siblings, 0 replies; 12+ messages in thread From: Ganapatrao Kulkarni @ 2017-07-22 13:05 UTC (permalink / raw) To: Hanjun Guo Cc: Ganapatrao Kulkarni, linux-kernel, linux-arm-kernel, linux-acpi, iommu, Will Deacon, Lorenzo Pieralisi, Hanjun Guo, sudeep.holla, Robin Murphy, Lv Zheng, joro, Rafael J. Wysocki, Len Brown, Jayachandran C On Sat, Jul 22, 2017 at 8:53 AM, Hanjun Guo <guohanjun@huawei.com> wrote: > Hi Ganapat, > > On 2017/6/8 12:44, Ganapatrao Kulkarni wrote: >> Add code to parse proximity domain in SMMUv3 IORT table to >> set numa node mapping for smmuv3 devices. >> >> Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> >> --- >> drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- >> 1 file changed, 26 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c >> index bba2b59..e804386 100644 >> --- a/drivers/acpi/arm64/iort.c >> +++ b/drivers/acpi/arm64/iort.c >> @@ -882,6 +882,23 @@ static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) >> return smmu->flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE; >> } >> >> +/* >> + * set numa proximity domain for smmuv3 device >> + */ >> +static void __init arm_smmu_v3_set_proximity(struct acpi_iort_node *node, >> + struct device *dev) >> +{ >> + struct acpi_iort_smmu_v3 *smmu; >> + >> + smmu = (struct acpi_iort_smmu_v3 *)node->node_data; >> + if (smmu->flags & ACPI_IORT_SMMU_V3_PXM_VALID) { >> + set_dev_node(dev, acpi_map_pxm_to_node(smmu->pxm)); > ^^ > Will have compile error in !CONFIG_NUMA, I think we need to introduce > a stub function in acpi_numa.h. thanks Hanjun, i thought it is already there in header file, however, there is stub for acpi_map_pxm_to_online_node and not for this function. it is better to have ifdef. will do it in next version. > > Thanks > Hanjun > thanks Ganapat ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices 2017-06-08 4:44 [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni @ 2017-06-08 9:04 ` John Garry 2 siblings, 0 replies; 12+ messages in thread From: John Garry @ 2017-06-08 9:04 UTC (permalink / raw) To: Ganapatrao Kulkarni, linux-kernel, linux-arm-kernel, linux-acpi, iommu Cc: Will.Deacon, lorenzo.pieralisi, hanjun.guo, sudeep.holla, robin.murphy, lv.zheng, joro, rjw, lenb, jnair, gpkulkarni On 08/06/2017 05:44, Ganapatrao Kulkarni wrote: > ARM IORT specification(rev. C) has added provision to define proximity > domain in SMMUv3 IORT table. Adding required code to parse Proximity > domain and set numa_node of smmv3 platform devices. > > v3: > - Addressed Lorenzo Pieralisi comment. > > v2: > - Changed as per Lorenzo Pieralisi and Hanjun Guo suggestions. > > v1: > - Initial patch > > Ganapatrao Kulkarni (2): > acpica: iort: Update SMMUv3 header for proximity domain mapping > acpi/iort: numa: Add numa node mapping for smmuv3 devices > > drivers/acpi/arm64/iort.c | 28 ++++++++++++++++++++++++++-- > include/acpi/actbl2.h | 4 ++++ > 2 files changed, 30 insertions(+), 2 deletions(-) > We'll try and test this in the next day or so. John ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-07-22 13:05 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-06-08 4:44 [PATCH v3 0/2] acpi/iort, numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 1/2] acpica: iort: Update SMMUv3 header for proximity domain mapping Ganapatrao Kulkarni 2017-06-19 17:54 ` Robin Murphy 2017-06-20 2:27 ` Ganapatrao Kulkarni 2017-06-08 4:44 ` [PATCH v3 2/2] acpi/iort: numa: Add numa node mapping for smmuv3 devices Ganapatrao Kulkarni 2017-06-15 13:46 ` Lorenzo Pieralisi 2017-06-28 17:47 ` Robert Richter 2017-07-04 10:07 ` Lorenzo Pieralisi 2017-07-06 11:20 ` Robert Richter 2017-07-22 3:23 ` Hanjun Guo 2017-07-22 13:05 ` Ganapatrao Kulkarni 2017-06-08 9:04 ` [PATCH v3 0/2] acpi/iort, " John Garry
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).