[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <orvnpqolvwpbalpwcqp2izn5r2otkyikzk7jqbu6mynbizsm2b@iodguv7xvd3x>
Date: Fri, 9 Jan 2026 22:34:12 +0100
From: Benjamin Tissoires <bentiss@...nel.org>
To: Ihor Solodrai <ihor.solodrai@...ux.dev>
Cc: Alexei Starovoitov <ast@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>, Daniel Borkmann <daniel@...earbox.net>,
Martin KaFai Lau <martin.lau@...ux.dev>, Eduard Zingerman <eddyz87@...il.com>,
Mykyta Yatsenko <yatsenko@...a.com>, Tejun Heo <tj@...nel.org>,
Alan Maguire <alan.maguire@...cle.com>, Jiri Kosina <jikos@...nel.org>, bpf@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-input@...r.kernel.org, sched-ext@...ts.linux.dev
Subject: Re: [PATCH bpf-next v1 07/10] HID: Use bpf_wq_set_callback kernel
function
On Jan 09 2026, Ihor Solodrai wrote:
> Remove extern declaration of bpf_wq_set_callback_impl() from
> hid_bpf_helpers.h and replace bpf_wq_set_callback macro with a
> corresponding new declaration.
>
> Fix selftests/hid build failure caused by missing BPF_CFLAGS.
Already fixed in e03fb369b083 ("selftests/hid: fix bpf compilations due to -fms-extensions")
>
> Tested with:
> # append tools/testing/selftests/hid/config and build the kernel
> $ make -C tools/testing/selftests/hid
> # in built kernel
> $ ./tools/testing/selftests/hid/hid_bpf -t test_multiply_events_wq
>
> TAP version 13
> 1..1
> # Starting 1 tests from 1 test cases.
> # RUN hid_bpf.test_multiply_events_wq ...
> [ 2.575520] hid-generic 0003:0001:0A36.0001: hidraw0: USB HID v0.00 Device [test-uhid-device-138] on 138
> # OK hid_bpf.test_multiply_events_wq
> ok 1 hid_bpf.test_multiply_events_wq
> # PASSED: 1 / 1 tests passed.
> # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
> PASS
>
> Signed-off-by: Ihor Solodrai <ihor.solodrai@...ux.dev>
> ---
> drivers/hid/bpf/progs/hid_bpf_helpers.h | 8 +++-----
> tools/testing/selftests/hid/Makefile | 4 +++-
> tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 8 +++-----
> 3 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/hid/bpf/progs/hid_bpf_helpers.h b/drivers/hid/bpf/progs/hid_bpf_helpers.h
> index bf19785a6b06..228f8d787567 100644
> --- a/drivers/hid/bpf/progs/hid_bpf_helpers.h
> +++ b/drivers/hid/bpf/progs/hid_bpf_helpers.h
> @@ -33,11 +33,9 @@ extern int hid_bpf_try_input_report(struct hid_bpf_ctx *ctx,
> /* bpf_wq implementation */
> extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> -extern int bpf_wq_set_callback_impl(struct bpf_wq *wq,
> - int (callback_fn)(void *map, int *key, void *value),
> - unsigned int flags__k, void *aux__ign) __ksym;
> -#define bpf_wq_set_callback(wq, cb, flags) \
> - bpf_wq_set_callback_impl(wq, cb, flags, NULL)
> +extern int bpf_wq_set_callback(struct bpf_wq *wq,
> + int (*callback_fn)(void *, int *, void *),
> + unsigned int flags) __weak __ksym;
FWIW, if I'm the only one using bpf_wq_set_callback_impl() that you are
aware of, I'm fine removing the _impl kfunc from the kernel, I can deal
with this when loading the programs.
>
> #define HID_MAX_DESCRIPTOR_SIZE 4096
> #define HID_IGNORE_EVENT -1
> diff --git a/tools/testing/selftests/hid/Makefile b/tools/testing/selftests/hid/Makefile
> index 2839d2612ce3..4c01bb649913 100644
> --- a/tools/testing/selftests/hid/Makefile
> +++ b/tools/testing/selftests/hid/Makefile
> @@ -184,7 +184,9 @@ MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)
>
> CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG))
> BPF_CFLAGS = -g -Werror -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \
> - -I$(INCLUDE_DIR)
> + -I$(INCLUDE_DIR) \
> + -Wno-microsoft-anon-tag \
> + -fms-extensions
Already in Linus' tree.
>
> CLANG_CFLAGS = $(CLANG_SYS_INCLUDES) \
> -Wno-compare-distinct-pointer-types
> diff --git a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> index 531228b849da..80ab60905865 100644
> --- a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> +++ b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> @@ -116,10 +116,8 @@ extern int hid_bpf_try_input_report(struct hid_bpf_ctx *ctx,
> /* bpf_wq implementation */
> extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> -extern int bpf_wq_set_callback_impl(struct bpf_wq *wq,
> - int (callback_fn)(void *map, int *key, void *wq),
> - unsigned int flags__k, void *aux__ign) __weak __ksym;
> -#define bpf_wq_set_callback(timer, cb, flags) \
> - bpf_wq_set_callback_impl(timer, cb, flags, NULL)
> +extern int bpf_wq_set_callback(struct bpf_wq *wq,
> + int (*callback_fn)(void *, int *, void *),
> + unsigned int flags) __weak __ksym;
>
> #endif /* __HID_BPF_HELPERS_H */
> --
> 2.52.0
>
Acked-by: Benjamin Tissoires <bentiss@...nel.org>
Cheers,
Benjamin
Powered by blists - more mailing lists