]> git.ipfire.org Git - thirdparty/linux.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)
committerHeiko Carstens <hca@linux.ibm.com>
Thu, 23 Oct 2025 14:11:38 +0000 (16:11 +0200)
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>
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;