[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH SpectreV1+L1TF v5 4/9] spec: add l1tf-barrier



>>> On 29.01.19 at 15:43, <nmanthey@xxxxxxxxx> wrote:
> @@ -1942,6 +1942,12 @@ Irrespective of Xen's setting, the feature is 
> virtualised for HVM guests to
>  use.  By default, Xen will enable this mitigation on hardware believed to 
> be
>  vulnerable to L1TF.
>  
> +On hardware vulnerable to L1TF, the `l1tf-barrier=` option can be used to 
> force
> +or prevent Xen from protecting evaluations inside the hypervisor with a 
> barrier
> +instruction to not load potentially secret information into L1 cache.  By
> +default, Xen will enable this mitigation on hardware believed to be 
> vulnerable
> +to L1TF.

... and having SMT enabled, since aiui this is a non-issue without.

> --- a/xen/arch/x86/spec_ctrl.c
> +++ b/xen/arch/x86/spec_ctrl.c
> @@ -21,6 +21,7 @@
>  #include <xen/lib.h>
>  #include <xen/warning.h>
>  
> +#include <asm-x86/cpuid.h>

asm/cpuid.h please

> @@ -100,6 +102,7 @@ static int __init parse_spec_ctrl(const char *s)
>              opt_ibpb = false;
>              opt_ssbd = false;
>              opt_l1d_flush = 0;
> +            opt_l1tf_barrier = 0;
>          }
>          else if ( val > 0 )
>              rc = -EINVAL;

Is this really something we want "spec-ctrl=no-xen" to disable?
It would seem to me that this should be restricted to "spec-ctrl=no".

> @@ -843,6 +849,14 @@ void __init init_speculation_mitigations(void)
>          opt_l1d_flush = cpu_has_bug_l1tf && !(caps & ARCH_CAPS_SKIP_L1DFL);
>  
>      /*
> +     * By default, enable L1TF_VULN on L1TF-vulnerable hardware
> +     */

This ought to be a single line comment.

> +    if ( opt_l1tf_barrier == -1 )
> +        opt_l1tf_barrier = cpu_has_bug_l1tf;

At the very least opt_smt should be taken into account here. But
I guess this setting of the default may need to be deferred
further, until the topology of the system is known (there may
not be any hyperthreads after all).

> +    if ( cpu_has_bug_l1tf && opt_l1tf_barrier > 0)
> +        setup_force_cpu_cap(X86_FEATURE_SC_L1TF_VULN);

Why the left side of the &&?

> +    /*
>       * We do not disable HT by default on affected hardware.
>       *
>       * Firstly, if the user intends to use exclusively PV, or HVM shadow

Furthermore, as per the comment and logic here and below a
!HVM configuration ought to be safe too, unless "pv-l1tf=" was
used (in which case we defer to the admin anyway), so it's
questionable whether the whole logic should be there in the
first place in this case. This would then in particular keep all
of this out for the PV shim.

> --- a/xen/include/asm-x86/cpufeatures.h
> +++ b/xen/include/asm-x86/cpufeatures.h
> @@ -31,3 +31,4 @@ XEN_CPUFEATURE(SC_RSB_PV,       (FSCAPINTS+0)*32+18) /* RSB 
> overwrite needed for
>  XEN_CPUFEATURE(SC_RSB_HVM,      (FSCAPINTS+0)*32+19) /* RSB overwrite needed 
> for HVM */
>  XEN_CPUFEATURE(SC_MSR_IDLE,     (FSCAPINTS+0)*32+21) /* (SC_MSR_PV || 
> SC_MSR_HVM) && default_xen_spec_ctrl */
>  XEN_CPUFEATURE(XEN_LBR,         (FSCAPINTS+0)*32+22) /* Xen uses 
> MSR_DEBUGCTL.LBR */
> +XEN_CPUFEATURE(SC_L1TF_VULN,    (FSCAPINTS+0)*32+23) /* L1TF protection 
> required */

Would you mind using one of the unused slots above first?

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.