Commit 05b5a9d6 authored by German Gomez's avatar German Gomez Committed by Arnaldo Carvalho de Melo

perf tools: Apply correct label to user/kernel symbols in branch mode

In branch mode, the branch symbols were being displayed with incorrect
cpumode labels. So fix this.

For example, before:
  # perf record -b -a -- sleep 1
  # perf report -b

  Overhead  Command  Source Shared Object  Source Symbol               Target Symbol
     0.08%  swapper  [kernel.kallsyms]     [k] rcu_idle_enter          [k] cpuidle_enter_state
 ==> 0.08%  cmd0     [kernel.kallsyms]     [.] psi_group_change        [.] psi_group_change
     0.08%  cmd1     [kernel.kallsyms]     [k] psi_group_change        [k] psi_group_change

After:
  # perf report -b

  Overhead  Command  Source Shared Object  Source Symbol               Target Symbol
     0.08%  swapper  [kernel.kallsyms]     [k] rcu_idle_enter          [k] cpuidle_enter_state
     0.08%  cmd0     [kernel.kallsyms]     [k] psi_group_change        [k] pei_group_change
     0.08%  cmd1     [kernel.kallsyms]     [k] psi_group_change        [k] psi_group_change
Reviewed-by: default avatarJames Clark <james.clark@arm.com>
Signed-off-by: default avatarGerman Gomez <german.gomez@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20220126105927.3411216-1-german.gomez@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent a2887b9b
...@@ -2073,6 +2073,7 @@ static void ip__resolve_ams(struct thread *thread, ...@@ -2073,6 +2073,7 @@ static void ip__resolve_ams(struct thread *thread,
ams->addr = ip; ams->addr = ip;
ams->al_addr = al.addr; ams->al_addr = al.addr;
ams->al_level = al.level;
ams->ms.maps = al.maps; ams->ms.maps = al.maps;
ams->ms.sym = al.sym; ams->ms.sym = al.sym;
ams->ms.map = al.map; ams->ms.map = al.map;
...@@ -2092,6 +2093,7 @@ static void ip__resolve_data(struct thread *thread, ...@@ -2092,6 +2093,7 @@ static void ip__resolve_data(struct thread *thread,
ams->addr = addr; ams->addr = addr;
ams->al_addr = al.addr; ams->al_addr = al.addr;
ams->al_level = al.level;
ams->ms.maps = al.maps; ams->ms.maps = al.maps;
ams->ms.sym = al.sym; ams->ms.sym = al.sym;
ams->ms.map = al.map; ams->ms.map = al.map;
......
...@@ -18,6 +18,7 @@ struct addr_map_symbol { ...@@ -18,6 +18,7 @@ struct addr_map_symbol {
struct map_symbol ms; struct map_symbol ms;
u64 addr; u64 addr;
u64 al_addr; u64 al_addr;
char al_level;
u64 phys_addr; u64 phys_addr;
u64 data_page_size; u64 data_page_size;
}; };
......
...@@ -915,7 +915,7 @@ static int hist_entry__sym_from_snprintf(struct hist_entry *he, char *bf, ...@@ -915,7 +915,7 @@ static int hist_entry__sym_from_snprintf(struct hist_entry *he, char *bf,
struct addr_map_symbol *from = &he->branch_info->from; struct addr_map_symbol *from = &he->branch_info->from;
return _hist_entry__sym_snprintf(&from->ms, from->al_addr, return _hist_entry__sym_snprintf(&from->ms, from->al_addr,
he->level, bf, size, width); from->al_level, bf, size, width);
} }
return repsep_snprintf(bf, size, "%-*.*s", width, width, "N/A"); return repsep_snprintf(bf, size, "%-*.*s", width, width, "N/A");
...@@ -928,7 +928,7 @@ static int hist_entry__sym_to_snprintf(struct hist_entry *he, char *bf, ...@@ -928,7 +928,7 @@ static int hist_entry__sym_to_snprintf(struct hist_entry *he, char *bf,
struct addr_map_symbol *to = &he->branch_info->to; struct addr_map_symbol *to = &he->branch_info->to;
return _hist_entry__sym_snprintf(&to->ms, to->al_addr, return _hist_entry__sym_snprintf(&to->ms, to->al_addr,
he->level, bf, size, width); to->al_level, bf, size, width);
} }
return repsep_snprintf(bf, size, "%-*.*s", width, width, "N/A"); return repsep_snprintf(bf, size, "%-*.*s", width, width, "N/A");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment