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

Re: [Xen-devel] [PATCH SpectreV1+L1TF v4 01/11] is_control_domain: block speculation



>>> On 23.01.19 at 12:51, <nmanthey@xxxxxxxxx> wrote:
> --- a/xen/include/xen/nospec.h
> +++ b/xen/include/xen/nospec.h
> @@ -58,6 +58,21 @@ static inline unsigned long 
> array_index_mask_nospec(unsigned long index,
>      (typeof(_i)) (_i & _mask);                                          \
>  })
>  
> +/*
> + * allow to insert a read memory barrier into conditionals
> + */
> +#ifdef CONFIG_X86
> +static inline bool lfence_true(void) { rmb(); return true; }
> +#else
> +static inline bool lfence_true(void) { return true; }
> +#endif
> +
> +/*
> + * protect evaluation of conditional with respect to speculation
> + */
> +#define evaluate_nospec(condition)                                      \
> +    (((condition) && lfence_true()) || !lfence_true())

It may be just me, but I think

#define evaluate_nospec(condition)                                      \
    ((condition) ? lfence_true() : !lfence_true())

would better express the two-way nature of this.

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®.