Commit 39226ef0 authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Thomas Gleixner

x86/speculation/mds: Add SMT warning message

MDS is vulnerable with SMT.  Make that clear with a one-time printk
whenever SMT first gets enabled.
Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarTyler Hicks <tyhicks@canonical.com>
Acked-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 7c3658b2
...@@ -673,6 +673,9 @@ static void update_indir_branch_cond(void) ...@@ -673,6 +673,9 @@ static void update_indir_branch_cond(void)
static_branch_disable(&switch_to_cond_stibp); static_branch_disable(&switch_to_cond_stibp);
} }
#undef pr_fmt
#define pr_fmt(fmt) fmt
/* Update the static key controlling the MDS CPU buffer clear in idle */ /* Update the static key controlling the MDS CPU buffer clear in idle */
static void update_mds_branch_idle(void) static void update_mds_branch_idle(void)
{ {
...@@ -693,6 +696,8 @@ static void update_mds_branch_idle(void) ...@@ -693,6 +696,8 @@ static void update_mds_branch_idle(void)
static_branch_disable(&mds_idle_clear); static_branch_disable(&mds_idle_clear);
} }
#define MDS_MSG_SMT "MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.\n"
void arch_smt_update(void) void arch_smt_update(void)
{ {
/* Enhanced IBRS implies STIBP. No update required. */ /* Enhanced IBRS implies STIBP. No update required. */
...@@ -717,6 +722,8 @@ void arch_smt_update(void) ...@@ -717,6 +722,8 @@ void arch_smt_update(void)
switch (mds_mitigation) { switch (mds_mitigation) {
case MDS_MITIGATION_FULL: case MDS_MITIGATION_FULL:
case MDS_MITIGATION_VMWERV: case MDS_MITIGATION_VMWERV:
if (sched_smt_active() && !boot_cpu_has(X86_BUG_MSBDS_ONLY))
pr_warn_once(MDS_MSG_SMT);
update_mds_branch_idle(); update_mds_branch_idle();
break; break;
case MDS_MITIGATION_OFF: case MDS_MITIGATION_OFF:
...@@ -1149,6 +1156,7 @@ static int __init l1tf_cmdline(char *str) ...@@ -1149,6 +1156,7 @@ static int __init l1tf_cmdline(char *str)
early_param("l1tf", l1tf_cmdline); early_param("l1tf", l1tf_cmdline);
#undef pr_fmt #undef pr_fmt
#define pr_fmt(fmt) fmt
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment