Re: [PATCH] hrtimer: select housekeeping CPU during migration

From: Waiman Long
Date: Sun Feb 11 2024 - 11:38:03 EST



On 2/11/24 08:52, Costa Shulyupin wrote:
because during CPU deactivation a timer can migrate
to isolated CPU and break CPU isolation.

For reference see function get_nohz_timer_target,
which selects CPU for new timers from housekeeping_cpumask(HK_TYPE_TIMER)

Inspired by Waiman Long <longman@xxxxxxxxxx>

Signed-off-by: Costa Shulyupin <costa.shul@xxxxxxxxxx>

Nit: It is unusual to begin the commit log with "because".

Other than that, the patch looks good to me.

Reviewed-by:  Waiman Long <longman@xxxxxxxxxx>

---
kernel/time/hrtimer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index f82997cf53b6..460d916e24b7 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -2227,7 +2227,7 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
int hrtimers_cpu_dying(unsigned int dying_cpu)
{
struct hrtimer_cpu_base *old_base, *new_base;
- int i, ncpu = cpumask_first(cpu_active_mask);
+ int i, ncpu = cpumask_any_and(cpu_active_mask, housekeeping(HK_TYPE_TIMER));
pr_debug("ncpu=%d, dying_cpu=%d\n", ncpu, dying_cpu);
tick_cancel_sched_timer(dying_cpu);