2022-09-12 17:20:26

by Tao Chen

[permalink] [raw]
Subject: [PATCH v2] libbpf: Support raw btf placed in the default path

Now only elf btf can be placed in the default path(/boot), raw
btf should also can be there.

Signed-off-by: Tao Chen <[email protected]>
---
v2->v1: Remove the locations[i].raw_btf check
---
tools/lib/bpf/btf.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index bb1e06e..46ec244 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -4657,11 +4657,10 @@ struct btf *btf__load_vmlinux_btf(void)
{
struct {
const char *path_fmt;
- bool raw_btf;
} locations[] = {
/* try canonical vmlinux BTF through sysfs first */
- { "/sys/kernel/btf/vmlinux", true /* raw BTF */ },
- /* fall back to trying to find vmlinux ELF on disk otherwise */
+ { "/sys/kernel/btf/vmlinux" },
+ /* fall back to trying to find vmlinux on disk otherwise */
{ "/boot/vmlinux-%1$s" },
{ "/lib/modules/%1$s/vmlinux-%1$s" },
{ "/lib/modules/%1$s/build/vmlinux" },
@@ -4683,10 +4682,7 @@ struct btf *btf__load_vmlinux_btf(void)
if (access(path, R_OK))
continue;

- if (locations[i].raw_btf)
- btf = btf__parse_raw(path);
- else
- btf = btf__parse_elf(path, NULL);
+ btf = btf__parse(path, NULL);
err = libbpf_get_error(btf);
pr_debug("loading kernel BTF '%s': %d\n", path, err);
if (err)
--
2.2.1


2022-09-20 04:17:32

by Yonghong Song

[permalink] [raw]
Subject: Re: [PATCH v2] libbpf: Support raw btf placed in the default path



On 9/12/22 9:43 AM, Tao Chen wrote:
> Now only elf btf can be placed in the default path(/boot), raw
> btf should also can be there.

There are more default paths than just /boot. Also some grammer
issues in the above like 'should also can be'.

Maybe the commit message can be changed like below.

Currently, the default vmlinux files at '/boot/vmlinux-*',
'/lib/modules/*/vmlinux-*' etc. are parsed with 'btf__parse_elf'
to extract BTF. It is possible that these files are actually
raw BTF files similar to /sys/kernel/btf/vmlinux. So parse
these files with 'btf__parse' which tries both raw format and
ELF format.

It would be great if you can add more information on why
'/boot/vmlinux-*' or '/lib/modules/*/vmlinux-*' might be
a raw BTF file in your system.

>
> Signed-off-by: Tao Chen <[email protected]>

Ack with some commit message changes in the above.

Acked-by: Yonghong Song <[email protected]>

2022-09-22 00:46:22

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: [PATCH v2] libbpf: Support raw btf placed in the default path

On Mon, Sep 19, 2022 at 8:40 PM Yonghong Song <[email protected]> wrote:
>
>
>
> On 9/12/22 9:43 AM, Tao Chen wrote:
> > Now only elf btf can be placed in the default path(/boot), raw
> > btf should also can be there.
>
> There are more default paths than just /boot. Also some grammer
> issues in the above like 'should also can be'.
>
> Maybe the commit message can be changed like below.
>
> Currently, the default vmlinux files at '/boot/vmlinux-*',
> '/lib/modules/*/vmlinux-*' etc. are parsed with 'btf__parse_elf'
> to extract BTF. It is possible that these files are actually
> raw BTF files similar to /sys/kernel/btf/vmlinux. So parse
> these files with 'btf__parse' which tries both raw format and
> ELF format.
>

Thanks, Yonghong, I used this description verbatim when applying. Also
added a sentence on why users might use this instead of providing the
btf_custom_path option.

> It would be great if you can add more information on why
> '/boot/vmlinux-*' or '/lib/modules/*/vmlinux-*' might be
> a raw BTF file in your system.
>
> >
> > Signed-off-by: Tao Chen <[email protected]>
>
> Ack with some commit message changes in the above.
>
> Acked-by: Yonghong Song <[email protected]>

2022-09-22 00:47:22

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH v2] libbpf: Support raw btf placed in the default path

Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <[email protected]>:

On Tue, 13 Sep 2022 00:43:00 +0800 you wrote:
> Now only elf btf can be placed in the default path(/boot), raw
> btf should also can be there.
>
> Signed-off-by: Tao Chen <[email protected]>
> ---
> v2->v1: Remove the locations[i].raw_btf check
>
> [...]

Here is the summary with links:
- [v2] libbpf: Support raw btf placed in the default path
https://git.kernel.org/bpf/bpf-next/c/01f2e36c959c

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html