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.
-----BEGIN PGP SIGNATURE-----
iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmJb44gTHHRnbHhAbGlu
dXRyb25peC5kZQAKCRCmGPVMDXSYoXptD/4tKI9W4q0CAZnXw/G9cJdUK2u2VQGb
QfB0DMABuDLMlHUSO92T49IcfjQUR7hz36kHXY0OxwALaEB8ftap6yZLfI1864mZ
RFatWcTl71ZYY0SSio0rMnbDawTeN9N69WLPR+A6fDH0ahBqTwpeJoa1zj5w99LF
kFoEtI5vEBtf+m94PljBTclxOKTXmRRCzEZRpJ6L4Ze9SHR7aMKtBgp84M7a3IAw
IzXq0Kw0MRIm4P26uOpsVzi2KOq6+F1O1zy4L8cHVeU+Y6HC1qWLPXsyhipb0liE
6STFs1L7ANX+dpMW8kmorXc3RcN4xCuCY4Sb17W6Hqiq3syQ+Ho2G0CTheL0yOpM
GVqf7SVes3EGAJwWyKaFmhpgWGKcS93p18XGUrf5V+rVIU+ggQcc2vM9E8FiM03d
TA6T9+1u0TvtPlmd/KQ3OPLMEtu6/3R0fOLEXnv+Cb/PYIYMvPpb9cu6LjJkNqGv
6R+3dWORI7mYLZD+vS3Y5mrmB5OECGXTPNJ+aBr46PfdvSVLxvmOhFlNR7eQKHZ8
wFwOC6n4wkD5Y1VOVGEn0GVGWVkZXdlQzZOQGqBhJPjsfPfOaGacyLqCcsZH4V6w
kitKI8z7A7evLozZMQqKZskwLG1BTQ13YeElb5jJMpG3aTG7lSmPk+iGgLFMDWkc
Z2k4YD0Uw+92Tw==
=SffK
-----END PGP SIGNATURE-----
Merge tag 'timers-urgent-2022-04-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Thomas Gleixner:
"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) never
has 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"
* tag 'timers-urgent-2022-04-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
tick/sched: Fix non-kernel-doc comment
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
timers: Fix warning condition in __run_timers()
This commit is contained in:
commit
fbb9c58e56
2 changed files with 10 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue