|
|
@@ -355,9 +355,6 @@ void __weak arch_smt_update(void) { }
|
|
|
|
|
|
#ifdef CONFIG_HOTPLUG_SMT
|
|
|
enum cpuhp_smt_control cpu_smt_control __read_mostly = CPU_SMT_ENABLED;
|
|
|
-EXPORT_SYMBOL_GPL(cpu_smt_control);
|
|
|
-
|
|
|
-static bool cpu_smt_available __read_mostly;
|
|
|
|
|
|
void __init cpu_smt_disable(bool force)
|
|
|
{
|
|
|
@@ -375,25 +372,11 @@ void __init cpu_smt_disable(bool force)
|
|
|
|
|
|
/*
|
|
|
* The decision whether SMT is supported can only be done after the full
|
|
|
- * CPU identification. Called from architecture code before non boot CPUs
|
|
|
- * are brought up.
|
|
|
- */
|
|
|
-void __init cpu_smt_check_topology_early(void)
|
|
|
-{
|
|
|
- if (!topology_smt_supported())
|
|
|
- cpu_smt_control = CPU_SMT_NOT_SUPPORTED;
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * If SMT was disabled by BIOS, detect it here, after the CPUs have been
|
|
|
- * brought online. This ensures the smt/l1tf sysfs entries are consistent
|
|
|
- * with reality. cpu_smt_available is set to true during the bringup of non
|
|
|
- * boot CPUs when a SMT sibling is detected. Note, this may overwrite
|
|
|
- * cpu_smt_control's previous setting.
|
|
|
+ * CPU identification. Called from architecture code.
|
|
|
*/
|
|
|
void __init cpu_smt_check_topology(void)
|
|
|
{
|
|
|
- if (!cpu_smt_available)
|
|
|
+ if (!topology_smt_supported())
|
|
|
cpu_smt_control = CPU_SMT_NOT_SUPPORTED;
|
|
|
}
|
|
|
|
|
|
@@ -406,18 +389,10 @@ early_param("nosmt", smt_cmdline_disable);
|
|
|
|
|
|
static inline bool cpu_smt_allowed(unsigned int cpu)
|
|
|
{
|
|
|
- if (topology_is_primary_thread(cpu))
|
|
|
+ if (cpu_smt_control == CPU_SMT_ENABLED)
|
|
|
return true;
|
|
|
|
|
|
- /*
|
|
|
- * If the CPU is not a 'primary' thread and the booted_once bit is
|
|
|
- * set then the processor has SMT support. Store this information
|
|
|
- * for the late check of SMT support in cpu_smt_check_topology().
|
|
|
- */
|
|
|
- if (per_cpu(cpuhp_state, cpu).booted_once)
|
|
|
- cpu_smt_available = true;
|
|
|
-
|
|
|
- if (cpu_smt_control == CPU_SMT_ENABLED)
|
|
|
+ if (topology_is_primary_thread(cpu))
|
|
|
return true;
|
|
|
|
|
|
/*
|