Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 595dc54a authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-vdso-for-linus' of...

Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: move rdtsc_barrier() into the TSC vread method
parents 9b29e822 7d96fd41
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -710,7 +710,16 @@ static cycle_t read_tsc(struct clocksource *cs)
#ifdef CONFIG_X86_64
static cycle_t __vsyscall_fn vread_tsc(void)
{
	cycle_t ret = (cycle_t)vget_cycles();
	cycle_t ret;

	/*
	 * Surround the RDTSC by barriers, to make sure it's not
	 * speculated to outside the seqlock critical section and
	 * does not cause time warps:
	 */
	rdtsc_barrier();
	ret = (cycle_t)vget_cycles();
	rdtsc_barrier();

	return ret >= __vsyscall_gtod_data.clock.cycle_last ?
		ret : __vsyscall_gtod_data.clock.cycle_last;
+0 −8
Original line number Diff line number Diff line
@@ -132,15 +132,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv)
			return;
		}

		/*
		 * Surround the RDTSC by barriers, to make sure it's not
		 * speculated to outside the seqlock critical section and
		 * does not cause time warps:
		 */
		rdtsc_barrier();
		now = vread();
		rdtsc_barrier();

		base = __vsyscall_gtod_data.clock.cycle_last;
		mask = __vsyscall_gtod_data.clock.mask;
		mult = __vsyscall_gtod_data.clock.mult;