[tip:timers/core 3/3] kernel/time/hrtimer.c:2224:49: error: implicit declaration of function 'housekeeping' is invalid in C99

From: kernel test robot
Date: Wed Feb 14 2024 - 04:35:49 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
head: 86342554e102b0d18d50abec43d40f4fc92f1993
commit: 86342554e102b0d18d50abec43d40f4fc92f1993 [3/3] hrtimer: Select housekeeping CPU during migration
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240214/202402141742.oYY6J3lC-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240214/202402141742.oYY6J3lC-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402141742.oYY6J3lC-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

kernel/time/hrtimer.c:1651:7: warning: variable 'expires_in_hardirq' set but not used [-Wunused-but-set-variable]
bool expires_in_hardirq;
^
>> kernel/time/hrtimer.c:2224:49: error: implicit declaration of function 'housekeeping' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
int i, ncpu = cpumask_any_and(cpu_active_mask, housekeeping(HK_TYPE_TIMER));
^
>> kernel/time/hrtimer.c:2224:62: error: use of undeclared identifier 'HK_TYPE_TIMER'
int i, ncpu = cpumask_any_and(cpu_active_mask, housekeeping(HK_TYPE_TIMER));
^
1 warning and 2 errors generated.


vim +/housekeeping +2224 kernel/time/hrtimer.c

2221
2222 int hrtimers_cpu_dying(unsigned int dying_cpu)
2223 {
> 2224 int i, ncpu = cpumask_any_and(cpu_active_mask, housekeeping(HK_TYPE_TIMER));
2225 struct hrtimer_cpu_base *old_base, *new_base;
2226
2227 tick_cancel_sched_timer(dying_cpu);
2228
2229 old_base = this_cpu_ptr(&hrtimer_bases);
2230 new_base = &per_cpu(hrtimer_bases, ncpu);
2231
2232 /*
2233 * The caller is globally serialized and nobody else
2234 * takes two locks at once, deadlock is not possible.
2235 */
2236 raw_spin_lock(&old_base->lock);
2237 raw_spin_lock_nested(&new_base->lock, SINGLE_DEPTH_NESTING);
2238
2239 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
2240 migrate_hrtimer_list(&old_base->clock_base[i],
2241 &new_base->clock_base[i]);
2242 }
2243
2244 /*
2245 * The migration might have changed the first expiring softirq
2246 * timer on this CPU. Update it.
2247 */
2248 __hrtimer_get_next_event(new_base, HRTIMER_ACTIVE_SOFT);
2249 /* Tell the other CPU to retrigger the next event */
2250 smp_call_function_single(ncpu, retrigger_next_event, NULL, 0);
2251
2252 raw_spin_unlock(&new_base->lock);
2253 raw_spin_unlock(&old_base->lock);
2254
2255 return 0;
2256 }
2257

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki