Message ID | 1569854031-237636-7-git-send-email-john.garry@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | SMMUv3 PMCG IMP DEF event support | expand |
On 2019/9/30 22:33, John Garry wrote: > Now that we can identify a PMCG implementation from the parent SMMUv3 > IIDR, drop all the code to match based on the ACPI OEM ID. > > Signed-off-by: John Garry <john.garry@huawei.com> > --- > drivers/acpi/arm64/iort.c | 35 +---------------------------------- > include/linux/acpi_iort.h | 8 -------- > 2 files changed, 1 insertion(+), 42 deletions(-) > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > index 0b687520c3e7..d04888cb8cff 100644 > --- a/drivers/acpi/arm64/iort.c > +++ b/drivers/acpi/arm64/iort.c > @@ -1377,27 +1377,6 @@ static void __init arm_smmu_v3_pmcg_init_resources(struct resource *res, > ACPI_EDGE_SENSITIVE, &res[2]); > } > > -static struct acpi_platform_list pmcg_plat_info[] __initdata = { > - /* HiSilicon Hip08 Platform */ > - {"HISI ", "HIP08 ", 0, ACPI_SIG_IORT, greater_than_or_equal, > - "Erratum #162001800", IORT_SMMU_V3_PMCG_HISI_HIP08}, > - { } > -}; > - > -static int __init arm_smmu_v3_pmcg_add_platdata(struct platform_device *pdev) > -{ > - u32 model; > - int idx; > - > - idx = acpi_match_platform_list(pmcg_plat_info); > - if (idx >= 0) > - model = pmcg_plat_info[idx].data; > - else > - model = IORT_SMMU_V3_PMCG_GENERIC; > - > - return platform_device_add_data(pdev, &model, sizeof(model)); > -} > - > struct iort_dev_config { > const char *name; > int (*dev_init)(struct acpi_iort_node *node); > @@ -1408,7 +1387,6 @@ struct iort_dev_config { > struct acpi_iort_node *node); > int (*dev_set_proximity)(struct device *dev, > struct acpi_iort_node *node); > - int (*dev_add_platdata)(struct platform_device *pdev); > }; > > static const struct iort_dev_config iort_arm_smmu_v3_cfg __initconst = { > @@ -1430,7 +1408,6 @@ static const struct iort_dev_config iort_arm_smmu_v3_pmcg_cfg __initconst = { > .name = "arm-smmu-v3-pmcg", > .dev_count_resources = arm_smmu_v3_pmcg_count_resources, > .dev_init_resources = arm_smmu_v3_pmcg_init_resources, > - .dev_add_platdata = arm_smmu_v3_pmcg_add_platdata, > }; > > static __init const struct iort_dev_config *iort_get_dev_cfg( > @@ -1494,17 +1471,7 @@ static int __init iort_add_platform_device(struct acpi_iort_node *node, > if (ret) > goto dev_put; > > - /* > - * Platform devices based on PMCG nodes uses platform_data to > - * pass the hardware model info to the driver. For others, add > - * a copy of IORT node pointer to platform_data to be used to > - * retrieve IORT data information. > - */ > - if (ops->dev_add_platdata) > - ret = ops->dev_add_platdata(pdev); > - else > - ret = platform_device_add_data(pdev, &node, sizeof(node)); > - > + ret = platform_device_add_data(pdev, &node, sizeof(node)); > if (ret) > goto dev_put; > > diff --git a/include/linux/acpi_iort.h b/include/linux/acpi_iort.h > index 8e7e2ec37f1b..7a8961e6a8bb 100644 > --- a/include/linux/acpi_iort.h > +++ b/include/linux/acpi_iort.h > @@ -14,14 +14,6 @@ > #define IORT_IRQ_MASK(irq) (irq & 0xffffffffULL) > #define IORT_IRQ_TRIGGER_MASK(irq) ((irq >> 32) & 0xffffffffULL) > > -/* > - * PMCG model identifiers for use in smmu pmu driver. Please note > - * that this is purely for the use of software and has nothing to > - * do with hardware or with IORT specification. > - */ > -#define IORT_SMMU_V3_PMCG_GENERIC 0x00000000 /* Generic SMMUv3 PMCG */ > -#define IORT_SMMU_V3_PMCG_HISI_HIP08 0x00000001 /* HiSilicon HIP08 PMCG */ Since only HiSilicon platform has such erratum, and I think it works with both old version of firmware, I'm fine with removing this erratum framework. Acked-by: Hanjun Guo <guohanjun@huawei.com> Thanks Hanjun
On 15/10/2019 04:06, Hanjun Guo wrote: >> -/* >> > - * PMCG model identifiers for use in smmu pmu driver. Please note >> > - * that this is purely for the use of software and has nothing to >> > - * do with hardware or with IORT specification. >> > - */ >> > -#define IORT_SMMU_V3_PMCG_GENERIC 0x00000000 /* Generic SMMUv3 PMCG */ >> > -#define IORT_SMMU_V3_PMCG_HISI_HIP08 0x00000001 /* HiSilicon HIP08 PMCG */ > Since only HiSilicon platform has such erratum, and I think it works with > both old version of firmware, I'm fine with removing this erratum framework. > Yeah, seems a decent change on its own, even without the SMMU PMCG driver changes. But we still need to check on patch "[PATCH RFC 2/6] iommu/arm-smmu-v3: Record IIDR in arm_smmu_device structure" to progress any of this. Will, Robin, Any opinion on that patch? https://lore.kernel.org/linux-iommu/1569854031-237636-1-git-send-email-john.garry@huawei.com/T/#m1e24771a23ee5426ec94ca2c4ec572642c155a77 > Acked-by: Hanjun Guo <guohanjun@huawei.com> Cheers, John > > Thanks > Hanjun > > > . >
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index 0b687520c3e7..d04888cb8cff 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -1377,27 +1377,6 @@ static void __init arm_smmu_v3_pmcg_init_resources(struct resource *res, ACPI_EDGE_SENSITIVE, &res[2]); } -static struct acpi_platform_list pmcg_plat_info[] __initdata = { - /* HiSilicon Hip08 Platform */ - {"HISI ", "HIP08 ", 0, ACPI_SIG_IORT, greater_than_or_equal, - "Erratum #162001800", IORT_SMMU_V3_PMCG_HISI_HIP08}, - { } -}; - -static int __init arm_smmu_v3_pmcg_add_platdata(struct platform_device *pdev) -{ - u32 model; - int idx; - - idx = acpi_match_platform_list(pmcg_plat_info); - if (idx >= 0) - model = pmcg_plat_info[idx].data; - else - model = IORT_SMMU_V3_PMCG_GENERIC; - - return platform_device_add_data(pdev, &model, sizeof(model)); -} - struct iort_dev_config { const char *name; int (*dev_init)(struct acpi_iort_node *node); @@ -1408,7 +1387,6 @@ struct iort_dev_config { struct acpi_iort_node *node); int (*dev_set_proximity)(struct device *dev, struct acpi_iort_node *node); - int (*dev_add_platdata)(struct platform_device *pdev); }; static const struct iort_dev_config iort_arm_smmu_v3_cfg __initconst = { @@ -1430,7 +1408,6 @@ static const struct iort_dev_config iort_arm_smmu_v3_pmcg_cfg __initconst = { .name = "arm-smmu-v3-pmcg", .dev_count_resources = arm_smmu_v3_pmcg_count_resources, .dev_init_resources = arm_smmu_v3_pmcg_init_resources, - .dev_add_platdata = arm_smmu_v3_pmcg_add_platdata, }; static __init const struct iort_dev_config *iort_get_dev_cfg( @@ -1494,17 +1471,7 @@ static int __init iort_add_platform_device(struct acpi_iort_node *node, if (ret) goto dev_put; - /* - * Platform devices based on PMCG nodes uses platform_data to - * pass the hardware model info to the driver. For others, add - * a copy of IORT node pointer to platform_data to be used to - * retrieve IORT data information. - */ - if (ops->dev_add_platdata) - ret = ops->dev_add_platdata(pdev); - else - ret = platform_device_add_data(pdev, &node, sizeof(node)); - + ret = platform_device_add_data(pdev, &node, sizeof(node)); if (ret) goto dev_put; diff --git a/include/linux/acpi_iort.h b/include/linux/acpi_iort.h index 8e7e2ec37f1b..7a8961e6a8bb 100644 --- a/include/linux/acpi_iort.h +++ b/include/linux/acpi_iort.h @@ -14,14 +14,6 @@ #define IORT_IRQ_MASK(irq) (irq & 0xffffffffULL) #define IORT_IRQ_TRIGGER_MASK(irq) ((irq >> 32) & 0xffffffffULL) -/* - * PMCG model identifiers for use in smmu pmu driver. Please note - * that this is purely for the use of software and has nothing to - * do with hardware or with IORT specification. - */ -#define IORT_SMMU_V3_PMCG_GENERIC 0x00000000 /* Generic SMMUv3 PMCG */ -#define IORT_SMMU_V3_PMCG_HISI_HIP08 0x00000001 /* HiSilicon HIP08 PMCG */ - int iort_register_domain_token(int trans_id, phys_addr_t base, struct fwnode_handle *fw_node); void iort_deregister_domain_token(int trans_id);
Now that we can identify a PMCG implementation from the parent SMMUv3 IIDR, drop all the code to match based on the ACPI OEM ID. Signed-off-by: John Garry <john.garry@huawei.com> --- drivers/acpi/arm64/iort.c | 35 +---------------------------------- include/linux/acpi_iort.h | 8 -------- 2 files changed, 1 insertion(+), 42 deletions(-)