On 13/06/2023 20:53:56, Thomas Gleixner wrote: > On Tue, Jun 13 2023 at 19:16, Laurent Dufour wrote: >> On 10/06/2023 23:26:18, Thomas Gleixner wrote: >>> On Thu, May 25 2023 at 01:56, Michael Ellerman wrote: >>>> #ifdef CONFIG_HOTPLUG_SMT >>>> enum cpuhp_smt_control cpu_smt_control __read_mostly = CPU_SMT_ENABLED; >>>> +static unsigned int cpu_smt_max_threads __ro_after_init; >>>> +unsigned int cpu_smt_num_threads; >>> >>> Why needs this to be global? cpu_smt_control is pointlessly global already. >> >> I agree that cpu_smt_*_threads should be static. I spoke too quickly, cpu_smt_num_threads is used in the powerpc code. When a new CPU is added it used to decide whether a thread has to be onlined or not, and there is no way to pass it as argument at this time. In details, it is used in topology_smt_thread_allowed() called by dlpar_online_cpu() (see patch "powerpc/pseries: Honour current SMT state when DLPAR onlining CPUs" at the end of this series). I think the best option is to keep it global. >> >> Howwever, regarding cpu_smt_control, it is used in 2 places in the x86 code: >> - arch/x86/power/hibernate.c in arch_resume_nosmt() >> - arch/x86/kernel/cpu/bugs.c in spectre_v2_user_select_mitigation() > > Bah. I must have fatfingered the grep then. > >> An accessor function may be introduced to read that value in these 2 >> functions, but I'm wondering if that's really the best option. >> >> Unless there is a real need to change this through this series, I think >> cpu_smt_control can remain global. > > That's fine. > > Thanks, > > tglx