[GIT pull] timers/urgent for v5.18-rc3

Thomas Gleixner posted 1 patch 4 years ago
kernel/time/tick-sched.c |  6 +++---
kernel/time/timer.c      | 11 +++++++----
2 files changed, 10 insertions(+), 7 deletions(-)
[GIT pull] timers/urgent for v5.18-rc3
Posted by Thomas Gleixner 4 years ago
Linus,

please pull the latest timers/urgent branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-urgent-2022-04-17

up to:  9c95bc25ad3b: tick/sched: Fix non-kernel-doc comment


A small set of fixes for the timers core:

  - Fix the warning condition in __run_timers() which does not take into
    account, that a CPU base (especially the deferrable base) has never a
    timer armed on it and therefore the next_expiry value can become stale.

  - Replace a WARN_ON() in the NOHZ code with a WARN_ON_ONCE() to prevent
    endless spam in dmesg.

  - Remove the double star from a comment which is not meant to be in
    kernel-doc format.


Thanks,

	tglx

------------------>
Anna-Maria Behnsen (1):
      timers: Fix warning condition in __run_timers()

Jiapeng Chong (1):
      tick/sched: Fix non-kernel-doc comment

Paul Gortmaker (1):
      tick/nohz: Use WARN_ON_ONCE() to prevent console saturation


 kernel/time/tick-sched.c |  6 +++---
 kernel/time/timer.c      | 11 +++++++----
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 2d76c91b85de..d257721c68b8 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -188,7 +188,7 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)
 	 */
 	if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_NONE)) {
 #ifdef CONFIG_NO_HZ_FULL
-		WARN_ON(tick_nohz_full_running);
+		WARN_ON_ONCE(tick_nohz_full_running);
 #endif
 		tick_do_timer_cpu = cpu;
 	}
@@ -1538,7 +1538,7 @@ void tick_cancel_sched_timer(int cpu)
 }
 #endif
 
-/**
+/*
  * Async notification about clocksource changes
  */
 void tick_clock_notify(void)
@@ -1559,7 +1559,7 @@ void tick_oneshot_notify(void)
 	set_bit(0, &ts->check_clocks);
 }
 
-/**
+/*
  * Check, if a change happened, which makes oneshot possible.
  *
  * Called cyclic from the hrtimer softirq (driven by the timer
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 85f1021ad459..9dd2a39cb3b0 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1722,11 +1722,14 @@ static inline void __run_timers(struct timer_base *base)
 	       time_after_eq(jiffies, base->next_expiry)) {
 		levels = collect_expired_timers(base, heads);
 		/*
-		 * The only possible reason for not finding any expired
-		 * timer at this clk is that all matching timers have been
-		 * dequeued.
+		 * The two possible reasons for not finding any expired
+		 * timer at this clk are that all matching timers have been
+		 * dequeued or no timer has been queued since
+		 * base::next_expiry was set to base::clk +
+		 * NEXT_TIMER_MAX_DELTA.
 		 */
-		WARN_ON_ONCE(!levels && !base->next_expiry_recalc);
+		WARN_ON_ONCE(!levels && !base->next_expiry_recalc
+			     && base->timers_pending);
 		base->clk++;
 		base->next_expiry = __next_timer_interrupt(base);
 
Re: [GIT pull] timers/urgent for v5.18-rc3
Posted by pr-tracker-bot@kernel.org 4 years ago
The pull request you sent on Sun, 17 Apr 2022 11:59:14 +0200 (CEST):

> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-urgent-2022-04-17

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/fbb9c58e56f2ee56e77b19fdfac131d57d3341c1

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html