Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1164459
| From | Andy Lutomirski <luto@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 17/17] x86/tsc: In read_tsc, use rdtsc_ordered() instead of get_cycles() |
| Date | 2015-06-13 01:50 +0200 |
| Message-ID | <pAGRZ-44S-51@gated-at.bofh.it> (permalink) |
| References | <pAGRX-44S-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
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: Andy Lutomirski <luto@kernel.org>
---
arch/x86/kernel/tsc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 5eb4d91ce9db..c3b6c04c5bf7 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -961,7 +961,7 @@ static struct clocksource clocksource_tsc;
*/
static cycle_t read_tsc(struct clocksource *cs)
{
- return (cycle_t)get_cycles();
+ return (cycle_t)rdtsc_ordered();
}
/*
--
2.4.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/17] x86/tsc: Clean up rdtsc helpers Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 13/17] x86/tsc: Rename native_read_tsc() to rdtsc_unordered() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 16/17] x86/tsc: Use rdtsc_ordered() in check_tsc_warp() and drop extra barriers Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 04/17] x86/tsc: Remove the rdtscp and rdtscpll macros Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 02/17] x86/msr/kvm: Remove vget_cycles() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 14/17] x86/tsc: Move rdtsc_barrier() and rename it to barrier_before_rdtsc() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 15/17] x86: Add rdtsc_ordered() and use it in trivial call sites Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 10/17] input/joystick/analog: Switch from rdtscl() to native_read_tsc() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 07/17] x86/cpu/amd: Use the full 64-bit TSC to detect the 2.6.2 bug Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 11/17] drivers/input/gameport: Replace rdtscl() with native_read_tsc() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 17/17] x86/tsc: In read_tsc, use rdtsc_ordered() instead of get_cycles() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 09/17] staging/lirc_serial: Remove TSC-based timing Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 16/17] x86/tsc: Use rdtsc_unordered() in check_tsc_warp() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 12/17] x86/tsc: Remove rdtscl() Andy Lutomirski <luto@kernel.org> - 2015-06-13 01:50 +0200 [PATCH 03/17] x86/tsc: Replace rdtscll with native_read_tsc Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 01/17] x86/tsc: Inline native_read_tsc and remove __native_read_tsc Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 08/17] baycom_epp: Replace rdtscl() with native_read_tsc() Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 03/17] x86/tsc/paravirt: Remove the read_tsc and read_tscp paravirt hooks Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 05/17] x86/tsc: Remove the rdtscp and rdtscpll macros Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 06/17] x86/tsc: Use the full 64-bit tsc in tsc_delay Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 04/17] x86/tsc: Replace rdtscll with native_read_tsc Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200 [PATCH 05/17] x86/tsc/paravirt: Remove the read_tsc and read_tscp paravirt hooks Andy Lutomirski <luto@kernel.org> - 2015-06-13 02:00 +0200
csiph-web