[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <609e6fe5-2893-4c13-8e52-e9df05146ffb@gmail.com>
Date: Tue, 29 Apr 2025 10:15:29 +0200
From: Florian Fainelli <f.fainelli@...il.com>
To: Doug Berger <opendmb@...il.com>, Ingo Molnar <mingo@...hat.com>,
Peter Zijlstra <peterz@...radead.org>, Juri Lelli <juri.lelli@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>
Cc: Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>, Ben Segall <bsegall@...gle.com>,
Mel Gorman <mgorman@...e.de>, Valentin Schneider <vschneid@...hat.com>,
Florian Fainelli <florian.fainelli@...adcom.com>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] sched/topology: clear freecpu bit on detach
On 4/22/2025 9:48 PM, Doug Berger wrote:
> There is a hazard in the deadline scheduler where an offlined CPU
> can have its free_cpus bit left set in the def_root_domain when
> the schedutil cpufreq governor is used. This can allow a deadline
> thread to be pushed to the runqueue of a powered down CPU which
> breaks scheduling. The details can be found here:
> https://lore.kernel.org/lkml/20250110233010.2339521-1-opendmb@gmail.com
>
> The free_cpus mask is expected to be cleared by set_rq_offline();
> however, the hazard occurs before the root domain is made online
> during CPU hotplug so that function is not invoked for the CPU
> that is being made active.
>
> This commit works around the issue by ensuring the free_cpus bit
> for a CPU is always cleared when the CPU is removed from a
> root_domain. This likely makes the call of cpudl_clear_freecpu()
> in rq_offline_dl() fully redundant, but I have not removed it
> here because I am not certain of all flows.
>
> It seems likely that a better solution is possible from someone
> more familiar with the scheduler implementation, but this
> approach is minimally invasive from someone who is not.
>
> Signed-off-by: Doug Berger <opendmb@...il.com>
> ---
FWIW, we were able to reproduce this with the attached hotplug.sh script
which would just randomly hot plug/unplug CPUs (./hotplug.sh 4). Within
a few hundred of iterations you could see the lock up occur, it's
unclear why this has not been seen by more people.
Since this is not the first posting or attempt at fixing this bug [1]
and we consider it to be a serious one, can this be reviewed/commented
on/applied? Thanks!
[1]: https://lkml.org/lkml/2025/1/14/1687
--
Florian
View attachment "hotplug.sh" of type "text/plain" (699 bytes)
Powered by blists - more mailing lists