* [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
@ 2026-03-11 14:29 kernel test robot
2026-03-11 15:09 ` Thomas Weißschuh
0 siblings, 1 reply; 7+ messages in thread
From: kernel test robot @ 2026-03-11 14:29 UTC (permalink / raw)
To: Thomas Weißschuh ; +Cc: oe-kbuild-all, linux-kernel, x86, Thomas Gleixner
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from progs/hid.c:3:
>> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
| ^
progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
| ^
progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
| ^
>> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
448 | struct bpf_wq work;
| ^
progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
448 | struct bpf_wq work;
| ^
>> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
| ^~
progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
| ^
progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
| ^~
progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
| ^
progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
493 | if (bpf_wq_start(wq, 0))
| ^~
progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
| ^
progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
503 | int hid = hid_ctx->hid->id;
| ~~~~~~~~~~~~^
progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
59 | struct hid_device *hid;
| ^
8 errors generated.
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-11 14:29 [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function kernel test robot
@ 2026-03-11 15:09 ` Thomas Weißschuh
2026-03-11 17:05 ` Benjamin Tissoires
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Weißschuh @ 2026-03-11 15:09 UTC (permalink / raw)
To: Jiri Kosina, Benjamin Tissoires
Cc: linux-input, kernel test robot, oe-kbuild-all, linux-kernel, x86,
Thomas Gleixner
Hi Jiri and Benjamin,
could you take a look at the report below?
This looks like an issue in the HID BPF subsystem, surfaced by my
unrelated change. Does this ring a bell for you?
I wasn't able to reproduce it so far, but will continue looking into it.
Thomas
On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> In file included from progs/hid.c:3:
> >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> | ^
> progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> | ^
> progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> | ^
> >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> 448 | struct bpf_wq work;
> | ^
> progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> 448 | struct bpf_wq work;
> | ^
> >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> | ^~
> progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> | ^
> progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> | ^~
> progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> | ^
> progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> 493 | if (bpf_wq_start(wq, 0))
> | ^~
> progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> | ^
> progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> 503 | int hid = hid_ctx->hid->id;
> | ~~~~~~~~~~~~^
> progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> 59 | struct hid_device *hid;
> | ^
> 8 errors generated.
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-11 15:09 ` Thomas Weißschuh
@ 2026-03-11 17:05 ` Benjamin Tissoires
2026-03-12 6:46 ` Thomas Weißschuh
0 siblings, 1 reply; 7+ messages in thread
From: Benjamin Tissoires @ 2026-03-11 17:05 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Jiri Kosina, linux-input, kernel test robot, oe-kbuild-all,
linux-kernel, x86, Thomas Gleixner
On Mar 11 2026, Thomas Weißschuh wrote:
> Hi Jiri and Benjamin,
>
> could you take a look at the report below?
> This looks like an issue in the HID BPF subsystem, surfaced by my
> unrelated change. Does this ring a bell for you?
>
> I wasn't able to reproduce it so far, but will continue looking into it.
Both struct bpf_wq and struct hid_device should be generated in the
vmlinux.h that we include in the selftests. So this is definitely not
related to your patch AFAICT.
Looking in the config, we have `# CONFIG_HID_SUPPORT is not set` -> so
that would explain why struct hid_device is not available. But in that
case, why are the HID selftests even built?
The bpf_wq bits should be related to a similar-ish issue where one
config setting is not set and so it's not included in the final BTF.
I paged out how we can ignore selftests based on the .config, so if you
have any hints, that would be nice :)
Cheers,
Benjamin
>
>
> Thomas
>
> On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> > head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> > commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> > config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> > compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > In file included from progs/hid.c:3:
> > >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > | ^
> > progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > | ^
> > progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > | ^
> > >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> > 448 | struct bpf_wq work;
> > | ^
> > progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> > 448 | struct bpf_wq work;
> > | ^
> > >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> > | ^~
> > progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > | ^
> > progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> > | ^~
> > progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > | ^
> > progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > 493 | if (bpf_wq_start(wq, 0))
> > | ^~
> > progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > | ^
> > progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> > 503 | int hid = hid_ctx->hid->id;
> > | ~~~~~~~~~~~~^
> > progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> > 59 | struct hid_device *hid;
> > | ^
> > 8 errors generated.
> >
> > --
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests/wiki
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-11 17:05 ` Benjamin Tissoires
@ 2026-03-12 6:46 ` Thomas Weißschuh
2026-03-12 17:34 ` Benjamin Tissoires
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Weißschuh @ 2026-03-12 6:46 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Jiri Kosina, linux-input, kernel test robot, oe-kbuild-all,
linux-kernel, x86, Thomas Gleixner
Hi Benjamin,
thanks for the quick response.
On Wed, Mar 11, 2026 at 06:05:25PM +0100, Benjamin Tissoires wrote:
> On Mar 11 2026, Thomas Weißschuh wrote:
> > could you take a look at the report below?
> > This looks like an issue in the HID BPF subsystem, surfaced by my
> > unrelated change. Does this ring a bell for you?
> >
> > I wasn't able to reproduce it so far, but will continue looking into it.
>
> Both struct bpf_wq and struct hid_device should be generated in the
> vmlinux.h that we include in the selftests. So this is definitely not
> related to your patch AFAICT.
Ack. To be sure I sent this branch again through 0day and will see if it
breaks on the same commit.
> Looking in the config, we have `# CONFIG_HID_SUPPORT is not set` -> so
> that would explain why struct hid_device is not available. But in that
> case, why are the HID selftests even built?
CONFIG_DEBUG_INFO_BTF is also not set. So there should be no vmlinux.h
at all in the first. Which is exactly what happens in my attempts
to reproduce the issue. But even when fixing that up, the issue persists.
> The bpf_wq bits should be related to a similar-ish issue where one
> config setting is not set and so it's not included in the final BTF.
I'll look into how exactly things end up in vmlinux.h.
At least the headers for 'struct bpf_wq' are always included somewhere.
But maybe the type also needs to be used to define some structure.
> I paged out how we can ignore selftests based on the .config, so if you
> have any hints, that would be nice :)
Inspecting the kernel configuration might be hard, as there might be no file
for it available. Could you use vmlinux.h itself for feature detection?
Thomas
> > On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> > > head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> > > commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> > > config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> > > compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
> > >
> > > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > > the same patch/commit), kindly add following tags
> > > | Reported-by: kernel test robot <lkp@intel.com>
> > > | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > > In file included from progs/hid.c:3:
> > > >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > | ^
> > > progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > | ^
> > > progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > | ^
> > > >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> > > 448 | struct bpf_wq work;
> > > | ^
> > > progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> > > 448 | struct bpf_wq work;
> > > | ^
> > > >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> > > | ^~
> > > progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > | ^
> > > progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> > > | ^~
> > > progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > | ^
> > > progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > 493 | if (bpf_wq_start(wq, 0))
> > > | ^~
> > > progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > | ^
> > > progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> > > 503 | int hid = hid_ctx->hid->id;
> > > | ~~~~~~~~~~~~^
> > > progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> > > 59 | struct hid_device *hid;
> > > | ^
> > > 8 errors generated.
> > >
> > > --
> > > 0-DAY CI Kernel Test Service
> > > https://github.com/intel/lkp-tests/wiki
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-12 6:46 ` Thomas Weißschuh
@ 2026-03-12 17:34 ` Benjamin Tissoires
2026-03-13 8:20 ` Thomas Weißschuh
0 siblings, 1 reply; 7+ messages in thread
From: Benjamin Tissoires @ 2026-03-12 17:34 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Jiri Kosina, linux-input, kernel test robot, oe-kbuild-all,
linux-kernel, x86, Thomas Gleixner
On Mar 12 2026, Thomas Weißschuh wrote:
> Hi Benjamin,
>
> thanks for the quick response.
>
> On Wed, Mar 11, 2026 at 06:05:25PM +0100, Benjamin Tissoires wrote:
> > On Mar 11 2026, Thomas Wei�schuh wrote:
> > > could you take a look at the report below?
> > > This looks like an issue in the HID BPF subsystem, surfaced by my
> > > unrelated change. Does this ring a bell for you?
> > >
> > > I wasn't able to reproduce it so far, but will continue looking into it.
> >
> > Both struct bpf_wq and struct hid_device should be generated in the
> > vmlinux.h that we include in the selftests. So this is definitely not
> > related to your patch AFAICT.
>
> Ack. To be sure I sent this branch again through 0day and will see if it
> breaks on the same commit.
>
> > Looking in the config, we have `# CONFIG_HID_SUPPORT is not set` -> so
> > that would explain why struct hid_device is not available. But in that
> > case, why are the HID selftests even built?
>
> CONFIG_DEBUG_INFO_BTF is also not set. So there should be no vmlinux.h
> at all in the first. Which is exactly what happens in my attempts
> to reproduce the issue. But even when fixing that up, the issue persists.
>
> > The bpf_wq bits should be related to a similar-ish issue where one
> > config setting is not set and so it's not included in the final BTF.
>
> I'll look into how exactly things end up in vmlinux.h.
> At least the headers for 'struct bpf_wq' are always included somewhere.
> But maybe the type also needs to be used to define some structure.
>
> > I paged out how we can ignore selftests based on the .config, so if you
> > have any hints, that would be nice :)
>
> Inspecting the kernel configuration might be hard, as there might be no file
> for it available. Could you use vmlinux.h itself for feature detection?
>
Actually I think I remember the rationale:
- because working with config is hard, we just hide any struct
definition we need in progs/hid_bpf_helpers.h before including
vmlinux.h
- then we manually define them
So it looks like this is a step I forgot to make when I added the last
few bits: redefine struct bpf_wq and struct hid_device.
Technically we shouldn't even need to redefine the entire struct, but
only the bits we are accessing, because bpf with CO-RE will do the
offsets for us :)
Would the following patch fixes the issue?:
---
From bf4030f8116a4bcafe9f8d84f3d03dd2eedc58a4 Mon Sep 17 00:00:00 2001
From: Benjamin Tissoires <bentiss@kernel.org>
Date: Thu, 12 Mar 2026 18:29:40 +0100
Subject: [PATCH] selftests/hid: fix compilation when bpf_wq and hid_device are
not exported
This can happen in situations when CONFIG_HID_SUPPORT is set to no, or
some complex situations where struct bpf_wq is not exported.
So do the usual dance of hiding them before including vmlinux.h, and
then redefining them and make use of CO-RE to have the correct offsets.
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
---
tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
index 80ab60905865..2c6ec907dd05 100644
--- a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
+++ b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
@@ -8,9 +8,11 @@
/* "undefine" structs and enums in vmlinux.h, because we "override" them below */
#define hid_bpf_ctx hid_bpf_ctx___not_used
#define hid_bpf_ops hid_bpf_ops___not_used
+#define hid_device hid_device___not_used
#define hid_report_type hid_report_type___not_used
#define hid_class_request hid_class_request___not_used
#define hid_bpf_attach_flags hid_bpf_attach_flags___not_used
+#define bpf_wq bpf_wq___not_used
#define HID_INPUT_REPORT HID_INPUT_REPORT___not_used
#define HID_OUTPUT_REPORT HID_OUTPUT_REPORT___not_used
#define HID_FEATURE_REPORT HID_FEATURE_REPORT___not_used
@@ -29,9 +31,11 @@
#undef hid_bpf_ctx
#undef hid_bpf_ops
+#undef hid_device
#undef hid_report_type
#undef hid_class_request
#undef hid_bpf_attach_flags
+#undef bpf_wq
#undef HID_INPUT_REPORT
#undef HID_OUTPUT_REPORT
#undef HID_FEATURE_REPORT
@@ -55,6 +59,14 @@ enum hid_report_type {
HID_REPORT_TYPES,
};
+struct hid_device {
+ unsigned int id;
+} __attribute__((preserve_access_index));
+
+struct bpf_wq {
+ __u64 __opaque[2];
+};
+
struct hid_bpf_ctx {
struct hid_device *hid;
__u32 allocated_size;
--
2.52.0
---
Cheers,
Benjamin
>
> Thomas
>
> > > On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> > > > head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> > > > commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> > > > config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> > > > compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> > > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
> > > >
> > > > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > > > the same patch/commit), kindly add following tags
> > > > | Reported-by: kernel test robot <lkp@intel.com>
> > > > | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > > In file included from progs/hid.c:3:
> > > > >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > | ^
> > > > progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > | ^
> > > > progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > | ^
> > > > >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> > > > 448 | struct bpf_wq work;
> > > > | ^
> > > > progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> > > > 448 | struct bpf_wq work;
> > > > | ^
> > > > >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> > > > | ^~
> > > > progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > | ^
> > > > progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> > > > | ^~
> > > > progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > | ^
> > > > progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > 493 | if (bpf_wq_start(wq, 0))
> > > > | ^~
> > > > progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > | ^
> > > > progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> > > > 503 | int hid = hid_ctx->hid->id;
> > > > | ~~~~~~~~~~~~^
> > > > progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> > > > 59 | struct hid_device *hid;
> > > > | ^
> > > > 8 errors generated.
> > > >
> > > > --
> > > > 0-DAY CI Kernel Test Service
> > > > https://github.com/intel/lkp-tests/wiki
> > >
>
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-12 17:34 ` Benjamin Tissoires
@ 2026-03-13 8:20 ` Thomas Weißschuh
2026-03-13 8:51 ` Benjamin Tissoires
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Weißschuh @ 2026-03-13 8:20 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Jiri Kosina, linux-input, kernel test robot, oe-kbuild-all,
linux-kernel, x86, Thomas Gleixner
On Thu, Mar 12, 2026 at 06:34:15PM +0100, Benjamin Tissoires wrote:
> On Mar 12 2026, Thomas Weißschuh wrote:
> > On Wed, Mar 11, 2026 at 06:05:25PM +0100, Benjamin Tissoires wrote:
> > > On Mar 11 2026, Thomas Wei�schuh wrote:
> > > > could you take a look at the report below?
> > > > This looks like an issue in the HID BPF subsystem, surfaced by my
> > > > unrelated change. Does this ring a bell for you?
> > > >
> > > > I wasn't able to reproduce it so far, but will continue looking into it.
> > >
> > > Both struct bpf_wq and struct hid_device should be generated in the
> > > vmlinux.h that we include in the selftests. So this is definitely not
> > > related to your patch AFAICT.
> >
> > Ack. To be sure I sent this branch again through 0day and will see if it
> > breaks on the same commit.
> >
> > > Looking in the config, we have `# CONFIG_HID_SUPPORT is not set` -> so
> > > that would explain why struct hid_device is not available. But in that
> > > case, why are the HID selftests even built?
> >
> > CONFIG_DEBUG_INFO_BTF is also not set. So there should be no vmlinux.h
> > at all in the first. Which is exactly what happens in my attempts
> > to reproduce the issue. But even when fixing that up, the issue persists.
> >
> > > The bpf_wq bits should be related to a similar-ish issue where one
> > > config setting is not set and so it's not included in the final BTF.
> >
> > I'll look into how exactly things end up in vmlinux.h.
> > At least the headers for 'struct bpf_wq' are always included somewhere.
> > But maybe the type also needs to be used to define some structure.
> >
> > > I paged out how we can ignore selftests based on the .config, so if you
> > > have any hints, that would be nice :)
> >
> > Inspecting the kernel configuration might be hard, as there might be no file
> > for it available. Could you use vmlinux.h itself for feature detection?
> >
>
> Actually I think I remember the rationale:
> - because working with config is hard, we just hide any struct
> definition we need in progs/hid_bpf_helpers.h before including
> vmlinux.h
> - then we manually define them
>
> So it looks like this is a step I forgot to make when I added the last
> few bits: redefine struct bpf_wq and struct hid_device.
That makes sense. Thanks for checking.
> Technically we shouldn't even need to redefine the entire struct, but
> only the bits we are accessing, because bpf with CO-RE will do the
> offsets for us :)
>
> Would the following patch fixes the issue?:
I expect so. However none of the other bot (re-b)builds reproduced this
issue, so I can't validate it. I'll put this down as some sort of fluke
that it occurred while building my patch, especially given all the other
weirdness in that report. Your patch should fix it for good.
> ---
> From bf4030f8116a4bcafe9f8d84f3d03dd2eedc58a4 Mon Sep 17 00:00:00 2001
> From: Benjamin Tissoires <bentiss@kernel.org>
> Date: Thu, 12 Mar 2026 18:29:40 +0100
> Subject: [PATCH] selftests/hid: fix compilation when bpf_wq and hid_device are
> not exported
>
> This can happen in situations when CONFIG_HID_SUPPORT is set to no, or
> some complex situations where struct bpf_wq is not exported.
>
> So do the usual dance of hiding them before including vmlinux.h, and
> then redefining them and make use of CO-RE to have the correct offsets.
>
> Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
> ---
> tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> index 80ab60905865..2c6ec907dd05 100644
> --- a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> +++ b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> @@ -8,9 +8,11 @@
> /* "undefine" structs and enums in vmlinux.h, because we "override" them below */
> #define hid_bpf_ctx hid_bpf_ctx___not_used
> #define hid_bpf_ops hid_bpf_ops___not_used
> +#define hid_device hid_device___not_used
> #define hid_report_type hid_report_type___not_used
> #define hid_class_request hid_class_request___not_used
> #define hid_bpf_attach_flags hid_bpf_attach_flags___not_used
> +#define bpf_wq bpf_wq___not_used
> #define HID_INPUT_REPORT HID_INPUT_REPORT___not_used
> #define HID_OUTPUT_REPORT HID_OUTPUT_REPORT___not_used
> #define HID_FEATURE_REPORT HID_FEATURE_REPORT___not_used
> @@ -29,9 +31,11 @@
>
> #undef hid_bpf_ctx
> #undef hid_bpf_ops
> +#undef hid_device
> #undef hid_report_type
> #undef hid_class_request
> #undef hid_bpf_attach_flags
> +#undef bpf_wq
> #undef HID_INPUT_REPORT
> #undef HID_OUTPUT_REPORT
> #undef HID_FEATURE_REPORT
> @@ -55,6 +59,14 @@ enum hid_report_type {
> HID_REPORT_TYPES,
> };
>
> +struct hid_device {
> + unsigned int id;
> +} __attribute__((preserve_access_index));
> +
> +struct bpf_wq {
> + __u64 __opaque[2];
> +};
> +
> struct hid_bpf_ctx {
> struct hid_device *hid;
> __u32 allocated_size;
> --
> 2.52.0
> ---
>
> Cheers,
> Benjamin
>
> >
> > Thomas
> >
> > > > On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> > > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> > > > > head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> > > > > commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> > > > > config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> > > > > compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> > > > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
> > > > >
> > > > > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > > > > the same patch/commit), kindly add following tags
> > > > > | Reported-by: kernel test robot <lkp@intel.com>
> > > > > | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
> > > > >
> > > > > All errors (new ones prefixed by >>):
> > > > >
> > > > > In file included from progs/hid.c:3:
> > > > > >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > > | ^
> > > > > progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > > | ^
> > > > > progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > > | ^
> > > > > >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> > > > > 448 | struct bpf_wq work;
> > > > > | ^
> > > > > progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> > > > > 448 | struct bpf_wq work;
> > > > > | ^
> > > > > >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> > > > > | ^~
> > > > > progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> > > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > > | ^
> > > > > progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> > > > > | ^~
> > > > > progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> > > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > > | ^
> > > > > progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > 493 | if (bpf_wq_start(wq, 0))
> > > > > | ^~
> > > > > progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> > > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > > | ^
> > > > > progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> > > > > 503 | int hid = hid_ctx->hid->id;
> > > > > | ~~~~~~~~~~~~^
> > > > > progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> > > > > 59 | struct hid_device *hid;
> > > > > | ^
> > > > > 8 errors generated.
> > > > >
> > > > > --
> > > > > 0-DAY CI Kernel Test Service
> > > > > https://github.com/intel/lkp-tests/wiki
> > > >
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function
2026-03-13 8:20 ` Thomas Weißschuh
@ 2026-03-13 8:51 ` Benjamin Tissoires
0 siblings, 0 replies; 7+ messages in thread
From: Benjamin Tissoires @ 2026-03-13 8:51 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Jiri Kosina, linux-input, kernel test robot, oe-kbuild-all,
linux-kernel, x86, Thomas Gleixner
On Mar 13 2026, Thomas Weißschuh wrote:
> On Thu, Mar 12, 2026 at 06:34:15PM +0100, Benjamin Tissoires wrote:
> > On Mar 12 2026, Thomas Wei�schuh wrote:
> > > On Wed, Mar 11, 2026 at 06:05:25PM +0100, Benjamin Tissoires wrote:
> > > > On Mar 11 2026, Thomas Wei�schuh wrote:
> > > > > could you take a look at the report below?
> > > > > This looks like an issue in the HID BPF subsystem, surfaced by my
> > > > > unrelated change. Does this ring a bell for you?
> > > > >
> > > > > I wasn't able to reproduce it so far, but will continue looking into it.
> > > >
> > > > Both struct bpf_wq and struct hid_device should be generated in the
> > > > vmlinux.h that we include in the selftests. So this is definitely not
> > > > related to your patch AFAICT.
> > >
> > > Ack. To be sure I sent this branch again through 0day and will see if it
> > > breaks on the same commit.
> > >
> > > > Looking in the config, we have `# CONFIG_HID_SUPPORT is not set` -> so
> > > > that would explain why struct hid_device is not available. But in that
> > > > case, why are the HID selftests even built?
> > >
> > > CONFIG_DEBUG_INFO_BTF is also not set. So there should be no vmlinux.h
> > > at all in the first. Which is exactly what happens in my attempts
> > > to reproduce the issue. But even when fixing that up, the issue persists.
> > >
> > > > The bpf_wq bits should be related to a similar-ish issue where one
> > > > config setting is not set and so it's not included in the final BTF.
> > >
> > > I'll look into how exactly things end up in vmlinux.h.
> > > At least the headers for 'struct bpf_wq' are always included somewhere.
> > > But maybe the type also needs to be used to define some structure.
> > >
> > > > I paged out how we can ignore selftests based on the .config, so if you
> > > > have any hints, that would be nice :)
> > >
> > > Inspecting the kernel configuration might be hard, as there might be no file
> > > for it available. Could you use vmlinux.h itself for feature detection?
> > >
> >
> > Actually I think I remember the rationale:
> > - because working with config is hard, we just hide any struct
> > definition we need in progs/hid_bpf_helpers.h before including
> > vmlinux.h
> > - then we manually define them
> >
> > So it looks like this is a step I forgot to make when I added the last
> > few bits: redefine struct bpf_wq and struct hid_device.
>
> That makes sense. Thanks for checking.
>
> > Technically we shouldn't even need to redefine the entire struct, but
> > only the bits we are accessing, because bpf with CO-RE will do the
> > offsets for us :)
> >
> > Would the following patch fixes the issue?:
>
> I expect so. However none of the other bot (re-b)builds reproduced this
> issue, so I can't validate it. I'll put this down as some sort of fluke
> that it occurred while building my patch, especially given all the other
> weirdness in that report. Your patch should fix it for good.
Thanks.
For reference, submitted here:
https://lore.kernel.org/linux-input/20260313-wip-bpf-fixes-v1-1-74b860315060@kernel.org/T/#u
Cheers,
Benjamin
>
> > ---
> > From bf4030f8116a4bcafe9f8d84f3d03dd2eedc58a4 Mon Sep 17 00:00:00 2001
> > From: Benjamin Tissoires <bentiss@kernel.org>
> > Date: Thu, 12 Mar 2026 18:29:40 +0100
> > Subject: [PATCH] selftests/hid: fix compilation when bpf_wq and hid_device are
> > not exported
> >
> > This can happen in situations when CONFIG_HID_SUPPORT is set to no, or
> > some complex situations where struct bpf_wq is not exported.
> >
> > So do the usual dance of hiding them before including vmlinux.h, and
> > then redefining them and make use of CO-RE to have the correct offsets.
> >
> > Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
> > ---
> > tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> > index 80ab60905865..2c6ec907dd05 100644
> > --- a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> > +++ b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h
> > @@ -8,9 +8,11 @@
> > /* "undefine" structs and enums in vmlinux.h, because we "override" them below */
> > #define hid_bpf_ctx hid_bpf_ctx___not_used
> > #define hid_bpf_ops hid_bpf_ops___not_used
> > +#define hid_device hid_device___not_used
> > #define hid_report_type hid_report_type___not_used
> > #define hid_class_request hid_class_request___not_used
> > #define hid_bpf_attach_flags hid_bpf_attach_flags___not_used
> > +#define bpf_wq bpf_wq___not_used
> > #define HID_INPUT_REPORT HID_INPUT_REPORT___not_used
> > #define HID_OUTPUT_REPORT HID_OUTPUT_REPORT___not_used
> > #define HID_FEATURE_REPORT HID_FEATURE_REPORT___not_used
> > @@ -29,9 +31,11 @@
> >
> > #undef hid_bpf_ctx
> > #undef hid_bpf_ops
> > +#undef hid_device
> > #undef hid_report_type
> > #undef hid_class_request
> > #undef hid_bpf_attach_flags
> > +#undef bpf_wq
> > #undef HID_INPUT_REPORT
> > #undef HID_OUTPUT_REPORT
> > #undef HID_FEATURE_REPORT
> > @@ -55,6 +59,14 @@ enum hid_report_type {
> > HID_REPORT_TYPES,
> > };
> >
> > +struct hid_device {
> > + unsigned int id;
> > +} __attribute__((preserve_access_index));
> > +
> > +struct bpf_wq {
> > + __u64 __opaque[2];
> > +};
> > +
> > struct hid_bpf_ctx {
> > struct hid_device *hid;
> > __u32 allocated_size;
> > --
> > 2.52.0
> > ---
> >
> > Cheers,
> > Benjamin
> >
> > >
> > > Thomas
> > >
> > > > > On Wed, Mar 11, 2026 at 03:29:54PM +0100, kernel test robot wrote:
> > > > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
> > > > > > head: f7178f159b2a36d070fd43b0d751e4e4415ec39e
> > > > > > commit: 912632a7fd4cc1eac2778828d92e8fe46939d6bd [37/45] vdso/datapage: Trim down unnecessary includes
> > > > > > config: riscv-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/config)
> > > > > > compiler: riscv64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
> > > > > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603111558.KLCIxsZB-lkp@intel.com/reproduce)
> > > > > >
> > > > > > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > > > > > the same patch/commit), kindly add following tags
> > > > > > | Reported-by: kernel test robot <lkp@intel.com>
> > > > > > | Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
> > > > > >
> > > > > > All errors (new ones prefixed by >>):
> > > > > >
> > > > > > In file included from progs/hid.c:3:
> > > > > > >> progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > > > | ^
> > > > > > progs/hid_bpf_helpers.h:118:32: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > > > | ^
> > > > > > progs/hid_bpf_helpers.h:119:39: error: declaration of 'struct bpf_wq' will not be visible outside of this function [-Werror,-Wvisibility]
> > > > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > > > | ^
> > > > > > >> progs/hid.c:448:16: error: field has incomplete type 'struct bpf_wq'
> > > > > > 448 | struct bpf_wq work;
> > > > > > | ^
> > > > > > progs/hid.c:448:9: note: forward declaration of 'struct bpf_wq'
> > > > > > 448 | struct bpf_wq work;
> > > > > > | ^
> > > > > > >> progs/hid.c:487:18: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > > 487 | if (bpf_wq_init(wq, &hmap, 0) != 0)
> > > > > > | ^~
> > > > > > progs/hid_bpf_helpers.h:117:39: note: passing argument to parameter 'wq' here
> > > > > > 117 | extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym;
> > > > > > | ^
> > > > > > progs/hid.c:490:26: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > > 490 | if (bpf_wq_set_callback(wq, wq_cb_sleepable, 0))
> > > > > > | ^~
> > > > > > progs/hid_bpf_helpers.h:119:47: note: passing argument to parameter 'wq' here
> > > > > > 119 | extern int bpf_wq_set_callback(struct bpf_wq *wq,
> > > > > > | ^
> > > > > > progs/hid.c:493:19: error: incompatible pointer types passing 'struct bpf_wq *' to parameter of type 'struct bpf_wq *' [-Wincompatible-pointer-types]
> > > > > > 493 | if (bpf_wq_start(wq, 0))
> > > > > > | ^~
> > > > > > progs/hid_bpf_helpers.h:118:40: note: passing argument to parameter 'wq' here
> > > > > > 118 | extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym;
> > > > > > | ^
> > > > > > progs/hid.c:503:24: error: incomplete definition of type 'struct hid_device'
> > > > > > 503 | int hid = hid_ctx->hid->id;
> > > > > > | ~~~~~~~~~~~~^
> > > > > > progs/hid_bpf_helpers.h:59:9: note: forward declaration of 'struct hid_device'
> > > > > > 59 | struct hid_device *hid;
> > > > > > | ^
> > > > > > 8 errors generated.
> > > > > >
> > > > > > --
> > > > > > 0-DAY CI Kernel Test Service
> > > > > > https://github.com/intel/lkp-tests/wiki
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-03-13 8:52 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-11 14:29 [tip:timers/vdso 37/45] progs/hid_bpf_helpers.h:117:31: error: declaration of 'struct bpf_wq' will not be visible outside of this function kernel test robot
2026-03-11 15:09 ` Thomas Weißschuh
2026-03-11 17:05 ` Benjamin Tissoires
2026-03-12 6:46 ` Thomas Weißschuh
2026-03-12 17:34 ` Benjamin Tissoires
2026-03-13 8:20 ` Thomas Weißschuh
2026-03-13 8:51 ` Benjamin Tissoires
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox