arm64: perf: Expose some Armv9 common events under sysfs
authorShaokun Zhang <zhangshaokun@hisilicon.com>
Thu, 3 Mar 2022 08:54:19 +0000 (16:54 +0800)
committerWill Deacon <will@kernel.org>
Tue, 8 Mar 2022 11:40:44 +0000 (11:40 +0000)
Armv9[1] has introduced some common architectural events (0x400C-0x400F)
and common microarchitectural events (0x4010-0x401B), which can be detected
by PMCEID0_EL0 from bit44 to bit59, so expose these common events under
sysfs.

[1] https://developer.arm.com/documentation/ddi0608/ba

Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
Link: https://lore.kernel.org/r/20220303085419.64085-1-zhangshaokun@hisilicon.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/perf_event.h
arch/arm64/kernel/perf_event.c

index 4ef6f19331f981dc7ddd9c49ca93a8a4222a9902..b93cafd8313a1b33084d7a69bc724162b7d25f9a 100644 (file)
 #define        ARMV8_PMUV3_PERFCTR_L2I_CACHE_LMISS                     0x400A
 #define        ARMV8_PMUV3_PERFCTR_L3D_CACHE_LMISS_RD                  0x400B
 
+/* Trace buffer events */
+#define ARMV8_PMUV3_PERFCTR_TRB_WRAP                           0x400C
+#define ARMV8_PMUV3_PERFCTR_TRB_TRIG                           0x400E
+
+/* Trace unit events */
+#define ARMV8_PMUV3_PERFCTR_TRCEXTOUT0                         0x4010
+#define ARMV8_PMUV3_PERFCTR_TRCEXTOUT1                         0x4011
+#define ARMV8_PMUV3_PERFCTR_TRCEXTOUT2                         0x4012
+#define ARMV8_PMUV3_PERFCTR_TRCEXTOUT3                         0x4013
+#define ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT4                       0x4018
+#define ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT5                       0x4019
+#define ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT6                       0x401A
+#define ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT7                       0x401B
+
 /* additional latency from alignment events */
 #define        ARMV8_PMUV3_PERFCTR_LDST_ALIGN_LAT                      0x4020
 #define        ARMV8_PMUV3_PERFCTR_LD_ALIGN_LAT                        0x4021
index cab678ed661839a0392bce1777a05be8d967cb96..cb69ff1e61380b7f5371b6dde6436dd09f672c74 100644 (file)
@@ -242,6 +242,16 @@ static struct attribute *armv8_pmuv3_event_attrs[] = {
        ARMV8_EVENT_ATTR(l2d_cache_lmiss_rd, ARMV8_PMUV3_PERFCTR_L2D_CACHE_LMISS_RD),
        ARMV8_EVENT_ATTR(l2i_cache_lmiss, ARMV8_PMUV3_PERFCTR_L2I_CACHE_LMISS),
        ARMV8_EVENT_ATTR(l3d_cache_lmiss_rd, ARMV8_PMUV3_PERFCTR_L3D_CACHE_LMISS_RD),
+       ARMV8_EVENT_ATTR(trb_wrap, ARMV8_PMUV3_PERFCTR_TRB_WRAP),
+       ARMV8_EVENT_ATTR(trb_trig, ARMV8_PMUV3_PERFCTR_TRB_TRIG),
+       ARMV8_EVENT_ATTR(trcextout0, ARMV8_PMUV3_PERFCTR_TRCEXTOUT0),
+       ARMV8_EVENT_ATTR(trcextout1, ARMV8_PMUV3_PERFCTR_TRCEXTOUT1),
+       ARMV8_EVENT_ATTR(trcextout2, ARMV8_PMUV3_PERFCTR_TRCEXTOUT2),
+       ARMV8_EVENT_ATTR(trcextout3, ARMV8_PMUV3_PERFCTR_TRCEXTOUT3),
+       ARMV8_EVENT_ATTR(cti_trigout4, ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT4),
+       ARMV8_EVENT_ATTR(cti_trigout5, ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT5),
+       ARMV8_EVENT_ATTR(cti_trigout6, ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT6),
+       ARMV8_EVENT_ATTR(cti_trigout7, ARMV8_PMUV3_PERFCTR_CTI_TRIGOUT7),
        ARMV8_EVENT_ATTR(ldst_align_lat, ARMV8_PMUV3_PERFCTR_LDST_ALIGN_LAT),
        ARMV8_EVENT_ATTR(ld_align_lat, ARMV8_PMUV3_PERFCTR_LD_ALIGN_LAT),
        ARMV8_EVENT_ATTR(st_align_lat, ARMV8_PMUV3_PERFCTR_ST_ALIGN_LAT),