[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v10 08/11] x86/boot: Calculate the most appropriate BTI mitigation to use
>>> On 24.01.18 at 14:12, <andrew.cooper3@xxxxxxxxxx> wrote: > See the logic and comments in init_speculation_mitigations() for further > details. > > There are two controls for RSB overwriting, because in principle there are > cases where it might be safe to forego rsb_native (Off the top of my head, > SMEP active, no 32bit PV guests at all, no use of vmevent/paging subsystems > for HVM guests, but I make no guarantees that this list of restrictions is > exhaustive). > > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> With the exception of the Intel model specific things Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Nevetherless ... > --- > CC: Jan Beulich <JBeulich@xxxxxxxx> > CC: Asit K Mallick <asit.k.mallick@xxxxxxxxx> > CC: Jun Nakajima <jun.nakajima@xxxxxxxxx> > > TODO: Confirm Broadwell microcode details, and Atom safety WRT retpoline. > These details should not block this series. ... I agree here, and hence the ack implied by the R-b extends to this. > @@ -147,6 +237,50 @@ void __init init_speculation_mitigations(void) > else if ( thunk == THUNK_JMP ) > setup_force_cpu_cap(X86_FEATURE_IND_THUNK_JMP); > > + if ( boot_cpu_has(X86_FEATURE_IBRSB) ) > + { > + /* > + * Even if we've chosen to not have IBRS set in Xen context, we still > + * need the IBRS entry/exit logic to virtualise IBRS support for > + * guests. > + */ > + if ( ibrs ) > + setup_force_cpu_cap(X86_FEATURE_XEN_IBRS_SET); > + else > + setup_force_cpu_cap(X86_FEATURE_XEN_IBRS_CLEAR); > + > + default_bti_ist_info |= BTI_IST_WRMSR | ibrs; > + } > + > + /* > + * PV guests can poison the RSB to any virtual address from which > + * they can execute a call instruction. This is necessarily outside > + * of the Xen supervisor mappings. > + * > + * With SMEP enabled, the processor won't speculate into user mappings. > + * Therefore, in this case, we don't need to worry about poisoned entries > + * from 64bit PV guests. > + * > + * 32bit PV guest kernels run in ring 1, so use supervisor mappings. > + * If a processors speculates to 32bit PV guest kernel mappings, it is > + * speculating in 64bit supervisor mode, and can leak data. > + */ > + if ( opt_rsb_native ) > + { > + setup_force_cpu_cap(X86_FEATURE_RSB_NATIVE); > + default_bti_ist_info |= BTI_IST_RSB; > + } > + > + /* > + * HVM guests can always poison the RSB to point at Xen supervisor > + * mappings. > + */ > + if ( opt_rsb_vmexit ) > + setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT); > + > + /* (Re)init BSP state how that default_bti_ist_info has been calculated. > */ ... now that ... Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |