Messages in this thread | | | From | Arnaldo Carvalho de Melo <> | Date | Fri, 20 Sep 2019 15:26:46 -0300 | Subject | Re: [PATCH] perf/probe: Skip same probe address |
| |
Em Thu, Sep 19, 2019 at 12:41:10PM +0900, Masami Hiramatsu escreveu: > Fix to skip making a same probe address on given line. > > Since dwarf line info contains several entries for one line > with different column, perf probe will make a different > probe on same address if user specifies a probe point by > "function:line" or "file:line". > > e.g. > $ perf probe -D kernel_read:8 > p:probe/kernel_read_L8 kernel_read+39 > p:probe/kernel_read_L8_1 kernel_read+39 > > This skips such duplicated probe address.
Thanks, applied to perf/urgent.
- Arnaldo
> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> > --- > tools/perf/util/probe-finder.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c > index 025fc4491993..02ca95deaf2c 100644 > --- a/tools/perf/util/probe-finder.c > +++ b/tools/perf/util/probe-finder.c > @@ -1244,6 +1244,17 @@ static int expand_probe_args(Dwarf_Die *sc_die, struct probe_finder *pf, > return n; > } > > +static bool trace_event_finder_overlap(struct trace_event_finder *tf) > +{ > + int i; > + > + for (i = 0; i < tf->ntevs; i++) { > + if (tf->pf.addr == tf->tevs[i].point.address) > + return true; > + } > + return false; > +} > + > /* Add a found probe point into trace event list */ > static int add_probe_trace_event(Dwarf_Die *sc_die, struct probe_finder *pf) > { > @@ -1254,6 +1265,14 @@ static int add_probe_trace_event(Dwarf_Die *sc_die, struct probe_finder *pf) > struct perf_probe_arg *args = NULL; > int ret, i; > > + /* > + * For some reason (e.g. different column assigned to same address) > + * This callback can be called with the address which already passed. > + * Ignore it first. > + */ > + if (trace_event_finder_overlap(tf)) > + return 0; > + > /* Check number of tevs */ > if (tf->ntevs == tf->max_tevs) { > pr_warning("Too many( > %d) probe point found.\n",
--
- Arnaldo
| |