perf tools: Add hw_idx in struct branch_stack
The low level index of raw branch records for the most recent branch can be recorded in a sample with PERF_SAMPLE_BRANCH_HW_INDEX branch_sample_type. Extend struct branch_stack to support it. However, if the PERF_SAMPLE_BRANCH_HW_INDEX is not applied, only nr and entries[] will be output by kernel. The pointer of entries[] could be wrong, since the output format is different with new struct branch_stack. Add a variable no_hw_idx in struct perf_sample to indicate whether the hw_idx is output. Add get_branch_entry() to return corresponding pointer of entries[0]. To make dummy branch sample consistent as new branch sample, add hw_idx in struct dummy_branch_stack for cs-etm and intel-pt. Apply the new struct branch_stack for synthetic events as well. Extend test case sample-parsing to support new struct branch_stack. Committer notes: Renamed get_branch_entries() to perf_sample__branch_entries() to have proper namespacing and pave the way for this to be moved to libperf, eventually. Add 'static' to that inline as it is in a header. Add 'hw_idx' to 'struct dummy_branch_stack' in cs-etm.c to fix the build on arm64. Signed-off-by:Kan Liang <kan.liang@linux.intel.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexey Budankov <alexey.budankov@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Pavel Gerasimov <pavel.gerasimov@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Cc: Stephane Eranian <eranian@google.com> Cc: Vitaly Slobodskoy <vitaly.slobodskoy@intel.com> Link: http://lore.kernel.org/lkml/20200228163011.19358-2-kan.liang@linux.intel.com Signed-off-by:
Arnaldo Carvalho de Melo <acme@redhat.com>
Showing
- tools/perf/builtin-script.c 37 additions, 33 deletionstools/perf/builtin-script.c
- tools/perf/tests/sample-parsing.c 6 additions, 1 deletiontools/perf/tests/sample-parsing.c
- tools/perf/util/branch.h 22 additions, 0 deletionstools/perf/util/branch.h
- tools/perf/util/cs-etm.c 2 additions, 0 deletionstools/perf/util/cs-etm.c
- tools/perf/util/event.h 1 addition, 0 deletionstools/perf/util/event.h
- tools/perf/util/evsel.c 5 additions, 0 deletionstools/perf/util/evsel.c
- tools/perf/util/evsel.h 5 additions, 0 deletionstools/perf/util/evsel.h
- tools/perf/util/hist.c 2 additions, 1 deletiontools/perf/util/hist.c
- tools/perf/util/intel-pt.c 2 additions, 0 deletionstools/perf/util/intel-pt.c
- tools/perf/util/machine.c 18 additions, 17 deletionstools/perf/util/machine.c
- tools/perf/util/scripting-engines/trace-event-python.c 16 additions, 14 deletionstools/perf/util/scripting-engines/trace-event-python.c
- tools/perf/util/session.c 5 additions, 3 deletionstools/perf/util/session.c
- tools/perf/util/synthetic-events.c 4 additions, 2 deletionstools/perf/util/synthetic-events.c
Please register or sign in to comment