From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751935AbdK2DOF (ORCPT ); Tue, 28 Nov 2017 22:14:05 -0500 Received: from mail.kernel.org ([198.145.29.99]:50592 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751377AbdK2DOD (ORCPT ); Tue, 28 Nov 2017 22:14:03 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5FEC3218DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mhiramat@kernel.org Date: Wed, 29 Nov 2017 12:14:00 +0900 From: Masami Hiramatsu To: Andi Kleen Cc: acme@kernel.org, jolsa@kernel.org, mhiramat@kernel.org, adrian.hunter@intel.com, linux-kernel@vger.kernel.org, Andi Kleen Subject: Re: [PATCH 06/12] perf, tools, probe: Support a quiet argument for debug info open Message-Id: <20171129121400.9ded2948615eaaf110bbec7e@kernel.org> In-Reply-To: <20171128002321.2878-7-andi@firstfloor.org> References: <20171128002321.2878-1-andi@firstfloor.org> <20171128002321.2878-7-andi@firstfloor.org> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 27 Nov 2017 16:23:15 -0800 Andi Kleen wrote: > From: Andi Kleen > > Add a extra quiet argument to the debug info open / probe finder > code that allows perf script to make them quieter. Otherwise > we may end up with too many error messages when lots of > instructions fail debug info parsing. IMHO, this kind of simple suppress warning message would better be done with pr_* implementation (or its macro) since there maybe new message added or other function which has warning messages can be called in the future. Thank you, > > Signed-off-by: Andi Kleen > --- > tools/perf/util/probe-event.c | 4 ++-- > tools/perf/util/probe-finder.c | 19 ++++++++++++------- > tools/perf/util/probe-finder.h | 5 ++++- > 3 files changed, 18 insertions(+), 10 deletions(-) > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > index b7aaf9b2294d..2f9469e862fb 100644 > --- a/tools/perf/util/probe-event.c > +++ b/tools/perf/util/probe-event.c > @@ -1071,12 +1071,12 @@ static int show_available_vars_at(struct debuginfo *dinfo, > return -EINVAL; > pr_debug("Searching variables at %s\n", buf); > > - ret = debuginfo__find_available_vars_at(dinfo, pev, &vls); > + ret = debuginfo__find_available_vars_at(dinfo, pev, &vls, false); > if (!ret) { /* Not found, retry with an alternative */ > ret = get_alternative_probe_event(dinfo, pev, &tmp); > if (!ret) { > ret = debuginfo__find_available_vars_at(dinfo, pev, > - &vls); > + &vls, false); > /* Release the old probe_point */ > clear_perf_probe_point(&tmp); > } > diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c > index 699f29d8a28e..137b2fe71838 100644 > --- a/tools/perf/util/probe-finder.c > +++ b/tools/perf/util/probe-finder.c > @@ -685,12 +685,14 @@ static int call_probe_finder(Dwarf_Die *sc_die, struct probe_finder *pf) > if (!die_is_func_def(sc_die)) { > if (!die_find_realfunc(&pf->cu_die, pf->addr, &pf->sp_die)) { > if (die_find_tailfunc(&pf->cu_die, pf->addr, &pf->sp_die)) { > - pr_warning("Ignoring tail call from %s\n", > + if (!pf->quiet) > + pr_warning("Ignoring tail call from %s\n", > dwarf_diename(&pf->sp_die)); > return 0; > } else { > - pr_warning("Failed to find probe point in any " > - "functions.\n"); > + if (!pf->quiet) > + pr_warning("Failed to find probe point in any " > + "functions.\n"); > return -ENOENT; > } > } > @@ -708,8 +710,9 @@ static int call_probe_finder(Dwarf_Die *sc_die, struct probe_finder *pf) > if ((dwarf_cfi_addrframe(pf->cfi_eh, pf->addr, &frame) != 0 && > (dwarf_cfi_addrframe(pf->cfi_dbg, pf->addr, &frame) != 0)) || > dwarf_frame_cfa(frame, &pf->fb_ops, &nops) != 0) { > - pr_warning("Failed to get call frame on 0x%jx\n", > - (uintmax_t)pf->addr); > + if (!pf->quiet) > + pr_warning("Failed to get call frame on 0x%jx\n", > + (uintmax_t)pf->addr); > free(frame); > return -ENOENT; > } > @@ -1499,10 +1502,12 @@ static int add_available_vars(Dwarf_Die *sc_die, struct probe_finder *pf) > */ > int debuginfo__find_available_vars_at(struct debuginfo *dbg, > struct perf_probe_event *pev, > - struct variable_list **vls) > + struct variable_list **vls, > + bool be_quiet) > { > struct available_var_finder af = { > - .pf = {.pev = pev, .callback = add_available_vars}, > + .pf = {.pev = pev, .callback = add_available_vars, > + .quiet = be_quiet}, > .mod = dbg->mod, > .max_vls = probe_conf.max_probes}; > int ret; > diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h > index 6368e95a5d16..abcb2262ea72 100644 > --- a/tools/perf/util/probe-finder.h > +++ b/tools/perf/util/probe-finder.h > @@ -57,7 +57,8 @@ int debuginfo__find_line_range(struct debuginfo *dbg, struct line_range *lr); > /* Find available variables */ > int debuginfo__find_available_vars_at(struct debuginfo *dbg, > struct perf_probe_event *pev, > - struct variable_list **vls); > + struct variable_list **vls, > + bool quiet); > > /* Find a src file from a DWARF tag path */ > int get_real_path(const char *raw_path, const char *comp_dir, > @@ -88,6 +89,8 @@ struct probe_finder { > unsigned int machine; /* Target machine arch */ > struct perf_probe_arg *pvar; /* Current target variable */ > struct probe_trace_arg *tvar; /* Current result variable */ > + > + bool quiet; /* Avoid warnings */ > }; > > struct trace_event_finder { > -- > 2.13.6 > -- Masami Hiramatsu