perf branch: Add PERF_BR_NEW_ARCH_[N] map for BRBE on arm64 platform
authorAnshuman Khandual <anshuman.khandual@arm.com>
Wed, 24 Aug 2022 04:48:22 +0000 (10:18 +0530)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Oct 2022 11:55:20 +0000 (08:55 -0300)
This updates the perf tool with arch specific branch type classification
used for BRBE on arm64 platform as added in the kernel earlier.

Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Link: https://lore.kernel.org/r/20220824044822.70230-9-anshuman.khandual@arm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/include/uapi/linux/perf_event.h
tools/perf/util/branch.c

index 51168e22f4d874ae81b1b674a314eb77dc759fef..49cb2355efc0c1361b68d3a9d5a9832a92f5cbfd 100644 (file)
@@ -282,6 +282,12 @@ enum {
        PERF_BR_PRIV_HV         = 3,
 };
 
+#define PERF_BR_ARM64_FIQ              PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT       PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT       PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST       PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA       PERF_BR_NEW_ARCH_5
+
 #define PERF_SAMPLE_BRANCH_PLM_ALL \
        (PERF_SAMPLE_BRANCH_USER|\
         PERF_SAMPLE_BRANCH_KERNEL|\
index 675cbbe80ce379f750037fab2b9750591ddadfec..6d38238481d327d00b5e13fa6171f387e4d50d16 100644 (file)
@@ -45,11 +45,24 @@ const char *branch_new_type_name(int new_type)
                "FAULT_ALGN",
                "FAULT_DATA",
                "FAULT_INST",
+/*
+ * TODO: This switch should happen on 'session->header.env.arch'
+ * instead, because an arm64 platform perf recording could be
+ * opened for analysis on other platforms as well.
+ */
+#ifdef __aarch64__
+               "ARM64_FIQ",
+               "ARM64_DEBUG_HALT",
+               "ARM64_DEBUG_EXIT",
+               "ARM64_DEBUG_INST",
+               "ARM64_DEBUG_DATA"
+#else
                "ARCH_1",
                "ARCH_2",
                "ARCH_3",
                "ARCH_4",
                "ARCH_5"
+#endif
        };
 
        if (new_type >= 0 && new_type < PERF_BR_NEW_MAX)