Skip to content

Commit 55fdc1f

Browse files
zhangshkwilldeacon
authored andcommitted
arm64: perf: Expose some new events via sysfs
Some new PMU events can been detected by PMCEID1_EL0, but it can't be listed, Let's expose these through sysfs. Signed-off-by: Shaokun Zhang <[email protected]> Cc: Will Deacon <[email protected]> Cc: Mark Rutland <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Will Deacon <[email protected]>
1 parent 5271d91 commit 55fdc1f

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

arch/arm64/include/asm/perf_event.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,40 @@
7272
#define ARMV8_PMUV3_PERFCTR_LL_CACHE_RD 0x36
7373
#define ARMV8_PMUV3_PERFCTR_LL_CACHE_MISS_RD 0x37
7474
#define ARMV8_PMUV3_PERFCTR_REMOTE_ACCESS_RD 0x38
75+
#define ARMV8_PMUV3_PERFCTR_L1D_CACHE_LMISS_RD 0x39
76+
#define ARMV8_PMUV3_PERFCTR_OP_RETIRED 0x3A
77+
#define ARMV8_PMUV3_PERFCTR_OP_SPEC 0x3B
78+
#define ARMV8_PMUV3_PERFCTR_STALL 0x3C
79+
#define ARMV8_PMUV3_PERFCTR_STALL_SLOT_BACKEND 0x3D
80+
#define ARMV8_PMUV3_PERFCTR_STALL_SLOT_FRONTEND 0x3E
81+
#define ARMV8_PMUV3_PERFCTR_STALL_SLOT 0x3F
7582

7683
/* Statistical profiling extension microarchitectural events */
7784
#define ARMV8_SPE_PERFCTR_SAMPLE_POP 0x4000
7885
#define ARMV8_SPE_PERFCTR_SAMPLE_FEED 0x4001
7986
#define ARMV8_SPE_PERFCTR_SAMPLE_FILTRATE 0x4002
8087
#define ARMV8_SPE_PERFCTR_SAMPLE_COLLISION 0x4003
8188

89+
/* AMUv1 architecture events */
90+
#define ARMV8_AMU_PERFCTR_CNT_CYCLES 0x4004
91+
#define ARMV8_AMU_PERFCTR_STALL_BACKEND_MEM 0x4005
92+
93+
/* long-latency read miss events */
94+
#define ARMV8_PMUV3_PERFCTR_L1I_CACHE_LMISS 0x4006
95+
#define ARMV8_PMUV3_PERFCTR_L2D_CACHE_LMISS_RD 0x4009
96+
#define ARMV8_PMUV3_PERFCTR_L2I_CACHE_LMISS 0x400A
97+
#define ARMV8_PMUV3_PERFCTR_L3D_CACHE_LMISS_RD 0x400B
98+
99+
/* additional latency from alignment events */
100+
#define ARMV8_PMUV3_PERFCTR_LDST_ALIGN_LAT 0x4020
101+
#define ARMV8_PMUV3_PERFCTR_LD_ALIGN_LAT 0x4021
102+
#define ARMV8_PMUV3_PERFCTR_ST_ALIGN_LAT 0x4022
103+
104+
/* Armv8.5 Memory Tagging Extension events */
105+
#define ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED 0x4024
106+
#define ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED_RD 0x4025
107+
#define ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED_WR 0x4026
108+
82109
/* ARMv8 recommended implementation defined event types */
83110
#define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_RD 0x40
84111
#define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR 0x41

arch/arm64/kernel/perf_event.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,29 @@ static struct attribute *armv8_pmuv3_event_attrs[] = {
225225
ARMV8_EVENT_ATTR(ll_cache_rd, ARMV8_PMUV3_PERFCTR_LL_CACHE_RD),
226226
ARMV8_EVENT_ATTR(ll_cache_miss_rd, ARMV8_PMUV3_PERFCTR_LL_CACHE_MISS_RD),
227227
ARMV8_EVENT_ATTR(remote_access_rd, ARMV8_PMUV3_PERFCTR_REMOTE_ACCESS_RD),
228+
ARMV8_EVENT_ATTR(l1d_cache_lmiss_rd, ARMV8_PMUV3_PERFCTR_L1D_CACHE_LMISS_RD),
229+
ARMV8_EVENT_ATTR(op_retired, ARMV8_PMUV3_PERFCTR_OP_RETIRED),
230+
ARMV8_EVENT_ATTR(op_spec, ARMV8_PMUV3_PERFCTR_OP_SPEC),
231+
ARMV8_EVENT_ATTR(stall, ARMV8_PMUV3_PERFCTR_STALL),
232+
ARMV8_EVENT_ATTR(stall_slot_backend, ARMV8_PMUV3_PERFCTR_STALL_SLOT_BACKEND),
233+
ARMV8_EVENT_ATTR(stall_slot_frontend, ARMV8_PMUV3_PERFCTR_STALL_SLOT_FRONTEND),
234+
ARMV8_EVENT_ATTR(stall_slot, ARMV8_PMUV3_PERFCTR_STALL_SLOT),
228235
ARMV8_EVENT_ATTR(sample_pop, ARMV8_SPE_PERFCTR_SAMPLE_POP),
229236
ARMV8_EVENT_ATTR(sample_feed, ARMV8_SPE_PERFCTR_SAMPLE_FEED),
230237
ARMV8_EVENT_ATTR(sample_filtrate, ARMV8_SPE_PERFCTR_SAMPLE_FILTRATE),
231238
ARMV8_EVENT_ATTR(sample_collision, ARMV8_SPE_PERFCTR_SAMPLE_COLLISION),
239+
ARMV8_EVENT_ATTR(cnt_cycles, ARMV8_AMU_PERFCTR_CNT_CYCLES),
240+
ARMV8_EVENT_ATTR(stall_backend_mem, ARMV8_AMU_PERFCTR_STALL_BACKEND_MEM),
241+
ARMV8_EVENT_ATTR(l1i_cache_lmiss, ARMV8_PMUV3_PERFCTR_L1I_CACHE_LMISS),
242+
ARMV8_EVENT_ATTR(l2d_cache_lmiss_rd, ARMV8_PMUV3_PERFCTR_L2D_CACHE_LMISS_RD),
243+
ARMV8_EVENT_ATTR(l2i_cache_lmiss, ARMV8_PMUV3_PERFCTR_L2I_CACHE_LMISS),
244+
ARMV8_EVENT_ATTR(l3d_cache_lmiss_rd, ARMV8_PMUV3_PERFCTR_L3D_CACHE_LMISS_RD),
245+
ARMV8_EVENT_ATTR(ldst_align_lat, ARMV8_PMUV3_PERFCTR_LDST_ALIGN_LAT),
246+
ARMV8_EVENT_ATTR(ld_align_lat, ARMV8_PMUV3_PERFCTR_LD_ALIGN_LAT),
247+
ARMV8_EVENT_ATTR(st_align_lat, ARMV8_PMUV3_PERFCTR_ST_ALIGN_LAT),
248+
ARMV8_EVENT_ATTR(mem_access_checked, ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED),
249+
ARMV8_EVENT_ATTR(mem_access_checked_rd, ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED_RD),
250+
ARMV8_EVENT_ATTR(mem_access_checked_wr, ARMV8_MTE_PERFCTR_MEM_ACCESS_CHECKED_WR),
232251
NULL,
233252
};
234253

0 commit comments

Comments
 (0)