perf/arm_cspmu: Simplify counter reset
authorRobin Murphy <robin.murphy@arm.com>
Tue, 6 Feb 2024 10:27:56 +0000 (10:27 +0000)
committerWill Deacon <will@kernel.org>
Fri, 9 Feb 2024 17:34:35 +0000 (17:34 +0000)
arm_cspmu_reset_counters() inherently also stops them since it is
writing 0 to PMCR.E, so there should be no need to do that twice.
Also tidy up the reset routine itself for consistency with the start
and stop routines, and to be clear at first glance that it is simply
writing a constant value.

Reviewed-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/3105815327989f6bb7bb068994d0eb4096b4ef64.1706718007.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/perf/arm_cspmu/arm_cspmu.c

index e87bf0f64f01c9e8f32800784c77bd121cd109b9..5919ef63c2a87c8eabd461dd5660962229e5c714 100644 (file)
@@ -525,11 +525,7 @@ static int arm_cspmu_alloc_attr_groups(struct arm_cspmu *cspmu)
 
 static inline void arm_cspmu_reset_counters(struct arm_cspmu *cspmu)
 {
-       u32 pmcr = 0;
-
-       pmcr |= PMCR_P;
-       pmcr |= PMCR_C;
-       writel(pmcr, cspmu->base0 + PMCR);
+       writel(PMCR_C | PMCR_P, cspmu->base0 + PMCR);
 }
 
 static inline void arm_cspmu_start_counters(struct arm_cspmu *cspmu)
@@ -1187,7 +1183,6 @@ static int arm_cspmu_register_pmu(struct arm_cspmu *cspmu)
        };
 
        /* Hardware counter init */
-       arm_cspmu_stop_counters(cspmu);
        arm_cspmu_reset_counters(cspmu);
 
        ret = perf_pmu_register(&cspmu->pmu, cspmu->name, -1);