All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] x86/speculation/srbds: do not try to turn mitigation off when not supported
@ 2022-03-30  8:20 Ricardo Cañuelo
  2022-03-30 20:02 ` Borislav Petkov
  2022-03-31  6:53 ` Pawan Gupta
  0 siblings, 2 replies; 9+ messages in thread
From: Ricardo Cañuelo @ 2022-03-30  8:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ricardo Cañuelo, Borislav Petkov,
	Thadeu Lima de Souza Cascardo, Mark Gross, x86, H. Peter Anvin,
	Ingo Molnar, Thomas Gleixner, John Johansen, Steve Beattie,
	kernel

When SRBDS is mitigated by TSX OFF, update_srbds_msr will still read and
write to MSR_IA32_MCU_OPT_CTRL even when that is not supported by the
microcode.

Checking for X86_FEATURE_SRBDS_CTRL as a CPU feature available makes more
sense than checking for SRBDS_MITIGATION_UCODE_NEEDED as the found
"mitigation".

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Tested-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
---
Hi all,

This patch was originally posted here:

https://lore.kernel.org/all/20200609174313.2600320-1-cascardo@canonical.com/#t

by Boris, based on the original patch by Cascardo, I didn't make any
changes to it. I didn't see it merged or discussed further and I can
still reproduce the issue on a Samsung Galaxy Chromebook 2 (Intel
Cometlake-U). When booted without the proper CPU u-codes, TSX is
disabled (so the CPU isn't vulnerable to SRDBS) but this code still
tries to access an unavailable MSR register so I get these two warning
messages:

unchecked MSR access error: RDMSR from 0x123 at rIP: 0xffffffff8203707e (update_srbds_msr+0x2e/0xa0)
Call Trace:
 <TASK>
 check_bugs+0x994/0xa6e
 ? __get_locked_pte+0x8f/0x100
 start_kernel+0x630/0x664
 secondary_startup_64_no_verify+0xd5/0xdb
 </TASK>
unchecked MSR access error: WRMSR to 0x123 (tried to write 0x0000000000000001) at rIP: 0xffffffff820370a9 (update_srbds_msr+0x59/0xa0)
Call Trace:
 <TASK>
 check_bugs+0x994/0xa6e
 ? __get_locked_pte+0x8f/0x100
 start_kernel+0x630/0x664
 secondary_startup_64_no_verify+0xd5/0xdb
 </TASK>

This patch avoids them.

 arch/x86/kernel/cpu/bugs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 6296e1ebed1d..9b14cb2ec693 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -443,14 +443,14 @@ void update_srbds_msr(void)
 	if (boot_cpu_has(X86_FEATURE_HYPERVISOR))
 		return;
 
-	if (srbds_mitigation == SRBDS_MITIGATION_UCODE_NEEDED)
+	if (srbds_mitigation == SRBDS_MITIGATION_UCODE_NEEDED ||
+	    srbds_mitigation == SRBDS_MITIGATION_TSX_OFF)
 		return;
 
 	rdmsrl(MSR_IA32_MCU_OPT_CTRL, mcu_ctrl);
 
 	switch (srbds_mitigation) {
 	case SRBDS_MITIGATION_OFF:
-	case SRBDS_MITIGATION_TSX_OFF:
 		mcu_ctrl |= RNGDS_MITG_DIS;
 		break;
 	case SRBDS_MITIGATION_FULL:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-03-31 16:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-30  8:20 [PATCH v2] x86/speculation/srbds: do not try to turn mitigation off when not supported Ricardo Cañuelo
2022-03-30 20:02 ` Borislav Petkov
2022-03-31  7:48   ` Ricardo Cañuelo
2022-03-31  8:35     ` Borislav Petkov
2022-03-31  8:46     ` Pawan Gupta
2022-03-31 13:18       ` Ricardo Cañuelo
2022-03-31 15:25         ` Borislav Petkov
2022-03-31 16:25           ` Pawan Gupta
2022-03-31  6:53 ` Pawan Gupta

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.