Commit a2573bc7 authored by Besar Wicaksono's avatar Besar Wicaksono Committed by Will Deacon
Browse files

perf/arm_cspmu: Add callback to reset filter config



Implementer may need to reset a filter config when
stopping a counter, thus adding a callback for this.

Reviewed-by: default avatarIlkka Koskinen <ilkka@os.amperecomputing.com>
Reviewed-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: default avatarBesar Wicaksono <bwicaksono@nvidia.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent c3d78c34
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -815,6 +815,10 @@ static void arm_cspmu_stop(struct perf_event *event, int pmu_flags)
		return;

	arm_cspmu_disable_counter(cspmu, hwc->idx);

	if (cspmu->impl.ops.reset_ev_filter)
		cspmu->impl.ops.reset_ev_filter(cspmu, event);

	arm_cspmu_event_update(event);

	hwc->state |= PERF_HES_STOPPED | PERF_HES_UPTODATE;
+3 −1
Original line number Diff line number Diff line
@@ -152,11 +152,13 @@ struct arm_cspmu_impl_ops {
	bool (*is_cycle_counter_event)(const struct perf_event *event);
	/* Decode event type/id from configs */
	u32 (*event_type)(const struct perf_event *event);
	/* Set event filters */
	/* Set/reset event filters */
	void (*set_cc_filter)(struct arm_cspmu *cspmu,
			      const struct perf_event *event);
	void (*set_ev_filter)(struct arm_cspmu *cspmu,
			      const struct perf_event *event);
	void (*reset_ev_filter)(struct arm_cspmu *cspmu,
				const struct perf_event *event);
	/* Implementation specific event validation */
	int (*validate_event)(struct arm_cspmu *cspmu,
			      struct perf_event *event);