mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/spec-ctrl: Use a taint for CET without MSR_SPEC_CTRL
Reword the comment for 'S' to include an incompatible set of features on the same core. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> (cherry picked from commit3f63f45104) Also minimal fragments from: c/s0bf9efb9ee("xen/arm: Sanitize cpuinfo ID registers fields") to introduce TAINT_CPU_OUT_OF_SPEC.
This commit is contained in:
1 parent
18e759cb87
commit
efc4bdd2c9
3 files changed
+8
-2
No files matched your search
@@ -1112,7 +1112,10 @@ void __init init_speculation_mitigations(void)
|
||||
if ( read_cr4() & X86_CR4_CET )
|
||||
{
|
||||
if ( !has_spec_ctrl )
|
||||
{
|
||||
printk(XENLOG_WARNING "?!? CET active, but no MSR_SPEC_CTRL?\n");
|
||||
add_taint(TAINT_CPU_OUT_OF_SPEC);
|
||||
}
|
||||
else if ( opt_ibrs == -1 )
|
||||
opt_ibrs = ibrs = true;
|
||||
|
||||
|
||||
+4
-2
@@ -338,6 +338,7 @@ unsigned int tainted;
|
||||
* 'E' - An error (e.g. a machine check exceptions) has been injected.
|
||||
* 'H' - HVM forced emulation prefix is permitted.
|
||||
* 'M' - Machine had a machine check experience.
|
||||
* 'S' - Out of spec CPU (Incompatible features on one or more cores).
|
||||
*
|
||||
* The string is overwritten by the next call to print_taint().
|
||||
*/
|
||||
@@ -345,11 +346,12 @@ char *print_tainted(char *str)
|
||||
{
|
||||
if ( tainted )
|
||||
{
|
||||
snprintf(str, TAINT_STRING_MAX_LEN, "Tainted: %c%c%c%c",
|
||||
snprintf(str, TAINT_STRING_MAX_LEN, "Tainted: %c%c%c%c%c",
|
||||
tainted & TAINT_MACHINE_CHECK ? 'M' : ' ',
|
||||
tainted & TAINT_SYNC_CONSOLE ? 'C' : ' ',
|
||||
tainted & TAINT_ERROR_INJECT ? 'E' : ' ',
|
||||
tainted & TAINT_HVM_FEP ? 'H' : ' ');
|
||||
tainted & TAINT_HVM_FEP ? 'H' : ' ',
|
||||
tainted & TAINT_CPU_OUT_OF_SPEC ? 'S' : ' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -183,6 +183,7 @@ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
|
||||
#define TAINT_MACHINE_CHECK (1u << 1)
|
||||
#define TAINT_ERROR_INJECT (1u << 2)
|
||||
#define TAINT_HVM_FEP (1u << 3)
|
||||
#define TAINT_CPU_OUT_OF_SPEC (1u << 5)
|
||||
extern unsigned int tainted;
|
||||
#define TAINT_STRING_MAX_LEN 20
|
||||
extern char *print_tainted(char *str);
|
||||
|
||||