From: kernel test robot <lkp@intel.com>
To: "Thomas Weißschuh " <thomas.weissschuh@linutronix.de>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [thomas-weissschuh:b4/vdso-sysfs 3/3] arch/riscv/kernel/vdso/hwprobe.c:22:36: error: invalid use of undefined type 'struct riscv_hwprobe'
Date: Thu, 09 Jul 2026 16:12:43 +0800 [thread overview]
Message-ID: <202607091634.SilC93xo-lkp@intel.com> (raw)
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
reply other threads:[~2026-07-09 8:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202607091634.SilC93xo-lkp@intel.com \
--to=lkp@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=thomas.weissschuh@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.