|
@@ -263,6 +263,13 @@ retpoline_auto:
|
|
|
setup_force_cpu_cap(X86_FEATURE_RSB_CTXSW);
|
|
|
pr_info("Filling RSB on context switch\n");
|
|
|
}
|
|
|
+
|
|
|
+ /* Initialize Indirect Branch Prediction Barrier if supported */
|
|
|
+ if (boot_cpu_has(X86_FEATURE_SPEC_CTRL) ||
|
|
|
+ boot_cpu_has(X86_FEATURE_AMD_PRED_CMD)) {
|
|
|
+ setup_force_cpu_cap(X86_FEATURE_IBPB);
|
|
|
+ pr_info("Enabling Indirect Branch Prediction Barrier\n");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#undef pr_fmt
|
|
@@ -292,7 +299,8 @@ ssize_t cpu_show_spectre_v2(struct device *dev,
|
|
|
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
|
|
|
return sprintf(buf, "Not affected\n");
|
|
|
|
|
|
- return sprintf(buf, "%s%s\n", spectre_v2_strings[spectre_v2_enabled],
|
|
|
+ return sprintf(buf, "%s%s%s\n", spectre_v2_strings[spectre_v2_enabled],
|
|
|
+ boot_cpu_has(X86_FEATURE_IBPB) ? ", IPBP" : "",
|
|
|
spectre_v2_bad_module ? " - vulnerable module loaded" : "");
|
|
|
}
|
|
|
#endif
|