public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
* Re: [PATCH v3 bpf-next] btf: expose BTF info through sysfs
       [not found] <20190812061405.2290824-1-andriin@fb.com>
@ 2019-08-12  7:08 ` Greg KH
  0 siblings, 0 replies; only message in thread
From: Greg KH @ 2019-08-12  7:08 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: bpf, netdev, ast, daniel, yhs, andrii.nakryiko, kernel-team,
	Masahiro Yamada, Arnaldo Carvalho de Melo, Jiri Olsa,
	Sam Ravnborg

On Sun, Aug 11, 2019 at 11:14:05PM -0700, Andrii Nakryiko wrote:
> Make .BTF section allocated and expose its contents through sysfs.
> 
> /sys/kernel/btf directory is created to contain all the BTFs present
> inside kernel. Currently there is only kernel's main BTF, represented as
> /sys/kernel/btf/kernel file. Once kernel modules' BTFs are supported,
> each module will expose its BTF as /sys/kernel/btf/<module-name> file.
> 
> Current approach relies on a few pieces coming together:
> 1. pahole is used to take almost final vmlinux image (modulo .BTF and
>    kallsyms) and generate .BTF section by converting DWARF info into
>    BTF. This section is not allocated and not mapped to any segment,
>    though, so is not yet accessible from inside kernel at runtime.
> 2. objcopy dumps .BTF contents into binary file and subsequently
>    convert binary file into linkable object file with automatically
>    generated symbols _binary__btf_kernel_bin_start and
>    _binary__btf_kernel_bin_end, pointing to start and end, respectively,
>    of BTF raw data.
> 3. final vmlinux image is generated by linking this object file (and
>    kallsyms, if necessary). sysfs_btf.c then creates
>    /sys/kernel/btf/kernel file and exposes embedded BTF contents through
>    it. This allows, e.g., libbpf and bpftool access BTF info at
>    well-known location, without resorting to searching for vmlinux image
>    on disk (location of which is not standardized and vmlinux image
>    might not be even available in some scenarios, e.g., inside qemu
>    during testing).
> 
> Alternative approach using .incbin assembler directive to embed BTF
> contents directly was attempted but didn't work, because sysfs_proc.o is
> not re-compiled during link-vmlinux.sh stage. This is required, though,
> to update embedded BTF data (initially empty data is embedded, then
> pahole generates BTF info and we need to regenerate sysfs_btf.o with
> updated contents, but it's too late at that point).
> 
> If BTF couldn't be generated due to missing or too old pahole,
> sysfs_btf.c handles that gracefully by detecting that
> _binary__btf_kernel_bin_start (weak symbol) is 0 and not creating
> /sys/kernel/btf at all.
> 
> v2->v3:
> - added Documentation/ABI/testing/sysfs-kernel-btf (Greg K-H);
> - created proper kobject (btf_kobj) for btf directory (Greg K-H);
> - undo v2 change of reusing vmlinux, as it causes extra kallsyms pass
>   due to initially missing  __binary__btf_kernel_bin_{start/end} symbols;
> 
> v1->v2:
> - allow kallsyms stage to re-use vmlinux generated by gen_btf();
> 
> Cc: Masahiro Yamada <yamada.masahiro@socionext•com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat•com>
> Cc: Jiri Olsa <jolsa@kernel•org>
> Cc: Sam Ravnborg <sam@ravnborg•org>
> Signed-off-by: Andrii Nakryiko <andriin@fb•com>
> ---
>  Documentation/ABI/testing/sysfs-kernel-btf | 17 +++++++
>  kernel/bpf/Makefile                        |  3 ++
>  kernel/bpf/sysfs_btf.c                     | 51 +++++++++++++++++++++
>  scripts/link-vmlinux.sh                    | 52 ++++++++++++++--------
>  4 files changed, 104 insertions(+), 19 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-kernel-btf
>  create mode 100644 kernel/bpf/sysfs_btf.c

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation•org>

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-08-12  7:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20190812061405.2290824-1-andriin@fb.com>
2019-08-12  7:08 ` [PATCH v3 bpf-next] btf: expose BTF info through sysfs Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox