| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * linux/arch/arm/include/asm/pmu.h |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2009 picoChip Designs Ltd, Jamie Iles |
|---|
| 5 | | - * |
|---|
| 6 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 7 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 8 | | - * published by the Free Software Foundation. |
|---|
| 9 | | - * |
|---|
| 10 | 6 | */ |
|---|
| 11 | 7 | |
|---|
| 12 | 8 | #ifndef __ARM_PMU_H__ |
|---|
| .. | .. |
|---|
| 77 | 73 | ARMPMU_ATTR_GROUP_COMMON, |
|---|
| 78 | 74 | ARMPMU_ATTR_GROUP_EVENTS, |
|---|
| 79 | 75 | ARMPMU_ATTR_GROUP_FORMATS, |
|---|
| 76 | + ARMPMU_ATTR_GROUP_CAPS, |
|---|
| 80 | 77 | ARMPMU_NR_ATTR_GROUPS |
|---|
| 81 | 78 | }; |
|---|
| 82 | 79 | |
|---|
| .. | .. |
|---|
| 84 | 81 | struct pmu pmu; |
|---|
| 85 | 82 | cpumask_t supported_cpus; |
|---|
| 86 | 83 | char *name; |
|---|
| 84 | + int pmuver; |
|---|
| 87 | 85 | irqreturn_t (*handle_irq)(struct arm_pmu *pmu); |
|---|
| 88 | 86 | void (*enable)(struct perf_event *event); |
|---|
| 89 | 87 | void (*disable)(struct perf_event *event); |
|---|
| .. | .. |
|---|
| 102 | 100 | int (*filter_match)(struct perf_event *event); |
|---|
| 103 | 101 | int num_events; |
|---|
| 104 | 102 | bool secure_access; /* 32-bit ARM only */ |
|---|
| 105 | | -#define ARMV8_PMUV3_MAX_COMMON_EVENTS 0x40 |
|---|
| 103 | +#define ARMV8_PMUV3_MAX_COMMON_EVENTS 0x40 |
|---|
| 106 | 104 | DECLARE_BITMAP(pmceid_bitmap, ARMV8_PMUV3_MAX_COMMON_EVENTS); |
|---|
| 105 | +#define ARMV8_PMUV3_EXT_COMMON_EVENT_BASE 0x4000 |
|---|
| 106 | + DECLARE_BITMAP(pmceid_ext_bitmap, ARMV8_PMUV3_MAX_COMMON_EVENTS); |
|---|
| 107 | 107 | struct platform_device *plat_device; |
|---|
| 108 | 108 | struct pmu_hw_events __percpu *hw_events; |
|---|
| 109 | 109 | struct hlist_node node; |
|---|
| 110 | 110 | struct notifier_block cpu_pm_nb; |
|---|
| 111 | 111 | /* the attr_groups array must be NULL-terminated */ |
|---|
| 112 | 112 | const struct attribute_group *attr_groups[ARMPMU_NR_ATTR_GROUPS + 1]; |
|---|
| 113 | + /* store the PMMIR_EL1 to expose slots */ |
|---|
| 114 | + u64 reg_pmmir; |
|---|
| 113 | 115 | |
|---|
| 114 | 116 | /* Only to be used by ACPI probing code */ |
|---|
| 115 | 117 | unsigned long acpi_cpuid; |
|---|
| .. | .. |
|---|
| 173 | 175 | |
|---|
| 174 | 176 | #endif /* CONFIG_ARM_PMU */ |
|---|
| 175 | 177 | |
|---|
| 178 | +#define ARMV8_SPE_PDEV_NAME "arm,spe-v1" |
|---|
| 179 | + |
|---|
| 176 | 180 | #endif /* __ARM_PMU_H__ */ |
|---|