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: James Clark <james.clark@arm.com>
Signed-off-by: German 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.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
a2887b9b8d
commit
05b5a9d628
@@ -2073,6 +2073,7 @@ static void ip__resolve_ams(struct thread *thread,
|
||||
|
||||
ams->addr = ip;
|
||||
ams->al_addr = al.addr;
|
||||
ams->al_level = al.level;
|
||||
ams->ms.maps = al.maps;
|
||||
ams->ms.sym = al.sym;
|
||||
ams->ms.map = al.map;
|
||||
@@ -2092,6 +2093,7 @@ static void ip__resolve_data(struct thread *thread,
|
||||
|
||||
ams->addr = addr;
|
||||
ams->al_addr = al.addr;
|
||||
ams->al_level = al.level;
|
||||
ams->ms.maps = al.maps;
|
||||
ams->ms.sym = al.sym;
|
||||
ams->ms.map = al.map;
|
||||
|
||||
@@ -18,6 +18,7 @@ struct addr_map_symbol {
|
||||
struct map_symbol ms;
|
||||
u64 addr;
|
||||
u64 al_addr;
|
||||
char al_level;
|
||||
u64 phys_addr;
|
||||
u64 data_page_size;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
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");
|
||||
@@ -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;
|
||||
|
||||
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");
|
||||
|
||||
Reference in New Issue
Block a user