From: Kai Huang <kai.huang@xxxxxxxxxxxxxxx> Add a comment to explain that TDX also depends on booting logical CPUs at least once. TDSYSINITLP must be run on all CPUs, even software disabled CPUs in the -nosmt case. Fortunately, current SMT handling for #MC already supports booting all CPUs once; the to-be-disabled sibling is booted once (and later put into deep C-state to honor SMT=off) to allow the init code to set CR4.MCE and avoid an unwanted shutdown on a broadcasted MCE. Signed-off-by: Kai Huang <kai.huang@xxxxxxxxxxxxxxx> Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> --- kernel/cpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/cpu.c b/kernel/cpu.c index e538518556f4..58377a03e9d6 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -446,6 +446,10 @@ static inline bool cpu_smt_allowed(unsigned int cpu) * that the init code can get a chance to set CR4.MCE on each * CPU. Otherwise, a broadcasted MCE observing CR4.MCE=0b on any * core will shutdown the machine. + * + * Intel TDX also requires running TDH_SYS_LP_INIT on all logical CPUs + * during boot, booting all CPUs once allows TDX to play nice with + * 'nosmt'. */ return !cpumask_test_cpu(cpu, &cpus_booted_once_mask); } -- 2.25.1