x86/srso: Tie SBPB bit setting to microcode patch detection
authorBorislav Petkov (AMD) <bp@alien8.de>
Mon, 7 Aug 2023 08:46:04 +0000 (10:46 +0200)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 7 Aug 2023 08:53:08 +0000 (10:53 +0200)
commit5a15d8348881e9371afdf9f5357a135489496955
tree477c10789c4ac4d317cc375926e6eda917baf0d3
parent3bbbe97ad83db8d9df06daf027b0840188de625d
x86/srso: Tie SBPB bit setting to microcode patch detection

The SBPB bit in MSR_IA32_PRED_CMD is supported only after a microcode
patch has been applied so set X86_FEATURE_SBPB only then. Otherwise,
guests would attempt to set that bit and #GP on the MSR write.

While at it, make SMT detection more robust as some guests - depending
on how and what CPUID leafs their report - lead to cpu_smt_control
getting set to CPU_SMT_NOT_SUPPORTED but SRSO_NO should be set for any
guest incarnation where one simply cannot do SMT, for whatever reason.

Fixes: fb3bd914b3ec ("x86/srso: Add a Speculative RAS Overflow mitigation")
Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reported-by: Salvatore Bonaccorso <carnil@debian.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/bugs.c