> And I had a bit of a WTF moment, as in "WTF does
> RDTSC have to do with a speculation protection barrier".
> Does it actually make sense?

It doesn't. There was too much s/lfence/barrier_nospec/ apparently.

> +     asm volatile(ALTERNATIVE_3("rdtsc",
> +                                "mfence; rdtsc", X86_FEATURE_MFENCE_RDTSC,
> +                                "lfence; rdtsc", X86_FEATURE_LFENCE_RDTSC,
> +                                "rdtscp", X86_FEATURE_RDTSCP)
> +                     : EAX_EDX_RET(val, low, high)
> +                     /* RDTSCP clobbers ECX with MSR_TSC_AUX. */
> +                     :: "ecx");

I have a question: does alternatives ordering matter? CPU can have
both features.

And other code in this file uses "c" for clobber.

Reply via email to