Messages in this thread Patch in this message | | | From | Alex Belits <> | Subject | [PATCH v5 9/9] task_isolation: kick_all_cpus_sync: don't kick isolated cpus | Date | Mon, 23 Nov 2020 17:58:42 +0000 |
| |
From: Yuri Norov <ynorov@marvell.com>
Make sure that kick_all_cpus_sync() does not call CPUs that are running isolated tasks.
Signed-off-by: Yuri Norov <ynorov@marvell.com> [abelits@marvell.com: use safe task_isolation_cpumask() implementation] Signed-off-by: Alex Belits <abelits@marvell.com> --- kernel/smp.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/kernel/smp.c b/kernel/smp.c index 4d17501433be..b2faecf58ed0 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -932,9 +932,21 @@ static void do_nothing(void *unused) */ void kick_all_cpus_sync(void) { + struct cpumask mask; + /* Make sure the change is visible before we kick the cpus */ smp_mb(); - smp_call_function(do_nothing, NULL, 1); + + preempt_disable(); +#ifdef CONFIG_TASK_ISOLATION + cpumask_clear(&mask); + task_isolation_cpumask(&mask); + cpumask_complement(&mask, &mask); +#else + cpumask_setall(&mask); +#endif + smp_call_function_many(&mask, do_nothing, NULL, 1); + preempt_enable(); } EXPORT_SYMBOL_GPL(kick_all_cpus_sync); -- 2.20.1
| |