diff options
author | Sven Schnelle <svens@linux.ibm.com> | 2021-08-27 21:21:05 +0300 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2021-09-07 14:38:41 +0300 |
commit | a052096bdd6809eeab809202726634d1ac975aa1 (patch) | |
tree | 80e72fe5fe0a406816ca467958870dd0f8dc5bec /arch/s390/include/asm/smp.h | |
parent | 88b604263f3d6eedae0b1c2c3bbd602d1e2e8775 (diff) | |
download | linux-a052096bdd6809eeab809202726634d1ac975aa1.tar.xz |
s390/topology: fix topology information when calling cpu hotplug notifiers
The cpu hotplug notifiers are called without updating the core/thread
masks when a new CPU is added. This causes problems with code setting
up data structures in a cpu hotplug notifier, and relying on that later
in normal code.
This caused a crash in the new core scheduling code (SCHED_CORE),
where rq->core was set up in a notifier depending on cpu masks.
To fix this, add a cpu_setup_mask which is used in update_cpu_masks()
instead of the cpu_online_mask to determine whether the cpu masks should
be set for a certain cpu. Also move update_cpu_masks() to update the
masks before calling notify_cpu_starting() so that the notifiers are
seeing the updated masks.
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Cc: <stable@vger.kernel.org>
[hca@linux.ibm.com: get rid of cpu_online_mask handling]
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/smp.h')
-rw-r--r-- | arch/s390/include/asm/smp.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h index e317fd4866c1..f16f4d054ae2 100644 --- a/arch/s390/include/asm/smp.h +++ b/arch/s390/include/asm/smp.h @@ -18,6 +18,7 @@ extern struct mutex smp_cpu_state_mutex; extern unsigned int smp_cpu_mt_shift; extern unsigned int smp_cpu_mtid; extern __vector128 __initdata boot_cpu_vector_save_area[__NUM_VXRS]; +extern cpumask_t cpu_setup_mask; extern int __cpu_up(unsigned int cpu, struct task_struct *tidle); |