Re: [PATCH 01/15] tick/nohz: Remove duplicate between tick_nohz_switch_to_nohz() and tick_setup_sched_timer()

From: Thomas Gleixner
Date: Thu Jan 25 2024 - 04:13:02 EST


On Wed, Jan 24 2024 at 18:04, Frederic Weisbecker wrote:
>
> /**
> * tick_setup_sched_timer - setup the tick emulation timer
> + * @mode: tick_nohz_mode to setup for
> */
> -void tick_setup_sched_timer(void)
> +void tick_setup_sched_timer(int mode)
> {
> struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
> - ktime_t now = ktime_get();
>
> /* Emulate tick processing via per-CPU hrtimers: */
> hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
> - ts->sched_timer.function = tick_nohz_highres_handler;
> +#ifdef CONFIG_HIGH_RES_TIMERS
> + if (mode == NOHZ_MODE_HIGHRES)
> + ts->sched_timer.function = tick_nohz_highres_handler;
> +#endif

Adding

#define tick_nohz_highres_handler NULL

for CONFIG_HIGH_RES_TIMERS=n somewhere allows you to write that as:

if (IS_ENABLED(CONFIG_HIGH_RES_TIMERS) && mode == NOHZ_MODE_HIGHRES)
ts->sched_timer.function = tick_nohz_highres_handler;

> + hrtimer_forward_now(&ts->sched_timer, TICK_NSEC);
> + if (mode == NOHZ_MODE_HIGHRES)

Wants a (IS_ENABLED(HIGRES) && mode == ...) no?

Thanks,

tglx