Re: [PATCH] tick: shift tick_nohz_switch_to_nohz() from tick_check_oneshot_change() to hrtimer_run_queues()

From: kernel test robot
Date: Thu May 30 2024 - 20:28:33 EST


Hi Oleg,

kernel test robot noticed the following build errors:

[auto build test ERROR on tip/timers/core]
[also build test ERROR on linus/master v6.10-rc1 next-20240529]
[cannot apply to tip/timers/nohz]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Oleg-Nesterov/tick-shift-tick_nohz_switch_to_nohz-from-tick_check_oneshot_change-to-hrtimer_run_queues/20240530-204940
base: tip/timers/core
patch link: https://lore.kernel.org/r/20240530124203.GA26990%40redhat.com
patch subject: [PATCH] tick: shift tick_nohz_switch_to_nohz() from tick_check_oneshot_change() to hrtimer_run_queues()
config: i386-randconfig-001-20240531 (https://download.01.org/0day-ci/archive/20240531/202405310818.JPmNHEjC-lkp@xxxxxxxxx/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240531/202405310818.JPmNHEjC-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/202405310818.JPmNHEjC-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

ld: kernel/time/hrtimer.o: in function `hrtimer_run_queues':
>> kernel/time/hrtimer.c:1898:(.text+0x1e71): undefined reference to `tick_nohz_switch_to_nohz'


vim +1898 kernel/time/hrtimer.c

1874
1875 /*
1876 * Called from run_local_timers in hardirq context every jiffy
1877 */
1878 void hrtimer_run_queues(void)
1879 {
1880 struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases);
1881 unsigned long flags;
1882 ktime_t now;
1883
1884 if (hrtimer_hres_active(cpu_base))
1885 return;
1886
1887 /*
1888 * This _is_ ugly: We have to check periodically, whether we
1889 * can switch to highres and / or nohz mode. The clocksource
1890 * switch happens with xtime_lock held. Notification from
1891 * there only sets the check bit in the tick_oneshot code,
1892 * otherwise we might deadlock vs. xtime_lock.
1893 */
1894 if (tick_check_oneshot_change()) {
1895 if (hrtimer_is_hres_enabled())
1896 hrtimer_switch_to_hres();
1897 else
> 1898 tick_nohz_switch_to_nohz();
1899 return;
1900 }
1901
1902 raw_spin_lock_irqsave(&cpu_base->lock, flags);
1903 now = hrtimer_update_base(cpu_base);
1904
1905 if (!ktime_before(now, cpu_base->softirq_expires_next)) {
1906 cpu_base->softirq_expires_next = KTIME_MAX;
1907 cpu_base->softirq_activated = 1;
1908 raise_softirq_irqoff(HRTIMER_SOFTIRQ);
1909 }
1910
1911 __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD);
1912 raw_spin_unlock_irqrestore(&cpu_base->lock, flags);
1913 }
1914

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