From: James Clark <james.clark@arm.com>
To: Anshuman Khandual <anshuman.khandual@arm.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
peterz@infradead.org, acme@kernel.org
Cc: Robin Murphy <robin.murphy@arm.com>,
Suzuki Poulose <suzuki.poulose@arm.com>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH V5 6/8] perf/tools: Extend branch type classification
Date: Tue, 19 Apr 2022 15:01:32 +0100 [thread overview]
Message-ID: <bfd96c4a-ae39-da29-b785-76b2308cd4ff@arm.com> (raw)
In-Reply-To: <20220404045046.634522-7-anshuman.khandual@arm.com>
On 04/04/2022 05:50, Anshuman Khandual wrote:
> This updates the perf tool with generic branch type classification with new
> ABI extender place holder i.e PERF_BR_EXTEND_ABI, the new 4 bit branch type
> field i.e perf_branch_entry.new_type, new generic page fault related branch
> types and some arch specific branch types as added earlier in the kernel.
>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Will Deacon <will@kernel.org>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-perf-users@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
> ---
> tools/include/uapi/linux/perf_event.h | 16 +++++++++++++++-
> tools/perf/util/branch.c | 3 ++-
> tools/perf/util/branch.h | 3 ++-
> 3 files changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/linux/perf_event.h
> index 26d8f0b5ac0d..d29280adc3c4 100644
> --- a/tools/include/uapi/linux/perf_event.h
> +++ b/tools/include/uapi/linux/perf_event.h
> @@ -255,9 +255,22 @@ enum {
> PERF_BR_IRQ = 12, /* irq */
> PERF_BR_SERROR = 13, /* system error */
> PERF_BR_NO_TX = 14, /* not in transaction */
> + PERF_BR_EXTEND_ABI = 15, /* extend ABI */
> PERF_BR_MAX,
> };
>
> +enum {
> + PERF_BR_NEW_FAULT_ALGN = 0, /* Alignment fault */
> + PERF_BR_NEW_FAULT_DATA = 1, /* Data fault */
> + PERF_BR_NEW_FAULT_INST = 2, /* Inst fault */
> + PERF_BR_NEW_ARCH_1 = 3, /* Architecture specific */
> + PERF_BR_NEW_ARCH_2 = 4, /* Architecture specific */
> + PERF_BR_NEW_ARCH_3 = 5, /* Architecture specific */
> + PERF_BR_NEW_ARCH_4 = 6, /* Architecture specific */
> + PERF_BR_NEW_ARCH_5 = 7, /* Architecture specific */
> + PERF_BR_NEW_MAX,
> +};
> +
> #define PERF_SAMPLE_BRANCH_PLM_ALL \
> (PERF_SAMPLE_BRANCH_USER|\
> PERF_SAMPLE_BRANCH_KERNEL|\
> @@ -1372,7 +1385,8 @@ struct perf_branch_entry {
> abort:1, /* transaction abort */
> cycles:16, /* cycle count to last branch */
> type:4, /* branch type */
> - reserved:40;
> + new_type:4, /* additional branch type */
> + reserved:36;
> };
>
> union perf_sample_weight {
> diff --git a/tools/perf/util/branch.c b/tools/perf/util/branch.c
> index abc673347bee..4bd52de0527c 100644
> --- a/tools/perf/util/branch.c
> +++ b/tools/perf/util/branch.c
> @@ -53,7 +53,8 @@ const char *branch_type_name(int type)
> "ERET",
> "IRQ",
> "SERROR",
> - "NO_TX"
> + "NO_TX",
> + "EXTEND_ABI"
Hi Anshuman,
I still think it's best to make this change a bit more transparent to the internals
of perf and to users. For example if they dump the file, they'll see "EXTEND_ABI"
printed out, but what they really want to see is whatever the branch type is,
including the new types.
The same goes for any function that accesses the branch type (if there is one),
it should just return the final type and skip the details about EXTEND_ABI.
If that was done I don't think you'd need to add that string because as it would
never get printed.
Thanks
James
> };
>
> if (type >= 0 && type < PERF_BR_MAX)
> diff --git a/tools/perf/util/branch.h b/tools/perf/util/branch.h
> index 17b2ccc61094..37b6ed546c46 100644
> --- a/tools/perf/util/branch.h
> +++ b/tools/perf/util/branch.h
> @@ -24,7 +24,8 @@ struct branch_flags {
> u64 abort:1;
> u64 cycles:16;
> u64 type:4;
> - u64 reserved:40;
> + u64 new_type:4;
> + u64 reserved:36;
> };
> };
> };
next prev parent reply other threads:[~2022-04-19 14:01 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-04 4:50 [PATCH V5 0/8] perf: Expand perf_branch_entry Anshuman Khandual
2022-04-04 4:50 ` [PATCH V5 1/8] perf: Add system error and not in transaction branch types Anshuman Khandual
2022-04-19 13:55 ` James Clark
2022-04-04 4:50 ` [PATCH V5 2/8] perf: Extend branch type classification Anshuman Khandual
2022-04-19 13:56 ` James Clark
2022-04-04 4:50 ` [PATCH V5 3/8] perf: Capture branch privilege information Anshuman Khandual
2022-04-04 4:50 ` [PATCH V5 4/8] perf: Add PERF_BR_NEW_ARCH_[N] map for BRBE on arm64 platform Anshuman Khandual
2022-04-19 13:57 ` James Clark
2022-04-04 4:50 ` [PATCH V5 5/8] perf/tools: Add system error and not in transaction branch types Anshuman Khandual
2022-04-19 13:58 ` James Clark
2022-04-04 4:50 ` [PATCH V5 6/8] perf/tools: Extend branch type classification Anshuman Khandual
2022-04-19 14:01 ` James Clark [this message]
2022-04-04 4:50 ` [PATCH V5 7/8] perf/tools: Add branch privilege information request flag Anshuman Khandual
2022-04-04 4:50 ` [PATCH V5 8/8] perf/tools: Add PERF_BR_NEW_ARCH_[N] map for BRBE on arm64 platform Anshuman Khandual
2022-04-11 5:46 ` [PATCH V5 0/8] perf: Expand perf_branch_entry Anshuman Khandual
2022-04-18 6:47 ` Anshuman Khandual
2022-04-28 13:45 ` Arnaldo Carvalho de Melo
2022-05-11 3:49 ` Anshuman Khandual
2022-05-11 4:28 ` Anshuman Khandual
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bfd96c4a-ae39-da29-b785-76b2308cd4ff@arm.com \
--to=james.clark@arm.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=anshuman.khandual@arm.com \
--cc=jolsa@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=robin.murphy@arm.com \
--cc=suzuki.poulose@arm.com \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox