Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>
Signed-off-by: Will Deacon <will@kernel.org>

authored by

Besar Wicaksono and committed by
Will Deacon
a2573bc7 c3d78c34

+7 -1
+4
drivers/perf/arm_cspmu/arm_cspmu.c
··· 815 815 return; 816 816 817 817 arm_cspmu_disable_counter(cspmu, hwc->idx); 818 + 819 + if (cspmu->impl.ops.reset_ev_filter) 820 + cspmu->impl.ops.reset_ev_filter(cspmu, event); 821 + 818 822 arm_cspmu_event_update(event); 819 823 820 824 hwc->state |= PERF_HES_STOPPED | PERF_HES_UPTODATE;
+3 -1
drivers/perf/arm_cspmu/arm_cspmu.h
··· 152 152 bool (*is_cycle_counter_event)(const struct perf_event *event); 153 153 /* Decode event type/id from configs */ 154 154 u32 (*event_type)(const struct perf_event *event); 155 - /* Set event filters */ 155 + /* Set/reset event filters */ 156 156 void (*set_cc_filter)(struct arm_cspmu *cspmu, 157 157 const struct perf_event *event); 158 158 void (*set_ev_filter)(struct arm_cspmu *cspmu, 159 159 const struct perf_event *event); 160 + void (*reset_ev_filter)(struct arm_cspmu *cspmu, 161 + const struct perf_event *event); 160 162 /* Implementation specific event validation */ 161 163 int (*validate_event)(struct arm_cspmu *cspmu, 162 164 struct perf_event *event);