]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/smp: Fix fallback CPU detection
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 20 Oct 2025 14:17:54 +0000 (16:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:02:36 +0000 (14:02 +0100)
[ Upstream commit 07a75d08cfa1b883a6e1256666e5f0617ee99231 ]

In case SCLP CPU detection does not work a fallback mechanism using SIGP is
in place. Since a cleanup this does not work correctly anymore: new CPUs
are only considered if their type matches the boot CPU.

Before the cleanup the information if a CPU type should be considered was
also part of a structure generated by the fallback mechanism and indicated
that a CPU type should not be considered when adding CPUs.

Since the rework a global SCLP state is used instead. If the global SCLP
state indicates that the CPU type should be considered and the fallback
mechanism is used, there may be a mismatch with CPU types if CPUs are
added. This can lead to a system with only a single CPU even tough there
are many more CPUs.

Address this by simply copying the boot cpu type into the generated data
structure from the fallback mechanism.

Reported-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Fixes: d08d94306e90 ("s390/smp: cleanup core vs. cpu in the SCLP interface")
Reviewed-by: Mete Durlu <meted@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/smp.c

index da84c0dc6b7e0f6130ead0490a316f3f77901c39..70df4ca5d4436c11e3330048c58ddb7fa3aeb753 100644 (file)
@@ -697,6 +697,7 @@ static void __ref smp_get_core_info(struct sclp_core_info *info, int early)
                                continue;
                        info->core[info->configured].core_id =
                                address >> smp_cpu_mt_shift;
+                       info->core[info->configured].type = boot_core_type;
                        info->configured++;
                }
                info->combined = info->configured;