netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Jiri Olsa <jolsa@kernel.org>
Cc: "Alexei Starovoitov" <ast@kernel.org>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	netdev@vger.kernel.org, bpf@vger.kernel.org,
	"Andrii Nakryiko" <andriin@fb.com>, "Yonghong Song" <yhs@fb.com>,
	"Song Liu" <songliubraving@fb.com>,
	"Martin KaFai Lau" <kafai@fb.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"David Miller" <davem@redhat.com>,
	"Björn Töpel" <bjorn.topel@intel.com>,
	"John Fastabend" <john.fastabend@gmail.com>,
	"Jesper Dangaard Brouer" <hawk@kernel.org>
Subject: Re: [PATCH 18/18] perf annotate: Add base support for bpf_image
Date: Fri, 28 Feb 2020 10:16:03 -0300	[thread overview]
Message-ID: <20200228131603.GC4010@redhat.com> (raw)
In-Reply-To: <20200226130345.209469-19-jolsa@kernel.org>

Em Wed, Feb 26, 2020 at 02:03:45PM +0100, Jiri Olsa escreveu:
> Adding the DSO_BINARY_TYPE__BPF_IMAGE dso binary type
> to recognize bpf images that carry trampoline or dispatcher.
> 
> Upcoming patches will add support to read the image data,
> store it within the BPF feature in perf.data and display
> it for annotation purposes.
> 
> Currently we only display following message:

Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 
>   # ./perf annotate bpf_trampoline_24456 --stdio
>    Percent |      Source code & Disassembly of . for cycles (504  ...
>   --------------------------------------------------------------- ...
>            :       to be implemented
> 
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  tools/perf/util/annotate.c | 20 ++++++++++++++++++++
>  tools/perf/util/dso.c      |  1 +
>  tools/perf/util/dso.h      |  1 +
>  tools/perf/util/machine.c  | 11 +++++++++++
>  tools/perf/util/symbol.c   |  1 +
>  5 files changed, 34 insertions(+)
> 
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index ca73fb74ad03..d9e606e11936 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -1843,6 +1843,24 @@ static int symbol__disassemble_bpf(struct symbol *sym __maybe_unused,
>  }
>  #endif // defined(HAVE_LIBBFD_SUPPORT) && defined(HAVE_LIBBPF_SUPPORT)
>  
> +static int
> +symbol__disassemble_bpf_image(struct symbol *sym,
> +			      struct annotate_args *args)
> +{
> +	struct annotation *notes = symbol__annotation(sym);
> +	struct disasm_line *dl;
> +
> +	args->offset = -1;
> +	args->line = strdup("to be implemented");
> +	args->line_nr = 0;
> +	dl = disasm_line__new(args);
> +	if (dl)
> +		annotation_line__add(&dl->al, &notes->src->source);
> +
> +	free(args->line);
> +	return 0;
> +}
> +
>  /*
>   * Possibly create a new version of line with tabs expanded. Returns the
>   * existing or new line, storage is updated if a new line is allocated. If
> @@ -1942,6 +1960,8 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args)
>  
>  	if (dso->binary_type == DSO_BINARY_TYPE__BPF_PROG_INFO) {
>  		return symbol__disassemble_bpf(sym, args);
> +	} else if (dso->binary_type == DSO_BINARY_TYPE__BPF_IMAGE) {
> +		return symbol__disassemble_bpf_image(sym, args);
>  	} else if (dso__is_kcore(dso)) {
>  		kce.kcore_filename = symfs_filename;
>  		kce.addr = map__rip_2objdump(map, sym->start);
> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> index 91f21239608b..f338990e0fe6 100644
> --- a/tools/perf/util/dso.c
> +++ b/tools/perf/util/dso.c
> @@ -191,6 +191,7 @@ int dso__read_binary_type_filename(const struct dso *dso,
>  	case DSO_BINARY_TYPE__GUEST_KALLSYMS:
>  	case DSO_BINARY_TYPE__JAVA_JIT:
>  	case DSO_BINARY_TYPE__BPF_PROG_INFO:
> +	case DSO_BINARY_TYPE__BPF_IMAGE:
>  	case DSO_BINARY_TYPE__NOT_FOUND:
>  		ret = -1;
>  		break;
> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> index 2db64b79617a..9553a1fd9e8a 100644
> --- a/tools/perf/util/dso.h
> +++ b/tools/perf/util/dso.h
> @@ -40,6 +40,7 @@ enum dso_binary_type {
>  	DSO_BINARY_TYPE__GUEST_KCORE,
>  	DSO_BINARY_TYPE__OPENEMBEDDED_DEBUGINFO,
>  	DSO_BINARY_TYPE__BPF_PROG_INFO,
> +	DSO_BINARY_TYPE__BPF_IMAGE,
>  	DSO_BINARY_TYPE__NOT_FOUND,
>  };
>  
> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> index 463ada5117f8..372ed147bed5 100644
> --- a/tools/perf/util/machine.c
> +++ b/tools/perf/util/machine.c
> @@ -719,6 +719,12 @@ int machine__process_switch_event(struct machine *machine __maybe_unused,
>  	return 0;
>  }
>  
> +static int is_bpf_image(const char *name)
> +{
> +	return strncmp(name, "bpf_trampoline_", sizeof("bpf_trampoline_") - 1) ||
> +	       strncmp(name, "bpf_dispatcher_", sizeof("bpf_dispatcher_") - 1);
> +}
> +
>  static int machine__process_ksymbol_register(struct machine *machine,
>  					     union perf_event *event,
>  					     struct perf_sample *sample __maybe_unused)
> @@ -743,6 +749,11 @@ static int machine__process_ksymbol_register(struct machine *machine,
>  		map->end = map->start + event->ksymbol.len;
>  		maps__insert(&machine->kmaps, map);
>  		dso__set_loaded(dso);
> +
> +		if (is_bpf_image(event->ksymbol.name)) {
> +			dso->binary_type = DSO_BINARY_TYPE__BPF_IMAGE;
> +			dso__set_long_name(dso, "", false);
> +		}
>  	}
>  
>  	sym = symbol__new(map->map_ip(map, map->start),
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 3b379b1296f1..e6caec4b6054 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1537,6 +1537,7 @@ static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod,
>  		return true;
>  
>  	case DSO_BINARY_TYPE__BPF_PROG_INFO:
> +	case DSO_BINARY_TYPE__BPF_IMAGE:
>  	case DSO_BINARY_TYPE__NOT_FOUND:
>  	default:
>  		return false;
> -- 
> 2.24.1


  parent reply	other threads:[~2020-02-28 13:16 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-26 13:03 [PATCHv3 00/18] bpf: Add trampoline and dispatcher to /proc/kallsyms Jiri Olsa
2020-02-26 13:03 ` [PATCH 01/18] x86/mm: Rename is_kernel_text to __is_kernel_text Jiri Olsa
2020-02-26 18:44   ` Song Liu
2020-02-26 13:03 ` [PATCH 02/18] bpf: Add bpf_trampoline_ name prefix for DECLARE_BPF_DISPATCHER Jiri Olsa
2020-02-26 18:54   ` Song Liu
2020-02-26 13:03 ` [PATCH 03/18] bpf: Add struct bpf_ksym Jiri Olsa
2020-02-26 19:01   ` Song Liu
2020-02-26 13:03 ` [PATCH 04/18] bpf: Add name to " Jiri Olsa
2020-02-26 21:14   ` Song Liu
2020-02-27  8:50     ` Jiri Olsa
2020-02-27 18:59       ` Song Liu
2020-03-01 18:31         ` Jiri Olsa
2020-02-26 13:03 ` [PATCH 05/18] bpf: Add lnode list node " Jiri Olsa
2020-02-26 22:51   ` Song Liu
2020-02-27  8:15     ` Jiri Olsa
2020-02-26 13:03 ` [PATCH 06/18] bpf: Add bpf_ksym_tree tree Jiri Olsa
2020-02-26 23:10   ` Song Liu
2020-02-26 13:03 ` [PATCH 07/18] bpf: Move bpf_tree add/del from bpf_prog_ksym_node_add/del Jiri Olsa
2020-02-26 23:12   ` Song Liu
2020-02-26 13:03 ` [PATCH 08/18] bpf: Separate kallsyms add/del functions Jiri Olsa
2020-02-26 23:14   ` Song Liu
2020-02-26 13:03 ` [PATCH 09/18] bpf: Add bpf_ksym_add/del functions Jiri Olsa
2020-02-26 23:16   ` Song Liu
2020-02-26 13:03 ` [PATCH 10/18] bpf: Re-initialize lnode in bpf_ksym_del Jiri Olsa
2020-02-26 23:21   ` Song Liu
2020-02-27 19:50   ` Alexei Starovoitov
2020-02-28 12:17     ` Jiri Olsa
2020-02-28 13:18       ` Arnaldo Carvalho de Melo
2020-02-28 13:16     ` Arnaldo Carvalho de Melo
2020-02-26 13:03 ` [PATCH 11/18] bpf: Rename bpf_tree to bpf_progs_tree Jiri Olsa
2020-02-26 23:22   ` Song Liu
2020-02-26 13:03 ` [PATCH 12/18] bpf: Add trampolines to kallsyms Jiri Olsa
2020-02-26 23:36   ` Song Liu
2020-02-27  6:26   ` Martin KaFai Lau
2020-02-27  8:08     ` Jiri Olsa
2020-02-26 13:03 ` [PATCH 13/18] bpf: Return error value in bpf_dispatcher_update Jiri Olsa
2020-02-26 23:45   ` Song Liu
2020-02-26 13:03 ` [PATCH 14/18] bpf: Add dispatchers to kallsyms Jiri Olsa
2020-02-26 23:48   ` Song Liu
2020-02-26 13:03 ` [PATCH 15/18] bpf: Sort bpf kallsyms symbols Jiri Olsa
2020-02-26 23:57   ` Song Liu
2020-02-26 13:03 ` [PATCH 16/18] perf tools: Synthesize bpf_trampoline/dispatcher ksymbol event Jiri Olsa
2020-02-27  5:50   ` Song Liu
2020-02-28 13:14   ` Arnaldo Carvalho de Melo
2020-02-26 13:03 ` [PATCH 17/18] perf tools: Set ksymbol dso as loaded on arrival Jiri Olsa
2020-02-27  5:52   ` Song Liu
2020-02-28 13:15   ` Arnaldo Carvalho de Melo
2020-02-26 13:03 ` [PATCH 18/18] perf annotate: Add base support for bpf_image Jiri Olsa
2020-02-27  5:54   ` Song Liu
2020-02-28 13:16   ` Arnaldo Carvalho de Melo [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-02-16 19:29 [PATCHv2 00/18] bpf: Add trampoline and dispatcher to /proc/kallsyms Jiri Olsa
2020-02-16 19:30 ` [PATCH 18/18] perf annotate: Add base support for bpf_image Jiri Olsa

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=20200228131603.GC4010@redhat.com \
    --to=acme@redhat.com \
    --cc=andriin@fb.com \
    --cc=ast@kernel.org \
    --cc=bjorn.topel@intel.com \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@redhat.com \
    --cc=hawk@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kafai@fb.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=songliubraving@fb.com \
    --cc=yhs@fb.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).