mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
Merge tag 'timers-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Ingo Molnar: "Update/fix two CPU sanity checks in the hotplug and the boot code, and fix a typo in the Kconfig help text. [ Context: the first two commits are the result of an ongoing annotation+review work of (intentional) tick_do_timer_cpu() data races reported by KCSAN, but the annotations aren't fully cooked yet ]" * tag 'timers-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: timekeeping: Fix spelling mistake in Kconfig "fullfill" -> "fulfill" tick/sched: Remove bogus boot "safety" check tick: Remove pointless cpu valid check in hotplug code
This commit is contained in:
@@ -141,7 +141,7 @@ config CONTEXT_TRACKING_FORCE
|
|||||||
dynticks working.
|
dynticks working.
|
||||||
|
|
||||||
This option stands for testing when an arch implements the
|
This option stands for testing when an arch implements the
|
||||||
context tracking backend but doesn't yet fullfill all the
|
context tracking backend but doesn't yet fulfill all the
|
||||||
requirements to make the full dynticks feature working.
|
requirements to make the full dynticks feature working.
|
||||||
Without the full dynticks, there is no way to test the support
|
Without the full dynticks, there is no way to test the support
|
||||||
for context tracking and the subsystems that rely on it: RCU
|
for context tracking and the subsystems that rely on it: RCU
|
||||||
|
@@ -407,17 +407,13 @@ EXPORT_SYMBOL_GPL(tick_broadcast_oneshot_control);
|
|||||||
/*
|
/*
|
||||||
* Transfer the do_timer job away from a dying cpu.
|
* Transfer the do_timer job away from a dying cpu.
|
||||||
*
|
*
|
||||||
* Called with interrupts disabled. Not locking required. If
|
* Called with interrupts disabled. No locking required. If
|
||||||
* tick_do_timer_cpu is owned by this cpu, nothing can change it.
|
* tick_do_timer_cpu is owned by this cpu, nothing can change it.
|
||||||
*/
|
*/
|
||||||
void tick_handover_do_timer(void)
|
void tick_handover_do_timer(void)
|
||||||
{
|
{
|
||||||
if (tick_do_timer_cpu == smp_processor_id()) {
|
if (tick_do_timer_cpu == smp_processor_id())
|
||||||
int cpu = cpumask_first(cpu_online_mask);
|
tick_do_timer_cpu = cpumask_first(cpu_online_mask);
|
||||||
|
|
||||||
tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :
|
|
||||||
TICK_DO_TIMER_NONE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -989,13 +989,6 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts)
|
|||||||
*/
|
*/
|
||||||
if (tick_do_timer_cpu == cpu)
|
if (tick_do_timer_cpu == cpu)
|
||||||
return false;
|
return false;
|
||||||
/*
|
|
||||||
* Boot safety: make sure the timekeeping duty has been
|
|
||||||
* assigned before entering dyntick-idle mode,
|
|
||||||
* tick_do_timer_cpu is TICK_DO_TIMER_BOOT
|
|
||||||
*/
|
|
||||||
if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_BOOT))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Should not happen for nohz-full */
|
/* Should not happen for nohz-full */
|
||||||
if (WARN_ON_ONCE(tick_do_timer_cpu == TICK_DO_TIMER_NONE))
|
if (WARN_ON_ONCE(tick_do_timer_cpu == TICK_DO_TIMER_NONE))
|
||||||
|
Reference in New Issue
Block a user