diff options
Diffstat (limited to 'include/linux/perf')
| -rw-r--r-- | include/linux/perf/arm_pmu.h | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h index 0e55e4016f49..5bc4836af286 100644 --- a/include/linux/perf/arm_pmu.h +++ b/include/linux/perf/arm_pmu.h @@ -77,6 +77,12 @@ struct pmu_hw_events { struct arm_pmu *percpu_pmu; }; +enum armpmu_pmu_states { + ARM_PMU_STATE_OFF, + ARM_PMU_STATE_RUNNING, + ARM_PMU_STATE_GOING_DOWN, +}; + struct arm_pmu { struct pmu pmu; cpumask_t active_irqs; @@ -101,9 +107,12 @@ struct arm_pmu { void (*free_irq)(struct arm_pmu *); int (*map_event)(struct perf_event *event); int num_events; + int pmu_state; + int percpu_irq; atomic_t active_events; struct mutex reserve_mutex; u64 max_period; + bool secure_access; /* 32-bit ARM only */ struct platform_device *plat_device; struct pmu_hw_events __percpu *hw_events; struct notifier_block hotplug_nb; @@ -112,7 +121,10 @@ struct arm_pmu { #define to_arm_pmu(p) (container_of(p, struct arm_pmu, pmu)) -int armpmu_register(struct arm_pmu *armpmu, int type); +extern const unsigned armv8_pmuv3_perf_map[PERF_COUNT_HW_MAX]; +extern const unsigned armv8_pmuv3_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] + [PERF_COUNT_HW_CACHE_OP_MAX] + [PERF_COUNT_HW_CACHE_RESULT_MAX]; u64 armpmu_event_update(struct perf_event *event); @@ -150,6 +162,18 @@ int arm_pmu_device_probe(struct platform_device *pdev, const struct of_device_id *of_table, const struct pmu_probe_info *probe_table); +void armv8_pmu_init(struct arm_pmu *cpu_pmu); +int armv8pmu_enable_intens(int idx); +int armv8pmu_disable_intens(int idx); +int armv8pmu_enable_counter(int idx); +int armv8pmu_disable_counter(int idx); +u32 armv8pmu_getreset_flags(void); +void armv8pmu_pmcr_write(u32 val); +void armv8pmu_write_evtype(int idx, u32 val); +int armv8pmu_probe_num_events(struct arm_pmu *arm_pmu); + +int kryo_pmu_init(struct arm_pmu *cpu_pmu); + #endif /* CONFIG_ARM_PMU */ #endif /* __ARM_PMU_H__ */ |
