]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
hrtimer: Select housekeeping CPU during migration
authorCosta Shulyupin <costa.shul@redhat.com>
Thu, 22 Feb 2024 20:08:56 +0000 (22:08 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 22 Feb 2024 21:18:21 +0000 (22:18 +0100)
During CPU-down hotplug, hrtimers may migrate to isolated CPUs,
compromising CPU isolation.

Address this issue by masking valid CPUs for hrtimers using
housekeeping_cpumask(HK_TYPE_TIMER).

Suggested-by: Waiman Long <longman@redhat.com>
Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Waiman Long <longman@redhat.com>
Link: https://lore.kernel.org/r/20240222200856.569036-1-costa.shul@redhat.com
kernel/time/hrtimer.c

index 5a98b35b05767ff1c780a4864ec07326be499046..1fd106af747d1d37d9bdf98f46084bf24668df85 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/sched/deadline.h>
 #include <linux/sched/nohz.h>
 #include <linux/sched/debug.h>
+#include <linux/sched/isolation.h>
 #include <linux/timer.h>
 #include <linux/freezer.h>
 #include <linux/compat.h>
@@ -2225,8 +2226,8 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
 
 int hrtimers_cpu_dying(unsigned int dying_cpu)
 {
+       int i, ncpu = cpumask_any_and(cpu_active_mask, housekeeping_cpumask(HK_TYPE_TIMER));
        struct hrtimer_cpu_base *old_base, *new_base;
-       int i, ncpu = cpumask_first(cpu_active_mask);
 
        tick_cancel_sched_timer(dying_cpu);