diff options
author | Yicong Yang <yangyicong@hisilicon.com> | 2023-08-14 20:40:12 +0800 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2023-08-15 12:50:53 +0100 |
commit | 0242737dc4eb9f6e9a5ea594b3f93efa0b12f28d (patch) | |
tree | d2fb73c51f6d8711c94248be23b6a581175a2abe /drivers/acpi/arm64 | |
parent | 90d68677226ac7cf344648919df2016686b3e2ab (diff) | |
download | linux-stable-0242737dc4eb9f6e9a5ea594b3f93efa0b12f28d.tar.gz linux-stable-0242737dc4eb9f6e9a5ea594b3f93efa0b12f28d.tar.bz2 linux-stable-0242737dc4eb9f6e9a5ea594b3f93efa0b12f28d.zip |
perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09
Some HiSilicon SMMU PMCG suffers the erratum 162001900 that the PMU
disable control sometimes fail to disable the counters. This will lead
to error or inaccurate data since before we enable the counters the
counter's still counting for the event used in last perf session.
This patch tries to fix this by hardening the global disable process.
Before disable the PMU, writing an invalid event type (0xffff) to
focibly stop the counters. Correspondingly restore each events on
pmu::pmu_enable().
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Link: https://lore.kernel.org/r/20230814124012.58013-1-yangyicong@huawei.com
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'drivers/acpi/arm64')
-rw-r--r-- | drivers/acpi/arm64/iort.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index 3631230a61c8..2c1640fd2b16 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -1711,7 +1711,10 @@ static void __init arm_smmu_v3_pmcg_init_resources(struct resource *res, 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}, + "Erratum #162001800, Erratum #162001900", IORT_SMMU_V3_PMCG_HISI_HIP08}, + /* HiSilicon Hip09 Platform */ + {"HISI ", "HIP09 ", 0, ACPI_SIG_IORT, greater_than_or_equal, + "Erratum #162001900", IORT_SMMU_V3_PMCG_HISI_HIP09}, { } }; |