• Andy Lutomirski's avatar
    x86/asm/tsc: Use rdtsc_ordered() in read_tsc() instead of get_cycles() · 27c63405
    Andy Lutomirski authored
    There are two logical changes here.  First, this removes a check
    for cpu_has_tsc.  That check is unnecessary, as we don't
    register the TSC as a clocksource on systems that have no TSC.
    
    Second, it adds a barrier, thus preventing observable
    non-monotonicity.
    
    I suspect that the missing barrier was never a problem in
    practice because system calls themselves were heavy enough
    barriers to prevent user code from observing time warps due to
    speculation. (Without the corresponding barrier in the vDSO,
    however, non-monotonicity is easy to detect.)
    Signed-off-by: default avatarAndy Lutomirski <luto@kernel.org>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: kvm ML <kvm@vger.kernel.org>
    Link: http://lkml.kernel.org/r/c6ff621a053127a65b70f175443578db7a0711be.1434501121.git.luto@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    27c63405
tsc.c 31.3 KB