* [thomas-weissschuh:b4/vdso-sysfs 3/3] arch/riscv/kernel/vdso/hwprobe.c:22:36: error: invalid use of undefined type 'struct riscv_hwprobe'
@ 2026-07-09 8:12 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-09 8:12 UTC (permalink / raw)
To: Thomas Weißschuh ; +Cc: oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/thomas.weissschuh/linux.git b4/vdso-sysfs
head: 3edf399169771e6497c35d947ff5f786819d62fd
commit: 3edf399169771e6497c35d947ff5f786819d62fd [3/3] vDSO, kbuild: Provide vDSO debug variants at runtime
config: riscv-randconfig-002-20260709 (https://download.01.org/0day-ci/archive/20260709/202607091634.SilC93xo-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 10.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260709/202607091634.SilC93xo-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/202607091634.SilC93xo-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
>> arch/riscv/kernel/vdso/hwprobe.c:11:33: warning: 'struct riscv_hwprobe' declared inside parameter list will not be visible outside of this definition or declaration
11 | extern int riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c:15:41: warning: 'struct riscv_hwprobe' declared inside parameter list will not be visible outside of this definition or declaration
15 | static int riscv_vdso_get_values(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c: In function 'riscv_vdso_get_values':
>> arch/riscv/kernel/vdso/hwprobe.c:22:36: error: invalid use of undefined type 'struct riscv_hwprobe'
22 | struct riscv_hwprobe *end = pairs + pair_count;
| ^
>> arch/riscv/kernel/vdso/hwprobe.c:30:38: error: 'const struct vdso_arch_data' has no member named 'homogeneous_cpus'
30 | if (flags != 0 || (!all_cpus && !avd->homogeneous_cpus) || unlikely(!avd->ready))
| ^~
In file included from include/linux/array_size.h:5,
from include/linux/string.h:6,
from arch/riscv/kernel/vdso/hwprobe.c:6:
>> arch/riscv/kernel/vdso/hwprobe.c:30:74: error: 'const struct vdso_arch_data' has no member named 'ready'
30 | if (flags != 0 || (!all_cpus && !avd->homogeneous_cpus) || unlikely(!avd->ready))
| ^~
include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
>> arch/riscv/kernel/vdso/hwprobe.c:31:24: error: passing argument 1 of 'riscv_hwprobe' from incompatible pointer type [-Werror=incompatible-pointer-types]
31 | return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
| ^~~~~
| |
| struct riscv_hwprobe *
arch/riscv/kernel/vdso/hwprobe.c:11:48: note: expected 'struct riscv_hwprobe *' but argument is of type 'struct riscv_hwprobe *'
11 | extern int riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:35:7: error: implicit declaration of function 'riscv_hwprobe_key_is_valid' [-Werror=implicit-function-declaration]
35 | if (riscv_hwprobe_key_is_valid(p->key)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c:35:35: error: invalid use of undefined type 'struct riscv_hwprobe'
35 | if (riscv_hwprobe_key_is_valid(p->key)) {
| ^~
arch/riscv/kernel/vdso/hwprobe.c:36:5: error: invalid use of undefined type 'struct riscv_hwprobe'
36 | p->value = avd->all_cpu_hwprobe_values[p->key];
| ^~
>> arch/riscv/kernel/vdso/hwprobe.c:36:18: error: 'const struct vdso_arch_data' has no member named 'all_cpu_hwprobe_values'
36 | p->value = avd->all_cpu_hwprobe_values[p->key];
| ^~
arch/riscv/kernel/vdso/hwprobe.c:36:44: error: invalid use of undefined type 'struct riscv_hwprobe'
36 | p->value = avd->all_cpu_hwprobe_values[p->key];
| ^~
arch/riscv/kernel/vdso/hwprobe.c:39:5: error: invalid use of undefined type 'struct riscv_hwprobe'
39 | p->key = -1;
| ^~
arch/riscv/kernel/vdso/hwprobe.c:40:5: error: invalid use of undefined type 'struct riscv_hwprobe'
40 | p->value = 0;
| ^~
>> arch/riscv/kernel/vdso/hwprobe.c:43:4: error: increment of pointer to an incomplete type 'struct riscv_hwprobe'
43 | p++;
| ^~
arch/riscv/kernel/vdso/hwprobe.c: At top level:
arch/riscv/kernel/vdso/hwprobe.c:49:39: warning: 'struct riscv_hwprobe' declared inside parameter list will not be visible outside of this definition or declaration
49 | static int riscv_vdso_get_cpus(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c: In function 'riscv_vdso_get_cpus':
arch/riscv/kernel/vdso/hwprobe.c:55:36: error: invalid use of undefined type 'struct riscv_hwprobe'
55 | struct riscv_hwprobe *end = pairs + pair_count;
| ^
>> arch/riscv/kernel/vdso/hwprobe.c:71:29: error: 'RISCV_HWPROBE_WHICH_CPUS' undeclared (first use in this function)
71 | if (empty_cpus || flags != RISCV_HWPROBE_WHICH_CPUS || !avd->homogeneous_cpus)
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c:71:29: note: each undeclared identifier is reported only once for each function it appears in
arch/riscv/kernel/vdso/hwprobe.c:71:61: error: 'const struct vdso_arch_data' has no member named 'homogeneous_cpus'
71 | if (empty_cpus || flags != RISCV_HWPROBE_WHICH_CPUS || !avd->homogeneous_cpus)
| ^~
arch/riscv/kernel/vdso/hwprobe.c:72:24: error: passing argument 1 of 'riscv_hwprobe' from incompatible pointer type [-Werror=incompatible-pointer-types]
72 | return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
| ^~~~~
| |
| struct riscv_hwprobe *
arch/riscv/kernel/vdso/hwprobe.c:11:48: note: expected 'struct riscv_hwprobe *' but argument is of type 'struct riscv_hwprobe *'
11 | extern int riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~
arch/riscv/kernel/vdso/hwprobe.c:75:35: error: invalid use of undefined type 'struct riscv_hwprobe'
75 | if (riscv_hwprobe_key_is_valid(p->key)) {
| ^~
>> arch/riscv/kernel/vdso/hwprobe.c:76:11: error: variable 't' has initializer but incomplete type
76 | struct riscv_hwprobe t = {
| ^~~~~~~~~~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:77:6: error: 'struct riscv_hwprobe' has no member named 'key'
77 | .key = p->key,
| ^~~
arch/riscv/kernel/vdso/hwprobe.c:77:13: error: invalid use of undefined type 'struct riscv_hwprobe'
77 | .key = p->key,
| ^~
>> arch/riscv/kernel/vdso/hwprobe.c:77:12: warning: excess elements in struct initializer
77 | .key = p->key,
| ^
arch/riscv/kernel/vdso/hwprobe.c:77:12: note: (near initialization for 't')
>> arch/riscv/kernel/vdso/hwprobe.c:78:6: error: 'struct riscv_hwprobe' has no member named 'value'
78 | .value = avd->all_cpu_hwprobe_values[p->key],
| ^~~~~
arch/riscv/kernel/vdso/hwprobe.c:78:17: error: 'const struct vdso_arch_data' has no member named 'all_cpu_hwprobe_values'
78 | .value = avd->all_cpu_hwprobe_values[p->key],
| ^~
arch/riscv/kernel/vdso/hwprobe.c:78:43: error: invalid use of undefined type 'struct riscv_hwprobe'
78 | .value = avd->all_cpu_hwprobe_values[p->key],
| ^~
arch/riscv/kernel/vdso/hwprobe.c:78:14: warning: excess elements in struct initializer
78 | .value = avd->all_cpu_hwprobe_values[p->key],
| ^~~
arch/riscv/kernel/vdso/hwprobe.c:78:14: note: (near initialization for 't')
>> arch/riscv/kernel/vdso/hwprobe.c:76:25: error: storage size of 't' isn't known
76 | struct riscv_hwprobe t = {
| ^
>> arch/riscv/kernel/vdso/hwprobe.c:81:9: error: implicit declaration of function 'riscv_hwprobe_pair_cmp' [-Werror=implicit-function-declaration]
81 | if (!riscv_hwprobe_pair_cmp(&t, p))
| ^~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:76:25: warning: unused variable 't' [-Wunused-variable]
76 | struct riscv_hwprobe t = {
| ^
arch/riscv/kernel/vdso/hwprobe.c:85:5: error: invalid use of undefined type 'struct riscv_hwprobe'
85 | p->key = -1;
| ^~
arch/riscv/kernel/vdso/hwprobe.c:86:5: error: invalid use of undefined type 'struct riscv_hwprobe'
86 | p->value = 0;
| ^~
arch/riscv/kernel/vdso/hwprobe.c:88:4: error: increment of pointer to an incomplete type 'struct riscv_hwprobe'
88 | p++;
| ^~
arch/riscv/kernel/vdso/hwprobe.c: At top level:
arch/riscv/kernel/vdso/hwprobe.c:100:33: warning: 'struct riscv_hwprobe' declared inside parameter list will not be visible outside of this definition or declaration
100 | int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c:104:33: warning: 'struct riscv_hwprobe' declared inside parameter list will not be visible outside of this definition or declaration
104 | int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:104:5: error: conflicting types for '__vdso_riscv_hwprobe'
104 | int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c:100:5: note: previous declaration of '__vdso_riscv_hwprobe' was here
100 | int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
| ^~~~~~~~~~~~~~~~~~~~
arch/riscv/kernel/vdso/hwprobe.c: In function '__vdso_riscv_hwprobe':
arch/riscv/kernel/vdso/hwprobe.c:108:14: error: 'RISCV_HWPROBE_WHICH_CPUS' undeclared (first use in this function)
108 | if (flags & RISCV_HWPROBE_WHICH_CPUS)
| ^~~~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:109:30: error: passing argument 1 of 'riscv_vdso_get_cpus' from incompatible pointer type [-Werror=incompatible-pointer-types]
109 | return riscv_vdso_get_cpus(pairs, pair_count, cpusetsize,
| ^~~~~
| |
| struct riscv_hwprobe *
arch/riscv/kernel/vdso/hwprobe.c:49:54: note: expected 'struct riscv_hwprobe *' but argument is of type 'struct riscv_hwprobe *'
49 | static int riscv_vdso_get_cpus(struct riscv_hwprobe *pairs, size_t pair_count,
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~
>> arch/riscv/kernel/vdso/hwprobe.c:112:31: error: passing argument 1 of 'riscv_vdso_get_values' from incompatible pointer type [-Werror=incompatible-pointer-types]
112 | return riscv_vdso_get_values(pairs, pair_count, cpusetsize,
| ^~~~~
| |
| struct riscv_hwprobe *
arch/riscv/kernel/vdso/hwprobe.c:15:56: note: expected 'struct riscv_hwprobe *' but argument is of type 'struct riscv_hwprobe *'
15 | static int riscv_vdso_get_values(struct riscv_hwprobe *pairs, size_t pair_count,
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:289: arch/riscv/kernel/vdso/hwprobe.o] Error 1 shuffle=275821313
arch/riscv/kernel/vdso/vgettimeofday.c: In function '__vdso_clock_gettime':
arch/riscv/kernel/vdso/vgettimeofday.c:15:9: error: implicit declaration of function '__cvdso_clock_gettime'; did you mean '__vdso_clock_gettime'? [-Werror=implicit-function-declaration]
15 | return __cvdso_clock_gettime(clock, ts);
| ^~~~~~~~~~~~~~~~~~~~~
| __vdso_clock_gettime
arch/riscv/kernel/vdso/vgettimeofday.c: In function '__vdso_gettimeofday':
arch/riscv/kernel/vdso/vgettimeofday.c:20:9: error: implicit declaration of function '__cvdso_gettimeofday'; did you mean '__vdso_gettimeofday'? [-Werror=implicit-function-declaration]
20 | return __cvdso_gettimeofday(tv, tz);
| ^~~~~~~~~~~~~~~~~~~~
| __vdso_gettimeofday
arch/riscv/kernel/vdso/vgettimeofday.c: In function '__vdso_clock_getres':
arch/riscv/kernel/vdso/vgettimeofday.c:25:9: error: implicit declaration of function '__cvdso_clock_getres'; did you mean '__vdso_clock_getres'? [-Werror=implicit-function-declaration]
25 | return __cvdso_clock_getres(clock_id, res);
| ^~~~~~~~~~~~~~~~~~~~
| __vdso_clock_getres
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:289: arch/riscv/kernel/vdso/vgettimeofday.o] Error 1 shuffle=275821313
make[3]: Target 'arch/riscv/kernel/vdso/vdso.so.dbg' not remade because of errors.
make[2]: *** [Makefile:1551: arch/riscv/kernel/vdso/vdso.so.dbg] Error 2 shuffle=275821313
make[2]: Target 'prepare' not remade because of errors.
make[1]: *** [Makefile:248: __sub-make] Error 2 shuffle=275821313
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:248: __sub-make] Error 2 shuffle=275821313
make: Target 'prepare' not remade because of errors.
vim +22 arch/riscv/kernel/vdso/hwprobe.c
aa5af0aa90bad3 Evan Green 2023-04-07 10
aa5af0aa90bad3 Evan Green 2023-04-07 @11 extern int riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
36d842d654beba Andrew Jones 2023-11-22 12 size_t cpusetsize, unsigned long *cpus,
aa5af0aa90bad3 Evan Green 2023-04-07 13 unsigned int flags);
aa5af0aa90bad3 Evan Green 2023-04-07 14
e178bf146e4b8c Andrew Jones 2023-11-22 15 static int riscv_vdso_get_values(struct riscv_hwprobe *pairs, size_t pair_count,
36d842d654beba Andrew Jones 2023-11-22 16 size_t cpusetsize, unsigned long *cpus,
aa5af0aa90bad3 Evan Green 2023-04-07 17 unsigned int flags)
aa5af0aa90bad3 Evan Green 2023-04-07 18 {
46fe55b204bfb0 Thomas Weißschuh 2025-02-04 19 const struct vdso_arch_data *avd = &vdso_u_arch_data;
36d842d654beba Andrew Jones 2023-11-22 20 bool all_cpus = !cpusetsize && !cpus;
aa5af0aa90bad3 Evan Green 2023-04-07 21 struct riscv_hwprobe *p = pairs;
aa5af0aa90bad3 Evan Green 2023-04-07 @22 struct riscv_hwprobe *end = pairs + pair_count;
aa5af0aa90bad3 Evan Green 2023-04-07 23
aa5af0aa90bad3 Evan Green 2023-04-07 24 /*
aa5af0aa90bad3 Evan Green 2023-04-07 25 * Defer to the syscall for exotic requests. The vdso has answers
aa5af0aa90bad3 Evan Green 2023-04-07 26 * stashed away only for the "all cpus" case. If all CPUs are
aa5af0aa90bad3 Evan Green 2023-04-07 27 * homogeneous, then this function can handle requests for arbitrary
aa5af0aa90bad3 Evan Green 2023-04-07 28 * masks.
aa5af0aa90bad3 Evan Green 2023-04-07 29 */
5d15d2ad36b0f7 Jingwei Wang 2025-08-11 @30 if (flags != 0 || (!all_cpus && !avd->homogeneous_cpus) || unlikely(!avd->ready))
36d842d654beba Andrew Jones 2023-11-22 @31 return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
aa5af0aa90bad3 Evan Green 2023-04-07 32
aa5af0aa90bad3 Evan Green 2023-04-07 33 /* This is something we can handle, fill out the pairs. */
aa5af0aa90bad3 Evan Green 2023-04-07 34 while (p < end) {
e1c05b3bf80f82 Andrew Jones 2023-10-10 @35 if (riscv_hwprobe_key_is_valid(p->key)) {
aa5af0aa90bad3 Evan Green 2023-04-07 @36 p->value = avd->all_cpu_hwprobe_values[p->key];
aa5af0aa90bad3 Evan Green 2023-04-07 37
aa5af0aa90bad3 Evan Green 2023-04-07 38 } else {
aa5af0aa90bad3 Evan Green 2023-04-07 39 p->key = -1;
aa5af0aa90bad3 Evan Green 2023-04-07 40 p->value = 0;
aa5af0aa90bad3 Evan Green 2023-04-07 41 }
aa5af0aa90bad3 Evan Green 2023-04-07 42
aa5af0aa90bad3 Evan Green 2023-04-07 @43 p++;
aa5af0aa90bad3 Evan Green 2023-04-07 44 }
aa5af0aa90bad3 Evan Green 2023-04-07 45
aa5af0aa90bad3 Evan Green 2023-04-07 46 return 0;
aa5af0aa90bad3 Evan Green 2023-04-07 47 }
e178bf146e4b8c Andrew Jones 2023-11-22 48
e178bf146e4b8c Andrew Jones 2023-11-22 49 static int riscv_vdso_get_cpus(struct riscv_hwprobe *pairs, size_t pair_count,
e178bf146e4b8c Andrew Jones 2023-11-22 50 size_t cpusetsize, unsigned long *cpus,
e178bf146e4b8c Andrew Jones 2023-11-22 51 unsigned int flags)
e178bf146e4b8c Andrew Jones 2023-11-22 52 {
46fe55b204bfb0 Thomas Weißschuh 2025-02-04 53 const struct vdso_arch_data *avd = &vdso_u_arch_data;
e178bf146e4b8c Andrew Jones 2023-11-22 54 struct riscv_hwprobe *p = pairs;
e178bf146e4b8c Andrew Jones 2023-11-22 55 struct riscv_hwprobe *end = pairs + pair_count;
e178bf146e4b8c Andrew Jones 2023-11-22 56 unsigned char *c = (unsigned char *)cpus;
e178bf146e4b8c Andrew Jones 2023-11-22 57 bool empty_cpus = true;
e178bf146e4b8c Andrew Jones 2023-11-22 58 bool clear_all = false;
e178bf146e4b8c Andrew Jones 2023-11-22 59 int i;
e178bf146e4b8c Andrew Jones 2023-11-22 60
e178bf146e4b8c Andrew Jones 2023-11-22 61 if (!cpusetsize || !cpus)
e178bf146e4b8c Andrew Jones 2023-11-22 62 return -EINVAL;
e178bf146e4b8c Andrew Jones 2023-11-22 63
e178bf146e4b8c Andrew Jones 2023-11-22 64 for (i = 0; i < cpusetsize; i++) {
e178bf146e4b8c Andrew Jones 2023-11-22 65 if (c[i]) {
e178bf146e4b8c Andrew Jones 2023-11-22 66 empty_cpus = false;
e178bf146e4b8c Andrew Jones 2023-11-22 67 break;
e178bf146e4b8c Andrew Jones 2023-11-22 68 }
e178bf146e4b8c Andrew Jones 2023-11-22 69 }
e178bf146e4b8c Andrew Jones 2023-11-22 70
e178bf146e4b8c Andrew Jones 2023-11-22 @71 if (empty_cpus || flags != RISCV_HWPROBE_WHICH_CPUS || !avd->homogeneous_cpus)
e178bf146e4b8c Andrew Jones 2023-11-22 72 return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
e178bf146e4b8c Andrew Jones 2023-11-22 73
e178bf146e4b8c Andrew Jones 2023-11-22 74 while (p < end) {
e178bf146e4b8c Andrew Jones 2023-11-22 75 if (riscv_hwprobe_key_is_valid(p->key)) {
e178bf146e4b8c Andrew Jones 2023-11-22 @76 struct riscv_hwprobe t = {
e178bf146e4b8c Andrew Jones 2023-11-22 @77 .key = p->key,
e178bf146e4b8c Andrew Jones 2023-11-22 @78 .value = avd->all_cpu_hwprobe_values[p->key],
e178bf146e4b8c Andrew Jones 2023-11-22 79 };
e178bf146e4b8c Andrew Jones 2023-11-22 80
e178bf146e4b8c Andrew Jones 2023-11-22 @81 if (!riscv_hwprobe_pair_cmp(&t, p))
e178bf146e4b8c Andrew Jones 2023-11-22 82 clear_all = true;
e178bf146e4b8c Andrew Jones 2023-11-22 83 } else {
e178bf146e4b8c Andrew Jones 2023-11-22 84 clear_all = true;
e178bf146e4b8c Andrew Jones 2023-11-22 85 p->key = -1;
e178bf146e4b8c Andrew Jones 2023-11-22 86 p->value = 0;
e178bf146e4b8c Andrew Jones 2023-11-22 87 }
e178bf146e4b8c Andrew Jones 2023-11-22 88 p++;
e178bf146e4b8c Andrew Jones 2023-11-22 89 }
e178bf146e4b8c Andrew Jones 2023-11-22 90
e178bf146e4b8c Andrew Jones 2023-11-22 91 if (clear_all) {
e178bf146e4b8c Andrew Jones 2023-11-22 92 for (i = 0; i < cpusetsize; i++)
e178bf146e4b8c Andrew Jones 2023-11-22 93 c[i] = 0;
e178bf146e4b8c Andrew Jones 2023-11-22 94 }
e178bf146e4b8c Andrew Jones 2023-11-22 95
e178bf146e4b8c Andrew Jones 2023-11-22 96 return 0;
e178bf146e4b8c Andrew Jones 2023-11-22 97 }
e178bf146e4b8c Andrew Jones 2023-11-22 98
e178bf146e4b8c Andrew Jones 2023-11-22 99 /* Add a prototype to avoid -Wmissing-prototypes warning. */
e178bf146e4b8c Andrew Jones 2023-11-22 100 int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
e178bf146e4b8c Andrew Jones 2023-11-22 101 size_t cpusetsize, unsigned long *cpus,
e178bf146e4b8c Andrew Jones 2023-11-22 102 unsigned int flags);
e178bf146e4b8c Andrew Jones 2023-11-22 103
e178bf146e4b8c Andrew Jones 2023-11-22 @104 int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
e178bf146e4b8c Andrew Jones 2023-11-22 105 size_t cpusetsize, unsigned long *cpus,
e178bf146e4b8c Andrew Jones 2023-11-22 106 unsigned int flags)
e178bf146e4b8c Andrew Jones 2023-11-22 107 {
e178bf146e4b8c Andrew Jones 2023-11-22 108 if (flags & RISCV_HWPROBE_WHICH_CPUS)
e178bf146e4b8c Andrew Jones 2023-11-22 @109 return riscv_vdso_get_cpus(pairs, pair_count, cpusetsize,
e178bf146e4b8c Andrew Jones 2023-11-22 110 cpus, flags);
e178bf146e4b8c Andrew Jones 2023-11-22 111
e178bf146e4b8c Andrew Jones 2023-11-22 @112 return riscv_vdso_get_values(pairs, pair_count, cpusetsize,
:::::: The code at line 22 was first introduced by commit
:::::: aa5af0aa90bad3f1cad5a90ee5eecd92ac9f3096 RISC-V: Add hwprobe vDSO function and data
:::::: TO: Evan Green <evan@rivosinc.com>
:::::: CC: Palmer Dabbelt <palmer@rivosinc.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-09 8:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-09 8:12 [thomas-weissschuh:b4/vdso-sysfs 3/3] arch/riscv/kernel/vdso/hwprobe.c:22:36: error: invalid use of undefined type 'struct riscv_hwprobe' kernel test robot
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.