All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.