Commit af68cb3f authored by Anna-Maria Behnsen's avatar Anna-Maria Behnsen Committed by Thomas Gleixner
Browse files

timers: Simplify code in run_local_timers()



The logic for raising a softirq the way it is implemented right now, is
readable for two timer bases. When increasing the number of timer bases,
code gets harder to read. With the introduction of the timer migration
hierarchy, there will be three timer bases.

Therefore restructure the code to use a loop. No functional change.

Signed-off-by: default avatarAnna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/20240221090548.36600-9-anna-maria@linutronix.de
parent aae55e9f
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -2180,16 +2180,14 @@ static void run_local_timers(void)
	struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);

	hrtimer_run_queues();

	for (int i = 0; i < NR_BASES; i++, base++) {
		/* Raise the softirq only if required. */
	if (time_before(jiffies, base->next_expiry)) {
		if (!IS_ENABLED(CONFIG_NO_HZ_COMMON))
			return;
		/* CPU is awake, so check the deferrable base. */
		base++;
		if (time_before(jiffies, base->next_expiry))
		if (time_after_eq(jiffies, base->next_expiry)) {
			raise_softirq(TIMER_SOFTIRQ);
			return;
		}
	raise_softirq(TIMER_SOFTIRQ);
	}
}

/*