* [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes
@ 2024-01-30 19:36 Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly Andrii Nakryiko
` (4 more replies)
0 siblings, 5 replies; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
Few small fixes identified over last few days. Main fix is for memfd_create()
which causes problems on Android platforms. See individual patches for
details.
Andrii Nakryiko (5):
libbpf: call memfd_create() syscall directly
libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim
API
libbpf: add btf__new_split() API that was declared but not implemented
libbpf: add missed btf_ext__raw_data() API
selftests/bpf: fix bench runner SIGSEGV
tools/lib/bpf/bpf.h | 2 +-
tools/lib/bpf/btf.c | 11 ++++++++++-
tools/lib/bpf/libbpf.c | 11 ++++++++++-
tools/lib/bpf/libbpf.map | 5 +++--
tools/lib/bpf/linker.c | 2 +-
tools/testing/selftests/bpf/bench.c | 10 +++++++++-
6 files changed, 34 insertions(+), 7 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
@ 2024-01-30 19:36 ` Andrii Nakryiko
2024-01-31 5:04 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API Andrii Nakryiko
` (3 subsequent siblings)
4 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
Some versions of Android do not implement memfd_create() wrapper in
their libc implementation, leading to build failures ([0]). On the other
hand, memfd_create() is available as a syscall on quite old kernels
(3.17+, while bpf() syscall itself is available since 3.18+), so it is
ok to assume that syscall availability and call into it with syscall()
helper to avoid Android-specific workarounds.
Validated in libbpf-bootstrap's CI ([1]).
[0] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7701003207/job/20986080319#step:5:83
[1] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7715988887/job/21031767212?pr=253
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
tools/lib/bpf/libbpf.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index db65ea59a05a..b21fda6b9b85 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -1525,11 +1525,20 @@ static Elf64_Sym *find_elf_var_sym(const struct bpf_object *obj, const char *nam
return ERR_PTR(-ENOENT);
}
+/* Some versions of Android don't provide memfd_create() in their libc
+ * implementation, so avoid complications and just go straight to Linux
+ * syscall.
+ */
+static int sys_memfd_create(const char *name, unsigned flags)
+{
+ return syscall(__NR_memfd_create, name, flags);
+}
+
static int create_placeholder_fd(void)
{
int fd;
- fd = ensure_good_fd(memfd_create("libbpf-placeholder-fd", MFD_CLOEXEC));
+ fd = ensure_good_fd(sys_memfd_create("libbpf-placeholder-fd", MFD_CLOEXEC));
if (fd < 0)
return -errno;
return fd;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly Andrii Nakryiko
@ 2024-01-30 19:36 ` Andrii Nakryiko
2024-01-31 5:16 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented Andrii Nakryiko
` (2 subsequent siblings)
4 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
LIBBPF_API annotation seems missing on libbpf_set_memlock_rlim API, so
add it to make this API callable from libbpf's shared library version.
Fixes: e542f2c4cd16 ("libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
tools/lib/bpf/bpf.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index 1441f642c563..f866e98b2436 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -35,7 +35,7 @@
extern "C" {
#endif
-int libbpf_set_memlock_rlim(size_t memlock_bytes);
+LIBBPF_API int libbpf_set_memlock_rlim(size_t memlock_bytes);
struct bpf_map_create_opts {
size_t sz; /* size of this struct for forward/backward compatibility */
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API Andrii Nakryiko
@ 2024-01-30 19:36 ` Andrii Nakryiko
2024-01-31 5:30 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV Andrii Nakryiko
4 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
Seems like original commit adding split BTF support intended to add
btf__new_split() API, and even declared it in libbpf.map, but never
added (trivial) implementation. Fix this.
Fixes: ba451366bf44 ("libbpf: Implement basic split BTF support")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
tools/lib/bpf/btf.c | 5 +++++
tools/lib/bpf/libbpf.map | 3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index 95db88b36cf3..845034d15420 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -1079,6 +1079,11 @@ struct btf *btf__new(const void *data, __u32 size)
return libbpf_ptr(btf_new(data, size, NULL));
}
+struct btf *btf__new_split(const void *data, __u32 size, struct btf *base_btf)
+{
+ return libbpf_ptr(btf_new(data, size, base_btf));
+}
+
static struct btf *btf_parse_elf(const char *path, struct btf *base_btf,
struct btf_ext **btf_ext)
{
diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
index d9e1f57534fa..386964f572a8 100644
--- a/tools/lib/bpf/libbpf.map
+++ b/tools/lib/bpf/libbpf.map
@@ -245,7 +245,6 @@ LIBBPF_0.3.0 {
btf__parse_raw_split;
btf__parse_split;
btf__new_empty_split;
- btf__new_split;
ring_buffer__epoll_fd;
} LIBBPF_0.2.0;
@@ -411,5 +410,7 @@ LIBBPF_1.3.0 {
} LIBBPF_1.2.0;
LIBBPF_1.4.0 {
+ global:
bpf_token_create;
+ btf__new_split;
} LIBBPF_1.3.0;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
` (2 preceding siblings ...)
2024-01-30 19:36 ` [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented Andrii Nakryiko
@ 2024-01-30 19:36 ` Andrii Nakryiko
2024-01-31 7:39 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV Andrii Nakryiko
4 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
Another API that was declared in libbpf.map but actual implementation
was missing. btf_ext__get_raw_data() was intended as a discouraged alias
to consistently-named btf_ext__raw_data(), so make this an actuality.
Fixes: 20eccf29e297 ("libbpf: hide and discourage inconsistently named getters")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
tools/lib/bpf/btf.c | 6 +++++-
tools/lib/bpf/libbpf.map | 2 +-
tools/lib/bpf/linker.c | 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index 845034d15420..a17b4c9c4213 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -3050,12 +3050,16 @@ struct btf_ext *btf_ext__new(const __u8 *data, __u32 size)
return btf_ext;
}
-const void *btf_ext__get_raw_data(const struct btf_ext *btf_ext, __u32 *size)
+const void *btf_ext__raw_data(const struct btf_ext *btf_ext, __u32 *size)
{
*size = btf_ext->data_size;
return btf_ext->data;
}
+__attribute__((alias("btf_ext__raw_data")))
+const void *btf_ext__get_raw_data(const struct btf_ext *btf_ext, __u32 *size);
+
+
struct btf_dedup;
static struct btf_dedup *btf_dedup_new(struct btf *btf, const struct btf_dedup_opts *opts);
diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
index 386964f572a8..86804fd90dd1 100644
--- a/tools/lib/bpf/libbpf.map
+++ b/tools/lib/bpf/libbpf.map
@@ -325,7 +325,6 @@ LIBBPF_0.7.0 {
bpf_xdp_detach;
bpf_xdp_query;
bpf_xdp_query_id;
- btf_ext__raw_data;
libbpf_probe_bpf_helper;
libbpf_probe_bpf_map_type;
libbpf_probe_bpf_prog_type;
@@ -413,4 +412,5 @@ LIBBPF_1.4.0 {
global:
bpf_token_create;
btf__new_split;
+ btf_ext__raw_data;
} LIBBPF_1.3.0;
diff --git a/tools/lib/bpf/linker.c b/tools/lib/bpf/linker.c
index 16bca56002ab..0d4be829551b 100644
--- a/tools/lib/bpf/linker.c
+++ b/tools/lib/bpf/linker.c
@@ -2732,7 +2732,7 @@ static int finalize_btf(struct bpf_linker *linker)
/* Emit .BTF.ext section */
if (linker->btf_ext) {
- raw_data = btf_ext__get_raw_data(linker->btf_ext, &raw_sz);
+ raw_data = btf_ext__raw_data(linker->btf_ext, &raw_sz);
if (!raw_data)
return -ENOMEM;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
` (3 preceding siblings ...)
2024-01-30 19:36 ` [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API Andrii Nakryiko
@ 2024-01-30 19:36 ` Andrii Nakryiko
2024-01-31 7:41 ` Yonghong Song
4 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-30 19:36 UTC (permalink / raw)
To: bpf, ast, daniel, martin.lau; +Cc: andrii, kernel-team
Some benchmarks don't anticipate "consumer" and/or "producer" sides. Add
NULL checks in corresponding places and warn about inappropriate
consumer/producer count argument values.
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
tools/testing/selftests/bpf/bench.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c
index 73ce11b0547d..36962fc305eb 100644
--- a/tools/testing/selftests/bpf/bench.c
+++ b/tools/testing/selftests/bpf/bench.c
@@ -330,7 +330,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 'c':
env.consumer_cnt = strtol(arg, NULL, 10);
- if (env.consumer_cnt <= 0) {
+ if (env.consumer_cnt < 0) {
fprintf(stderr, "Invalid consumer count: %s\n", arg);
argp_usage(state);
}
@@ -607,6 +607,10 @@ static void setup_benchmark(void)
bench->setup();
for (i = 0; i < env.consumer_cnt; i++) {
+ if (!bench->consumer_thread) {
+ fprintf(stderr, "benchmark doesn't have consumers!\n");
+ exit(1);
+ }
err = pthread_create(&state.consumers[i], NULL,
bench->consumer_thread, (void *)(long)i);
if (err) {
@@ -626,6 +630,10 @@ static void setup_benchmark(void)
env.prod_cpus.next_cpu = env.cons_cpus.next_cpu;
for (i = 0; i < env.producer_cnt; i++) {
+ if (!bench->producer_thread) {
+ fprintf(stderr, "benchmark doesn't have producers!\n");
+ exit(1);
+ }
err = pthread_create(&state.producers[i], NULL,
bench->producer_thread, (void *)(long)i);
if (err) {
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly
2024-01-30 19:36 ` [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly Andrii Nakryiko
@ 2024-01-31 5:04 ` Yonghong Song
0 siblings, 0 replies; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 5:04 UTC (permalink / raw)
To: Andrii Nakryiko, bpf, ast, daniel, martin.lau; +Cc: kernel-team
On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> Some versions of Android do not implement memfd_create() wrapper in
> their libc implementation, leading to build failures ([0]). On the other
> hand, memfd_create() is available as a syscall on quite old kernels
> (3.17+, while bpf() syscall itself is available since 3.18+), so it is
> ok to assume that syscall availability and call into it with syscall()
> helper to avoid Android-specific workarounds.
>
> Validated in libbpf-bootstrap's CI ([1]).
>
> [0] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7701003207/job/20986080319#step:5:83
> [1] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7715988887/job/21031767212?pr=253
>
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API
2024-01-30 19:36 ` [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API Andrii Nakryiko
@ 2024-01-31 5:16 ` Yonghong Song
2024-01-31 17:09 ` Andrii Nakryiko
0 siblings, 1 reply; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 5:16 UTC (permalink / raw)
To: Andrii Nakryiko, bpf, ast, daniel, martin.lau; +Cc: kernel-team
On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> LIBBPF_API annotation seems missing on libbpf_set_memlock_rlim API, so
> add it to make this API callable from libbpf's shared library version.
>
> Fixes: e542f2c4cd16 ("libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF")
Maybe we should the following commit as Fixes?
ab9a5a05dc48 libbpf: fix up few libbpf.map problems
Other than the above, LGTM.
Acked-by: Yonghong Song <yonghong.song@linux.dev>
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
> ---
> tools/lib/bpf/bpf.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> index 1441f642c563..f866e98b2436 100644
> --- a/tools/lib/bpf/bpf.h
> +++ b/tools/lib/bpf/bpf.h
> @@ -35,7 +35,7 @@
> extern "C" {
> #endif
>
> -int libbpf_set_memlock_rlim(size_t memlock_bytes);
> +LIBBPF_API int libbpf_set_memlock_rlim(size_t memlock_bytes);
>
> struct bpf_map_create_opts {
> size_t sz; /* size of this struct for forward/backward compatibility */
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented
2024-01-30 19:36 ` [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented Andrii Nakryiko
@ 2024-01-31 5:30 ` Yonghong Song
2024-01-31 17:20 ` Andrii Nakryiko
0 siblings, 1 reply; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 5:30 UTC (permalink / raw)
To: Andrii Nakryiko, bpf, ast, daniel, martin.lau; +Cc: kernel-team
On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> Seems like original commit adding split BTF support intended to add
> btf__new_split() API, and even declared it in libbpf.map, but never
> added (trivial) implementation. Fix this.
>
> Fixes: ba451366bf44 ("libbpf: Implement basic split BTF support")
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
The patch LGTM. We did some cross checking between libbpf.map
and the implementation. What things are missing here to
capture missed implementation or LIBBPF_API marking?
Acked-by: Yonghong Song <yonghong.song@linux.dev>
> ---
> tools/lib/bpf/btf.c | 5 +++++
> tools/lib/bpf/libbpf.map | 3 ++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
> index 95db88b36cf3..845034d15420 100644
> --- a/tools/lib/bpf/btf.c
> +++ b/tools/lib/bpf/btf.c
> @@ -1079,6 +1079,11 @@ struct btf *btf__new(const void *data, __u32 size)
> return libbpf_ptr(btf_new(data, size, NULL));
> }
>
> +struct btf *btf__new_split(const void *data, __u32 size, struct btf *base_btf)
> +{
> + return libbpf_ptr(btf_new(data, size, base_btf));
> +}
> +
> static struct btf *btf_parse_elf(const char *path, struct btf *base_btf,
> struct btf_ext **btf_ext)
> {
> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
> index d9e1f57534fa..386964f572a8 100644
> --- a/tools/lib/bpf/libbpf.map
> +++ b/tools/lib/bpf/libbpf.map
> @@ -245,7 +245,6 @@ LIBBPF_0.3.0 {
> btf__parse_raw_split;
> btf__parse_split;
> btf__new_empty_split;
> - btf__new_split;
> ring_buffer__epoll_fd;
> } LIBBPF_0.2.0;
>
> @@ -411,5 +410,7 @@ LIBBPF_1.3.0 {
> } LIBBPF_1.2.0;
>
> LIBBPF_1.4.0 {
> + global:
> bpf_token_create;
> + btf__new_split;
> } LIBBPF_1.3.0;
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API
2024-01-30 19:36 ` [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API Andrii Nakryiko
@ 2024-01-31 7:39 ` Yonghong Song
0 siblings, 0 replies; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 7:39 UTC (permalink / raw)
To: Andrii Nakryiko, bpf, ast, daniel, martin.lau; +Cc: kernel-team
On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> Another API that was declared in libbpf.map but actual implementation
> was missing. btf_ext__get_raw_data() was intended as a discouraged alias
> to consistently-named btf_ext__raw_data(), so make this an actuality.
>
> Fixes: 20eccf29e297 ("libbpf: hide and discourage inconsistently named getters")
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV
2024-01-30 19:36 ` [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV Andrii Nakryiko
@ 2024-01-31 7:41 ` Yonghong Song
2024-01-31 17:17 ` Andrii Nakryiko
0 siblings, 1 reply; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 7:41 UTC (permalink / raw)
To: Andrii Nakryiko, bpf, ast, daniel, martin.lau; +Cc: kernel-team
On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> Some benchmarks don't anticipate "consumer" and/or "producer" sides. Add
For this, you mean some future potential benchmarks, right?
> NULL checks in corresponding places and warn about inappropriate
> consumer/producer count argument values.
>
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
> ---
> tools/testing/selftests/bpf/bench.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c
> index 73ce11b0547d..36962fc305eb 100644
> --- a/tools/testing/selftests/bpf/bench.c
> +++ b/tools/testing/selftests/bpf/bench.c
> @@ -330,7 +330,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
> break;
> case 'c':
> env.consumer_cnt = strtol(arg, NULL, 10);
> - if (env.consumer_cnt <= 0) {
> + if (env.consumer_cnt < 0) {
> fprintf(stderr, "Invalid consumer count: %s\n", arg);
> argp_usage(state);
> }
> @@ -607,6 +607,10 @@ static void setup_benchmark(void)
> bench->setup();
>
> for (i = 0; i < env.consumer_cnt; i++) {
> + if (!bench->consumer_thread) {
> + fprintf(stderr, "benchmark doesn't have consumers!\n");
> + exit(1);
> + }
> err = pthread_create(&state.consumers[i], NULL,
> bench->consumer_thread, (void *)(long)i);
> if (err) {
> @@ -626,6 +630,10 @@ static void setup_benchmark(void)
> env.prod_cpus.next_cpu = env.cons_cpus.next_cpu;
>
> for (i = 0; i < env.producer_cnt; i++) {
> + if (!bench->producer_thread) {
> + fprintf(stderr, "benchmark doesn't have producers!\n");
> + exit(1);
> + }
> err = pthread_create(&state.producers[i], NULL,
> bench->producer_thread, (void *)(long)i);
> if (err) {
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API
2024-01-31 5:16 ` Yonghong Song
@ 2024-01-31 17:09 ` Andrii Nakryiko
2024-01-31 17:23 ` Yonghong Song
0 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-31 17:09 UTC (permalink / raw)
To: Yonghong Song; +Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On Tue, Jan 30, 2024 at 9:16 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>
>
> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> > LIBBPF_API annotation seems missing on libbpf_set_memlock_rlim API, so
> > add it to make this API callable from libbpf's shared library version.
> >
> > Fixes: e542f2c4cd16 ("libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF")
>
> Maybe we should the following commit as Fixes?
>
> ab9a5a05dc48 libbpf: fix up few libbpf.map problems
>
The one I referenced introduced the problem, the ab9a5a05dc48 one
fixed some problems, but not all of them (for
libbpf_set_memlock_rlim). So it feels like pointing to the originating
commit is better?
> Other than the above, LGTM.
>
> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>
> > Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
> > ---
> > tools/lib/bpf/bpf.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> > index 1441f642c563..f866e98b2436 100644
> > --- a/tools/lib/bpf/bpf.h
> > +++ b/tools/lib/bpf/bpf.h
> > @@ -35,7 +35,7 @@
> > extern "C" {
> > #endif
> >
> > -int libbpf_set_memlock_rlim(size_t memlock_bytes);
> > +LIBBPF_API int libbpf_set_memlock_rlim(size_t memlock_bytes);
> >
> > struct bpf_map_create_opts {
> > size_t sz; /* size of this struct for forward/backward compatibility */
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV
2024-01-31 7:41 ` Yonghong Song
@ 2024-01-31 17:17 ` Andrii Nakryiko
2024-01-31 17:25 ` Yonghong Song
0 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-31 17:17 UTC (permalink / raw)
To: Yonghong Song; +Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On Tue, Jan 30, 2024 at 11:41 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>
>
> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> > Some benchmarks don't anticipate "consumer" and/or "producer" sides. Add
>
> For this, you mean some future potential benchmarks, right?
No, existing ones as well. Like trig-tp and other "trigger"
benchmarks. I ran into this when I was trying to set consumers to 0
explicitly, which wasn't allowed due to <= check. Then I fixed the
check, and I ran into SIGSEGV. So I decided to fix that up.
>
> > NULL checks in corresponding places and warn about inappropriate
> > consumer/producer count argument values.
> >
> > Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
>
> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>
> > ---
> > tools/testing/selftests/bpf/bench.c | 10 +++++++++-
> > 1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c
> > index 73ce11b0547d..36962fc305eb 100644
> > --- a/tools/testing/selftests/bpf/bench.c
> > +++ b/tools/testing/selftests/bpf/bench.c
> > @@ -330,7 +330,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
> > break;
> > case 'c':
> > env.consumer_cnt = strtol(arg, NULL, 10);
> > - if (env.consumer_cnt <= 0) {
> > + if (env.consumer_cnt < 0) {
> > fprintf(stderr, "Invalid consumer count: %s\n", arg);
> > argp_usage(state);
> > }
> > @@ -607,6 +607,10 @@ static void setup_benchmark(void)
> > bench->setup();
> >
> > for (i = 0; i < env.consumer_cnt; i++) {
> > + if (!bench->consumer_thread) {
> > + fprintf(stderr, "benchmark doesn't have consumers!\n");
> > + exit(1);
> > + }
> > err = pthread_create(&state.consumers[i], NULL,
> > bench->consumer_thread, (void *)(long)i);
> > if (err) {
> > @@ -626,6 +630,10 @@ static void setup_benchmark(void)
> > env.prod_cpus.next_cpu = env.cons_cpus.next_cpu;
> >
> > for (i = 0; i < env.producer_cnt; i++) {
> > + if (!bench->producer_thread) {
> > + fprintf(stderr, "benchmark doesn't have producers!\n");
> > + exit(1);
> > + }
> > err = pthread_create(&state.producers[i], NULL,
> > bench->producer_thread, (void *)(long)i);
> > if (err) {
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented
2024-01-31 5:30 ` Yonghong Song
@ 2024-01-31 17:20 ` Andrii Nakryiko
2024-01-31 17:27 ` Yonghong Song
0 siblings, 1 reply; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-31 17:20 UTC (permalink / raw)
To: Yonghong Song; +Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On Tue, Jan 30, 2024 at 9:30 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>
>
> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> > Seems like original commit adding split BTF support intended to add
> > btf__new_split() API, and even declared it in libbpf.map, but never
> > added (trivial) implementation. Fix this.
> >
> > Fixes: ba451366bf44 ("libbpf: Implement basic split BTF support")
> > Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
>
> The patch LGTM. We did some cross checking between libbpf.map
> and the implementation. What things are missing here to
> capture missed implementation or LIBBPF_API marking?
Yes, we still have it, and it does detect issues when API wasn't added
into libbpf.map.
I haven't investigated exactly why it didn't catch the issue when API
is in libbpf.map, but is not marked with LIBBPF_API, but I suspect
it's because existing check doesn't take into account visibility of
the symbol, so there is some room for improvement.
Similarly, not sure why it didn't detect that btf_ext__new_split()
wasn't even implemented, probably because we don't distinguish UNDEF
and FUNC symbols? So something to follow up on for sure.
>
> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>
> > ---
> > tools/lib/bpf/btf.c | 5 +++++
> > tools/lib/bpf/libbpf.map | 3 ++-
> > 2 files changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
> > index 95db88b36cf3..845034d15420 100644
> > --- a/tools/lib/bpf/btf.c
> > +++ b/tools/lib/bpf/btf.c
> > @@ -1079,6 +1079,11 @@ struct btf *btf__new(const void *data, __u32 size)
> > return libbpf_ptr(btf_new(data, size, NULL));
> > }
> >
> > +struct btf *btf__new_split(const void *data, __u32 size, struct btf *base_btf)
> > +{
> > + return libbpf_ptr(btf_new(data, size, base_btf));
> > +}
> > +
> > static struct btf *btf_parse_elf(const char *path, struct btf *base_btf,
> > struct btf_ext **btf_ext)
> > {
> > diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
> > index d9e1f57534fa..386964f572a8 100644
> > --- a/tools/lib/bpf/libbpf.map
> > +++ b/tools/lib/bpf/libbpf.map
> > @@ -245,7 +245,6 @@ LIBBPF_0.3.0 {
> > btf__parse_raw_split;
> > btf__parse_split;
> > btf__new_empty_split;
> > - btf__new_split;
> > ring_buffer__epoll_fd;
> > } LIBBPF_0.2.0;
> >
> > @@ -411,5 +410,7 @@ LIBBPF_1.3.0 {
> > } LIBBPF_1.2.0;
> >
> > LIBBPF_1.4.0 {
> > + global:
> > bpf_token_create;
> > + btf__new_split;
> > } LIBBPF_1.3.0;
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API
2024-01-31 17:09 ` Andrii Nakryiko
@ 2024-01-31 17:23 ` Yonghong Song
2024-01-31 17:37 ` Andrii Nakryiko
0 siblings, 1 reply; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 17:23 UTC (permalink / raw)
To: Andrii Nakryiko
Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On 1/31/24 9:09 AM, Andrii Nakryiko wrote:
> On Tue, Jan 30, 2024 at 9:16 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>>
>> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
>>> LIBBPF_API annotation seems missing on libbpf_set_memlock_rlim API, so
>>> add it to make this API callable from libbpf's shared library version.
>>>
>>> Fixes: e542f2c4cd16 ("libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF")
>> Maybe we should the following commit as Fixes?
>>
>> ab9a5a05dc48 libbpf: fix up few libbpf.map problems
>>
> The one I referenced introduced the problem, the ab9a5a05dc48 one
> fixed some problems, but not all of them (for
> libbpf_set_memlock_rlim). So it feels like pointing to the originating
> commit is better?
Maybe we can put two Fixes here? Just having e542f2c4cd16 is a little
confusing since libbpf_set_memlock_rlim is not in libbpf.map with
e542f2c4cd16.
>
>> Other than the above, LGTM.
>>
>> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>>
>>> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
>>> ---
>>> tools/lib/bpf/bpf.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
>>> index 1441f642c563..f866e98b2436 100644
>>> --- a/tools/lib/bpf/bpf.h
>>> +++ b/tools/lib/bpf/bpf.h
>>> @@ -35,7 +35,7 @@
>>> extern "C" {
>>> #endif
>>>
>>> -int libbpf_set_memlock_rlim(size_t memlock_bytes);
>>> +LIBBPF_API int libbpf_set_memlock_rlim(size_t memlock_bytes);
>>>
>>> struct bpf_map_create_opts {
>>> size_t sz; /* size of this struct for forward/backward compatibility */
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV
2024-01-31 17:17 ` Andrii Nakryiko
@ 2024-01-31 17:25 ` Yonghong Song
0 siblings, 0 replies; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 17:25 UTC (permalink / raw)
To: Andrii Nakryiko
Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On 1/31/24 9:17 AM, Andrii Nakryiko wrote:
> On Tue, Jan 30, 2024 at 11:41 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>>
>> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
>>> Some benchmarks don't anticipate "consumer" and/or "producer" sides. Add
>> For this, you mean some future potential benchmarks, right?
> No, existing ones as well. Like trig-tp and other "trigger"
> benchmarks. I ran into this when I was trying to set consumers to 0
> explicitly, which wasn't allowed due to <= check. Then I fixed the
> check, and I ran into SIGSEGV. So I decided to fix that up.
Some description like this in the commit message will be good.
>
>>> NULL checks in corresponding places and warn about inappropriate
>>> consumer/producer count argument values.
>>>
>>> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
>> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>>
>>> ---
>>> tools/testing/selftests/bpf/bench.c | 10 +++++++++-
>>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c
>>> index 73ce11b0547d..36962fc305eb 100644
>>> --- a/tools/testing/selftests/bpf/bench.c
>>> +++ b/tools/testing/selftests/bpf/bench.c
>>> @@ -330,7 +330,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
>>> break;
>>> case 'c':
>>> env.consumer_cnt = strtol(arg, NULL, 10);
>>> - if (env.consumer_cnt <= 0) {
>>> + if (env.consumer_cnt < 0) {
>>> fprintf(stderr, "Invalid consumer count: %s\n", arg);
>>> argp_usage(state);
>>> }
>>> @@ -607,6 +607,10 @@ static void setup_benchmark(void)
>>> bench->setup();
>>>
>>> for (i = 0; i < env.consumer_cnt; i++) {
>>> + if (!bench->consumer_thread) {
>>> + fprintf(stderr, "benchmark doesn't have consumers!\n");
>>> + exit(1);
>>> + }
>>> err = pthread_create(&state.consumers[i], NULL,
>>> bench->consumer_thread, (void *)(long)i);
>>> if (err) {
>>> @@ -626,6 +630,10 @@ static void setup_benchmark(void)
>>> env.prod_cpus.next_cpu = env.cons_cpus.next_cpu;
>>>
>>> for (i = 0; i < env.producer_cnt; i++) {
>>> + if (!bench->producer_thread) {
>>> + fprintf(stderr, "benchmark doesn't have producers!\n");
>>> + exit(1);
>>> + }
>>> err = pthread_create(&state.producers[i], NULL,
>>> bench->producer_thread, (void *)(long)i);
>>> if (err) {
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented
2024-01-31 17:20 ` Andrii Nakryiko
@ 2024-01-31 17:27 ` Yonghong Song
0 siblings, 0 replies; 18+ messages in thread
From: Yonghong Song @ 2024-01-31 17:27 UTC (permalink / raw)
To: Andrii Nakryiko
Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On 1/31/24 9:20 AM, Andrii Nakryiko wrote:
> On Tue, Jan 30, 2024 at 9:30 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>>
>> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
>>> Seems like original commit adding split BTF support intended to add
>>> btf__new_split() API, and even declared it in libbpf.map, but never
>>> added (trivial) implementation. Fix this.
>>>
>>> Fixes: ba451366bf44 ("libbpf: Implement basic split BTF support")
>>> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
>> The patch LGTM. We did some cross checking between libbpf.map
>> and the implementation. What things are missing here to
>> capture missed implementation or LIBBPF_API marking?
> Yes, we still have it, and it does detect issues when API wasn't added
> into libbpf.map.
>
> I haven't investigated exactly why it didn't catch the issue when API
> is in libbpf.map, but is not marked with LIBBPF_API, but I suspect
> it's because existing check doesn't take into account visibility of
> the symbol, so there is some room for improvement.
>
> Similarly, not sure why it didn't detect that btf_ext__new_split()
> wasn't even implemented, probably because we don't distinguish UNDEF
> and FUNC symbols? So something to follow up on for sure.
Agreed. A followup to improve API matching between libbpf.map and code
can be done later.
>
>> Acked-by: Yonghong Song <yonghong.song@linux.dev>
>>
>>> ---
>>> tools/lib/bpf/btf.c | 5 +++++
>>> tools/lib/bpf/libbpf.map | 3 ++-
>>> 2 files changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
>>> index 95db88b36cf3..845034d15420 100644
>>> --- a/tools/lib/bpf/btf.c
>>> +++ b/tools/lib/bpf/btf.c
>>> @@ -1079,6 +1079,11 @@ struct btf *btf__new(const void *data, __u32 size)
>>> return libbpf_ptr(btf_new(data, size, NULL));
>>> }
>>>
>>> +struct btf *btf__new_split(const void *data, __u32 size, struct btf *base_btf)
>>> +{
>>> + return libbpf_ptr(btf_new(data, size, base_btf));
>>> +}
>>> +
>>> static struct btf *btf_parse_elf(const char *path, struct btf *base_btf,
>>> struct btf_ext **btf_ext)
>>> {
>>> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
>>> index d9e1f57534fa..386964f572a8 100644
>>> --- a/tools/lib/bpf/libbpf.map
>>> +++ b/tools/lib/bpf/libbpf.map
>>> @@ -245,7 +245,6 @@ LIBBPF_0.3.0 {
>>> btf__parse_raw_split;
>>> btf__parse_split;
>>> btf__new_empty_split;
>>> - btf__new_split;
>>> ring_buffer__epoll_fd;
>>> } LIBBPF_0.2.0;
>>>
>>> @@ -411,5 +410,7 @@ LIBBPF_1.3.0 {
>>> } LIBBPF_1.2.0;
>>>
>>> LIBBPF_1.4.0 {
>>> + global:
>>> bpf_token_create;
>>> + btf__new_split;
>>> } LIBBPF_1.3.0;
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API
2024-01-31 17:23 ` Yonghong Song
@ 2024-01-31 17:37 ` Andrii Nakryiko
0 siblings, 0 replies; 18+ messages in thread
From: Andrii Nakryiko @ 2024-01-31 17:37 UTC (permalink / raw)
To: Yonghong Song; +Cc: Andrii Nakryiko, bpf, ast, daniel, martin.lau, kernel-team
On Wed, Jan 31, 2024 at 9:23 AM Yonghong Song <yonghong.song@linux.dev> wrote:
>
>
> On 1/31/24 9:09 AM, Andrii Nakryiko wrote:
> > On Tue, Jan 30, 2024 at 9:16 PM Yonghong Song <yonghong.song@linux.dev> wrote:
> >>
> >> On 1/30/24 11:36 AM, Andrii Nakryiko wrote:
> >>> LIBBPF_API annotation seems missing on libbpf_set_memlock_rlim API, so
> >>> add it to make this API callable from libbpf's shared library version.
> >>>
> >>> Fixes: e542f2c4cd16 ("libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF")
> >> Maybe we should the following commit as Fixes?
> >>
> >> ab9a5a05dc48 libbpf: fix up few libbpf.map problems
> >>
> > The one I referenced introduced the problem, the ab9a5a05dc48 one
> > fixed some problems, but not all of them (for
> > libbpf_set_memlock_rlim). So it feels like pointing to the originating
> > commit is better?
>
> Maybe we can put two Fixes here? Just having e542f2c4cd16 is a little
> confusing since libbpf_set_memlock_rlim is not in libbpf.map with
> e542f2c4cd16.
I don't mind, but I'll hold off on sending v2 just for this, maybe
someone can add it while applying.
>
> >
> >> Other than the above, LGTM.
> >>
> >> Acked-by: Yonghong Song <yonghong.song@linux.dev>
> >>
> >>> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
> >>> ---
> >>> tools/lib/bpf/bpf.h | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> >>> index 1441f642c563..f866e98b2436 100644
> >>> --- a/tools/lib/bpf/bpf.h
> >>> +++ b/tools/lib/bpf/bpf.h
> >>> @@ -35,7 +35,7 @@
> >>> extern "C" {
> >>> #endif
> >>>
> >>> -int libbpf_set_memlock_rlim(size_t memlock_bytes);
> >>> +LIBBPF_API int libbpf_set_memlock_rlim(size_t memlock_bytes);
> >>>
> >>> struct bpf_map_create_opts {
> >>> size_t sz; /* size of this struct for forward/backward compatibility */
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2024-01-31 17:37 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-30 19:36 [PATCH bpf-next 0/5] Libbpf API and memfd_create() fixes Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 1/5] libbpf: call memfd_create() syscall directly Andrii Nakryiko
2024-01-31 5:04 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 2/5] libbpf: add missing LIBBPF_API annotation to libbpf_set_memlock_rlim API Andrii Nakryiko
2024-01-31 5:16 ` Yonghong Song
2024-01-31 17:09 ` Andrii Nakryiko
2024-01-31 17:23 ` Yonghong Song
2024-01-31 17:37 ` Andrii Nakryiko
2024-01-30 19:36 ` [PATCH bpf-next 3/5] libbpf: add btf__new_split() API that was declared but not implemented Andrii Nakryiko
2024-01-31 5:30 ` Yonghong Song
2024-01-31 17:20 ` Andrii Nakryiko
2024-01-31 17:27 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 4/5] libbpf: add missed btf_ext__raw_data() API Andrii Nakryiko
2024-01-31 7:39 ` Yonghong Song
2024-01-30 19:36 ` [PATCH bpf-next 5/5] selftests/bpf: fix bench runner SIGSEGV Andrii Nakryiko
2024-01-31 7:41 ` Yonghong Song
2024-01-31 17:17 ` Andrii Nakryiko
2024-01-31 17:25 ` Yonghong Song
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.