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:
Коммит
fbb9c58e56
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче