[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6.5 14/26] x86: Introduce alternative indirect thunks
On 04/01/18 09:40, Jan Beulich wrote: >>>> On 04.01.18 at 01:15, <andrew.cooper3@xxxxxxxxxx> wrote: >> --- a/docs/misc/xen-command-line.markdown >> +++ b/docs/misc/xen-command-line.markdown >> @@ -245,6 +245,20 @@ and not running softirqs. Reduce this if softirqs are >> not being run frequently >> enough. Setting this to a high value may cause boot failure, particularly if >> the NMI watchdog is also enabled. >> >> +### bti (x86) >> +> `= List of [ thunk=retpoline|lfence|plain ]` >> + >> +Branch Target Injection controls. By default, Xen will pick the most >> +appropriate BTI mitigations based on compiled in support, loaded microcode, >> +and hardware details. >> + >> +**WARNING: Any use of this option inhibits all heristcs. Use with extreme >> care.** > "heuristics" > >> @@ -27,7 +28,42 @@ enum ind_thunk { >> THUNK_NONE, /* Missing compiler support for thunks. */ >> >> THUNK_RETPOLINE, >> -}; >> + THUNK_LFENCE, >> + THUNK_JMP, >> +} opt_thunk __initdata = THUNK_DEFAULT; > This wants to be static. > >> @@ -48,6 +86,31 @@ void __init init_speculation_mitigations(void) >> enum ind_thunk thunk = THUNK_DEFAULT; >> >> /* >> + * Has the user specified any custom BTI mitigations? If so, follow >> their >> + * instructions exactly and disable all heuristics. >> + */ >> + if ( opt_thunk != THUNK_DEFAULT ) >> + { >> + thunk = opt_thunk; >> + } > The braces aren't really needed here. They are in later patches. > >> + else >> + { >> + /* >> + * Evaluate the safest Branch Target Injection mitigations to use. >> + * First, begin with compiler-aided mitigations. >> + */ >> + if ( IS_ENABLED(CONFIG_INDIRECT_THUNK) ) >> + { >> + /* >> + * AMD's recommended mitigation is to set lfence as being >> dispatch >> + * serialising, and to use IND_THUNK_LFENCE. >> + */ >> + if ( cpu_has_lfence_dispatch ) >> + thunk = THUNK_LFENCE; >> + } >> + } > As asked elsewhere, is the CONFIG_INDIRECT_THUNK dependency > here really meaningful for the overall effect? Surely if we can't use > thunks in the first place it doesn't matter which variant of them we > don't use? In later patches, the lack of INDIRECT_THUNK causes us to choose to use IBRS+ if available in microcode. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |