Re: [PATCH 5.4 250/434] perf probe: Fix to show inlined function callsite without entry_pc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Den 29-12-2019 kl. 19:25, skrev Greg Kroah-Hartman:
From: Masami Hiramatsu <mhiramat@xxxxxxxxxx>

[ Upstream commit 18e21eb671dc87a4f0546ba505a89ea93598a634 ]

Fix 'perf probe --line' option to show inlined function callsite lines
even if the function DIE has only ranges.

Without this:

   # perf probe -L amd_put_event_constraints
   ...
       2  {
       3         if (amd_has_nb(cpuc) && amd_is_nb_event(&event->hw))
                         __amd_put_nb_event_constraints(cpuc, event);
       5  }

With this patch:

   # perf probe -L amd_put_event_constraints
   ...
       2  {
       3         if (amd_has_nb(cpuc) && amd_is_nb_event(&event->hw))
       4                 __amd_put_nb_event_constraints(cpuc, event);
       5  }

Committer testing:

Before:

   [root@quaco ~]# perf probe -L amd_put_event_constraints
   <amd_put_event_constraints@/usr/src/debug/kernel-5.2.fc30/linux-5.2.18-200.fc30.x86_64/arch/x86/events/amd/core.c:0>
         0  static void amd_put_event_constraints(struct cpu_hw_events *cpuc,
                                                 struct perf_event *event)
         2  {
         3         if (amd_has_nb(cpuc) && amd_is_nb_event(&event->hw))
                           __amd_put_nb_event_constraints(cpuc, event);
         5  }

            PMU_FORMAT_ATTR(event, "config:0-7,32-35");
            PMU_FORMAT_ATTR(umask, "config:8-15"   );

   [root@quaco ~]#

After:

   [root@quaco ~]# perf probe -L amd_put_event_constraints
   <amd_put_event_constraints@/usr/src/debug/kernel-5.2.fc30/linux-5.2.18-200.fc30.x86_64/arch/x86/events/amd/core.c:0>
         0  static void amd_put_event_constraints(struct cpu_hw_events *cpuc,
                                                 struct perf_event *event)
         2  {
         3         if (amd_has_nb(cpuc) && amd_is_nb_event(&event->hw))
         4                 __amd_put_nb_event_constraints(cpuc, event);
         5  }

            PMU_FORMAT_ATTR(event, "config:0-7,32-35");
            PMU_FORMAT_ATTR(umask, "config:8-15"   );

   [root@quaco ~]# perf probe amd_put_event_constraints:4
   Added new event:
     probe:amd_put_event_constraints (on amd_put_event_constraints:4)

   You can now use it in all perf tools, such as:

   	perf record -e probe:amd_put_event_constraints -aR sleep 1

   [root@quaco ~]#

   [root@quaco ~]# perf probe -l
     probe:amd_put_event_constraints (on amd_put_event_constraints:4@arch/x86/events/amd/core.c)
     probe:clear_tasks_mm_cpumask (on clear_tasks_mm_cpumask@kernel/cpu.c)
   [root@quaco ~]#

Using it:

   [root@quaco ~]# perf trace -e probe:*
   ^C[root@quaco ~]#

Ok, Intel system here... :-)

Fixes: 4cc9cec636e7 ("perf probe: Introduce lines walker interface")
Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
Tested-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Link: http://lore.kernel.org/lkml/157199322107.8075.12659099000567865708.stgit@devnote2
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
  tools/perf/util/dwarf-aux.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c
index 4b1890204e99..08aba015e072 100644
--- a/tools/perf/util/dwarf-aux.c
+++ b/tools/perf/util/dwarf-aux.c
@@ -673,7 +673,7 @@ static int __die_walk_funclines_cb(Dwarf_Die *in_die, void *data)
  	if (dwarf_tag(in_die) == DW_TAG_inlined_subroutine) {
  		fname = die_get_call_file(in_die);
  		lineno = die_get_call_lineno(in_die);
-		if (fname && lineno > 0 && dwarf_entrypc(in_die, &addr) == 0) {
+		if (fname && lineno > 0 && die_entrypc(in_die, &addr) == 0) {
  			lw->retval = lw->callback(fname, lineno, addr, lw->data);
  			if (lw->retval != 0)
  				return DIE_FIND_CB_END;



Still broken...

util/dwarf-aux.c: In function '__die_walk_funclines_cb':
util/dwarf-aux.c:683:30: warning: implicit declaration of function 'die_entrypc'; did you mean 'dwarf_entrypc'? [-Wimplicit-function-declaration]
  683 |   if (fname && lineno > 0 && die_entrypc(in_die, &addr) == 0) {


--
Thomas



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux