When a new CPU is added, the kernel is activating all its threads. This leads to weird, but functional, result when adding CPU on a SMT 4 system for instance.
Here the newly added CPU 1 has 8 threads while the other one has 4 threads active (system has been booted with the 'smt-enabled=4' kernel option): ltcden3-lp12:~ # ppc64_cpu --info Core 0: 0* 1* 2* 3* 4 5 6 7 Core 1: 8* 9* 10* 11* 12* 13* 14* 15* This mixed SMT level is confusing end users and some application like lparstat are reporting wrong values. There is no SMT level recorded in the kernel, neither in user space. Such a level could be helpful when adding new CPU or when optimizing the energy efficiency. This series introduce a new SYS FS entry named 'pseries_smt' to store the current SMT level. The SMT level is provided in best effort, writing a new value into that entry is only recording it into the kernel. This way, it can be used when new CPU are onlined for instance. There is no real change to the CPU setup when a value is written, no CPU are onlined or offlined. At boot time `pseries_smt` is loaded with smt_enabled_at_boot which is containing the SMT level set at boot time, even if no kernel option is specified. The change is specific to pseries since CPU hot-plug is only provided for this platform. The second patch of this series is implementing the change to online only the right number of threads when a new CPU is added. Laurent Dufour (2): pseries/smp: export the smt level in the SYS FS. powerpc/pseries/cpuhp: respect current SMT when adding new CPU arch/powerpc/platforms/pseries/hotplug-cpu.c | 18 ++++++--- arch/powerpc/platforms/pseries/pseries.h | 3 ++ arch/powerpc/platforms/pseries/smp.c | 39 ++++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) -- 2.40.0