* [PATCH 0/2 v2] perf: Fix missing branch counter information in script and annotate
@ 2026-04-29 15:29 Thomas Falcon
2026-04-29 15:29 ` [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit Thomas Falcon
2026-04-29 15:29 ` [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode Thomas Falcon
0 siblings, 2 replies; 5+ messages in thread
From: Thomas Falcon @ 2026-04-29 15:29 UTC (permalink / raw)
To: linux-perf-users
Cc: linux-kernel, Peter Zijlstra, Ingo Molnar,
Arnaldo Carvalho de Melo, Namhyung Kim, Mark Rutland,
Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter,
James Clark, Dapeng Mi
This series fixes two issues related to branch counter (br_cntr)
display in perf.
The first patch fixes a missing '+' indicator in 'perf script' output.
The '+' suffix is used to signal that event occurrences may have been
lost due to branch counter overflow.
The second patch fixes a regression in 'perf annotate' TUI mode where
the Branch Count column was never displayed. The check for whether to
enable branch counter display was performed before events were processed
and the counter data was populated, so the condition was never satisfied.
Moving the check to after event processing resolves this.
v2: Added a cover letter and expanded commit message for patch 1/2.
Patch 2/2 was missing some conditional checks to enable branch counter
display, which have been added back.
Dapeng Mi (1):
perf script: Fix missing '+' indicator when branch counter reaches
upper limit
Thomas Falcon (1):
perf annotate: Fix missing branch counter column in TUI mode
tools/perf/builtin-annotate.c | 9 +++++----
tools/perf/builtin-script.c | 8 ++++++--
2 files changed, 11 insertions(+), 6 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit 2026-04-29 15:29 [PATCH 0/2 v2] perf: Fix missing branch counter information in script and annotate Thomas Falcon @ 2026-04-29 15:29 ` Thomas Falcon 2026-04-30 0:37 ` Mi, Dapeng 2026-04-29 15:29 ` [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode Thomas Falcon 1 sibling, 1 reply; 5+ messages in thread From: Thomas Falcon @ 2026-04-29 15:29 UTC (permalink / raw) To: linux-perf-users Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark, Dapeng Mi From: Dapeng Mi <dapeng1.mi@linux.intel.com> When displaying branch counter (br_cntr) information, a "+" suffix represents that event occurrences may have been lost due to branch counter saturation. However, this indicator was missing in perf script. Add it back. Before: # Branch counter abbr list: # cpu_core/event=0xc4,umask=0x20/ppp = A # cpu_core/instructions/ = B # cpu_core/MEM_INST_RETIRED.ALL_LOADS/ = C # cpu_core/MEM_LOAD_RETIRED.L2_MISS/ = D # '-' No event occurs # '+' Event occurrences may be lost due to branch counter saturated ... datasym+190: 00005567f9951676 jz 0x5567f995162dr_cntr: BBBC # PRED 1 cycles [1] ... After: ... datasym+190: 00005567f9951676 jz 0x5567f995162dr_cntr: BBB+C # PRED 1 cycles [1] ... Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com> Signed-off-by: Thomas Falcon <thomas.falcon@intel.com> --- tools/perf/builtin-script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index c8ac9f01a36b..f865c8b2f95f 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -1287,8 +1287,12 @@ static int ip__fprintf_jump(uint64_t ip, struct branch_entry *en, if (!verbose) { for (j = 0; j < num; j++) printed += fprintf(fp, "%s", pos->abbr_name); - } else - printed += fprintf(fp, "%s %d ", pos->name, num); + if (num == mask) + printed += fprintf(fp, "+"); + } else { + printed += fprintf(fp, "%s %d%s", pos->name, + num, num == mask ? "+ " : " "); + } } if (numprinted == 0 && !verbose) printed += fprintf(fp, "-"); -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit 2026-04-29 15:29 ` [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit Thomas Falcon @ 2026-04-30 0:37 ` Mi, Dapeng 0 siblings, 0 replies; 5+ messages in thread From: Mi, Dapeng @ 2026-04-30 0:37 UTC (permalink / raw) To: Thomas Falcon, linux-perf-users Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark On 4/29/2026 11:29 PM, Thomas Falcon wrote: > From: Dapeng Mi <dapeng1.mi@linux.intel.com> > > When displaying branch counter (br_cntr) information, a "+" > suffix represents that event occurrences may have been lost > due to branch counter saturation. However, this indicator was > missing in perf script. Add it back. > > Before: > > # Branch counter abbr list: > # cpu_core/event=0xc4,umask=0x20/ppp = A > # cpu_core/instructions/ = B > # cpu_core/MEM_INST_RETIRED.ALL_LOADS/ = C > # cpu_core/MEM_LOAD_RETIRED.L2_MISS/ = D > # '-' No event occurs > # '+' Event occurrences may be lost due to branch counter saturated > ... > datasym+190: > 00005567f9951676 jz 0x5567f995162dr_cntr: BBBC # PRED 1 cycles [1] > ... > After: > ... > datasym+190: > 00005567f9951676 jz 0x5567f995162dr_cntr: BBB+C # PRED 1 cycles [1] > ... > > Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com> > Signed-off-by: Thomas Falcon <thomas.falcon@intel.com> > --- > tools/perf/builtin-script.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index c8ac9f01a36b..f865c8b2f95f 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -1287,8 +1287,12 @@ static int ip__fprintf_jump(uint64_t ip, struct branch_entry *en, > if (!verbose) { > for (j = 0; j < num; j++) > printed += fprintf(fp, "%s", pos->abbr_name); > - } else > - printed += fprintf(fp, "%s %d ", pos->name, num); > + if (num == mask) > + printed += fprintf(fp, "+"); > + } else { > + printed += fprintf(fp, "%s %d%s", pos->name, > + num, num == mask ? "+ " : " "); > + } > } > if (numprinted == 0 && !verbose) > printed += fprintf(fp, "-"); Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode 2026-04-29 15:29 [PATCH 0/2 v2] perf: Fix missing branch counter information in script and annotate Thomas Falcon 2026-04-29 15:29 ` [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit Thomas Falcon @ 2026-04-29 15:29 ` Thomas Falcon 2026-04-30 0:38 ` Mi, Dapeng 1 sibling, 1 reply; 5+ messages in thread From: Thomas Falcon @ 2026-04-29 15:29 UTC (permalink / raw) To: linux-perf-users Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark, Dapeng Mi perf annotate checks that evlist->nr_br_cntr has been incremented to determine whether to show branch counter information. However, this data is not populated until after the check when events are processed. Therefore, this counter will always be less than zero and the Branch Count column is never shown. Do this check after events have been processed and branch counter data is updated. Signed-off-by: Thomas Falcon <thomas.falcon@intel.com> --- tools/perf/builtin-annotate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 5e57b78548f4..7bddbaee1cde 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -563,6 +563,10 @@ static int __cmd_annotate(struct perf_annotate *ann) if (ret) goto out; + if ((use_browser == 1 || ann->use_stdio2) && ann->has_br_stack) + if (session->evlist->nr_br_cntr > 0) + annotate_opts.show_br_cntr = true; + if (dump_trace) { perf_session__fprintf_nr_events(session, stdout); evlist__fprintf_nr_events(session->evlist, stdout); @@ -926,11 +930,8 @@ int cmd_annotate(int argc, const char **argv) * branch counters, if the corresponding branch info is available * in the perf data in the TUI mode. */ - if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack) { + if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack) sort__mode = SORT_MODE__BRANCH; - if (annotate.session->evlist->nr_br_cntr > 0) - annotate_opts.show_br_cntr = true; - } if (setup_sorting(/*evlist=*/NULL, perf_session__env(annotate.session)) < 0) usage_with_options(annotate_usage, options); -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode 2026-04-29 15:29 ` [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode Thomas Falcon @ 2026-04-30 0:38 ` Mi, Dapeng 0 siblings, 0 replies; 5+ messages in thread From: Mi, Dapeng @ 2026-04-30 0:38 UTC (permalink / raw) To: Thomas Falcon, linux-perf-users Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark On 4/29/2026 11:29 PM, Thomas Falcon wrote: > perf annotate checks that evlist->nr_br_cntr has been incremented > to determine whether to show branch counter information. However, > this data is not populated until after the check when events are > processed. Therefore, this counter will always be less than zero > and the Branch Count column is never shown. Do this check after > events have been processed and branch counter data is updated. > > Signed-off-by: Thomas Falcon <thomas.falcon@intel.com> > --- > tools/perf/builtin-annotate.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c > index 5e57b78548f4..7bddbaee1cde 100644 > --- a/tools/perf/builtin-annotate.c > +++ b/tools/perf/builtin-annotate.c > @@ -563,6 +563,10 @@ static int __cmd_annotate(struct perf_annotate *ann) > if (ret) > goto out; > > + if ((use_browser == 1 || ann->use_stdio2) && ann->has_br_stack) > + if (session->evlist->nr_br_cntr > 0) > + annotate_opts.show_br_cntr = true; > + > if (dump_trace) { > perf_session__fprintf_nr_events(session, stdout); > evlist__fprintf_nr_events(session->evlist, stdout); > @@ -926,11 +930,8 @@ int cmd_annotate(int argc, const char **argv) > * branch counters, if the corresponding branch info is available > * in the perf data in the TUI mode. > */ > - if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack) { > + if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack) > sort__mode = SORT_MODE__BRANCH; > - if (annotate.session->evlist->nr_br_cntr > 0) > - annotate_opts.show_br_cntr = true; > - } > > if (setup_sorting(/*evlist=*/NULL, perf_session__env(annotate.session)) < 0) > usage_with_options(annotate_usage, options); LGTM. Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-04-30 0:38 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-29 15:29 [PATCH 0/2 v2] perf: Fix missing branch counter information in script and annotate Thomas Falcon 2026-04-29 15:29 ` [PATCH 1/2 v2] perf script: Fix missing '+' indicator when branch counter reaches upper limit Thomas Falcon 2026-04-30 0:37 ` Mi, Dapeng 2026-04-29 15:29 ` [PATCH 2/2 v2] perf annotate: Fix missing branch counter column in TUI mode Thomas Falcon 2026-04-30 0:38 ` Mi, Dapeng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox