All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, He Kuang <hekuang@huawei.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Wang Nan <wangnan0@huawei.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 10/13] perf probe: Fix failure to probe events on arm
Date: Tue, 23 Jun 2015 18:47:24 -0300	[thread overview]
Message-ID: <1435096047-32088-11-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1435096047-32088-1-git-send-email-acme@kernel.org>

From: He Kuang <hekuang@huawei.com>

Fix failure to probe events on arm, the problem was introduced by commit
5a51fcd1f30c ("perf probe: Skip kernel symbols which is out of .text").

For some architectures, the '_etext' label is not in the .text section
(in the .notes section for arm/arm64).  Labels out of the .text section
are not loaded as symbols and we get a zero value when looking up its
addresses, which causes all events to be wrongly skipped.

This patch skips checking the text address range when failing to get the
address of '_etext' and thus fixes the problem.

The problem can be reproduced on arm as follows:

  # perf probe --add='generic_perform_write'
  generic_perform_write+0 is out of .text, skip it.
  Probe point 'generic_perform_write' not found.
    Error: Failed to add events.

After this patch:

  # perf probe --add='generic_perform_write'
  Added new event:
    probe:generic_perform_write (on generic_perform_write)

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

    perf record -e probe:generic_perform_write -aR sleep 1

Signed-off-by: He Kuang <hekuang@huawei.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1434595750-129791-1-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/probe-event.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 076527b639bd..381f23a443c7 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -249,8 +249,12 @@ static void clear_probe_trace_events(struct probe_trace_event *tevs, int ntevs)
 static bool kprobe_blacklist__listed(unsigned long address);
 static bool kprobe_warn_out_range(const char *symbol, unsigned long address)
 {
+	u64 etext_addr;
+
 	/* Get the address of _etext for checking non-probable text symbol */
-	if (kernel_get_symbol_address_by_name("_etext", false) < address)
+	etext_addr = kernel_get_symbol_address_by_name("_etext", false);
+
+	if (etext_addr != 0 && etext_addr < address)
 		pr_warning("%s is out of .text, skip it.\n", symbol);
 	else if (kprobe_blacklist__listed(address))
 		pr_warning("%s is blacklisted function, skip it.\n", symbol);
-- 
2.1.0


  parent reply	other threads:[~2015-06-23 21:49 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23 21:47 [GIT PULL 00/13] perf/core improvements and fixes Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 01/13] perf top: Move toggling event logic into hists browser Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 02/13] perf tests: Add testing for Makefile.perf Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 03/13] perf tests: Add test for make install with prefix Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 04/13] perf build: Fix single target build dependency check Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 05/13] perf pmu: Use __weak definition from <linux/compiler.h> Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 06/13] perf pmu: Split perf_pmu__new_alias() Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 07/13] perf tools: Allow events with dot Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 08/13] perf session: Print a newline when dumping PERF_RECORD_FINISHED_ROUND Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 09/13] perf tools: Print a newline before dumping Aggregated stats Arnaldo Carvalho de Melo
2015-06-23 21:47 ` Arnaldo Carvalho de Melo [this message]
2015-06-23 21:47 ` [PATCH 11/13] perf thread_map: Don't access the array entries directly Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 12/13] perf thread_map: Change map entries into a struct Arnaldo Carvalho de Melo
2015-06-25  8:38   ` Jiri Olsa
2015-06-25 13:45     ` Arnaldo Carvalho de Melo
2015-06-25 17:48       ` Arnaldo Carvalho de Melo
2015-06-26  8:43         ` [tip:perf/urgent] perf tools: Future-proof thread_map allocation size calculation tip-bot for Arnaldo Carvalho de Melo
2015-06-23 21:47 ` [PATCH 13/13] perf tools: Allow auxtrace data alignment Arnaldo Carvalho de Melo
2015-06-25  7:31 ` [GIT PULL 00/13] perf/core improvements and fixes Ingo Molnar
2015-06-25 13:48   ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1435096047-32088-11-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=hekuang@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.