mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/spec-ctrl: Yet more fixes for xpti= parsing
As it currently stands, 'xpti=dom0' is indistinguishable from the default value, which means it will be overridden by ARCH_CAPABILITIES_RDCL_NO on fixed hardware. Switch opt_xpti to use -1 as a default like all our other related options, and clobber it as soon as we have a string to parse. In addition, 'xpti' alone should be interpreted in its positive boolean form, rather than resulting in a parse error. (XEN) parameter "xpti" has invalid value "", rc=-22! Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Juergen Gross <jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
a2d9a6fa1f
commit
2a3b34ec47
2 files changed
+12
-5
No files matched your search
@@ -420,8 +420,7 @@ static bool __init should_use_eager_fpu(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define OPT_XPTI_DEFAULT 0xff
|
||||
uint8_t __read_mostly opt_xpti = OPT_XPTI_DEFAULT;
|
||||
int8_t __read_mostly opt_xpti = -1;
|
||||
|
||||
static __init void xpti_init_default(uint64_t caps)
|
||||
{
|
||||
@@ -439,6 +438,14 @@ static __init int parse_xpti(const char *s)
|
||||
const char *ss;
|
||||
int val, rc = 0;
|
||||
|
||||
/* Inhibit the defaults as an explicit choice has been given. */
|
||||
if ( opt_xpti == -1 )
|
||||
opt_xpti = 0;
|
||||
|
||||
/* Interpret 'xpti' alone in its positive boolean form. */
|
||||
if ( *s == '\0' )
|
||||
opt_xpti = OPT_XPTI_DOM0 | OPT_XPTI_DOMU;
|
||||
|
||||
do {
|
||||
ss = strchr(s, ',');
|
||||
if ( !ss )
|
||||
@@ -456,7 +463,7 @@ static __init int parse_xpti(const char *s)
|
||||
|
||||
default:
|
||||
if ( !strcmp(s, "default") )
|
||||
opt_xpti = OPT_XPTI_DEFAULT;
|
||||
opt_xpti = -1;
|
||||
else if ( (val = parse_boolean("dom0", s, ss)) >= 0 )
|
||||
opt_xpti = (opt_xpti & ~OPT_XPTI_DOM0) |
|
||||
(val ? OPT_XPTI_DOM0 : 0);
|
||||
@@ -618,7 +625,7 @@ void __init init_speculation_mitigations(void)
|
||||
if ( default_xen_spec_ctrl )
|
||||
setup_force_cpu_cap(X86_FEATURE_SC_MSR_IDLE);
|
||||
|
||||
if ( opt_xpti == OPT_XPTI_DEFAULT )
|
||||
if ( opt_xpti == -1 )
|
||||
xpti_init_default(caps);
|
||||
|
||||
if ( opt_xpti == 0 )
|
||||
|
||||
@@ -34,7 +34,7 @@ extern bool bsp_delay_spec_ctrl;
|
||||
extern uint8_t default_xen_spec_ctrl;
|
||||
extern uint8_t default_spec_ctrl_flags;
|
||||
|
||||
extern uint8_t opt_xpti;
|
||||
extern int8_t opt_xpti;
|
||||
#define OPT_XPTI_DOM0 0x01
|
||||
#define OPT_XPTI_DOMU 0x02
|
||||
|
||||
|
||||