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

Tao Chen posted 1 patch 3 years, 6 months ago
tools/lib/bpf/btf.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
[PATCH v2] libbpf: Support raw btf placed in the default path
Posted by Tao Chen 3 years, 6 months ago
Now only elf btf can be placed in the default path(/boot), raw
btf should also can be there.

Signed-off-by: Tao Chen <chentao.kernel@linux.alibaba.com>
---
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
Re: [PATCH v2] libbpf: Support raw btf placed in the default path
Posted by patchwork-bot+netdevbpf@kernel.org 3 years, 6 months ago
Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

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 <chentao.kernel@linux.alibaba.com>
> ---
> 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
Re: [PATCH v2] libbpf: Support raw btf placed in the default path
Posted by Yonghong Song 3 years, 6 months ago

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 <chentao.kernel@linux.alibaba.com>

Ack with some commit message changes in the above.

Acked-by: Yonghong Song <yhs@fb.com>
Re: [PATCH v2] libbpf: Support raw btf placed in the default path
Posted by Andrii Nakryiko 3 years, 6 months ago
On Mon, Sep 19, 2022 at 8:40 PM Yonghong Song <yhs@fb.com> 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 <chentao.kernel@linux.alibaba.com>
>
> Ack with some commit message changes in the above.
>
> Acked-by: Yonghong Song <yhs@fb.com>