|author||Mathieu Desnoyers <email@example.com>||2011-03-16 19:04:18 -0400|
|committer||Mathieu Desnoyers <firstname.lastname@example.org>||2011-03-16 19:04:18 -0400|
LTTng - TSC synchronicity test Test TSC synchronization across CPUs. Architecture independant and can therefore be used on various architectures. Aims at testing the TSC synchronization on a running system (not only at early boot), with minimal impact on interrupt latency. I've written this code before x86 tsc_sync.c existed and given it worked well for my needs, I never switched to tsc_sync.c. Although it has the same goal, it does it a bit differently : tsc_sync looks at the cycle counters on two CPUs to see if one compared to the other are going backward when read in loop. The LTTng code synchronizes both cores with a counter used as a memory barrier and then reads the two TSCs at a delta equal to the cache line exchange. Instruction and data caches are primed. This test is repeated in loops to insure we deal with MCE, NMIs which could skew the results. The problem I see with tsc_sync.c is that is one of the two CPUs is delayed by an interrupt handler (for way too long) while the other CPU is doing its check_tsc_warp() execution, and if the CPU with the lowest TSC values runs first, this code will fail to detect unsynchronized CPUs. This sync test code does not have this problem. A following patch replaces the x86 tsc_sync.c code by this architecture independant code. This code also adds the kernel parameter force_tsc_sync=1 which forces resynchronization of CPU TSCs when a CPU is hotplugged. Signed-off-by: Mathieu Desnoyers <email@example.com> CC: Ingo Molnar <firstname.lastname@example.org> CC: Jan Kiszka <email@example.com> CC: Linus Torvalds <firstname.lastname@example.org> CC: Andrew Morton <email@example.com> CC: Peter Zijlstra <firstname.lastname@example.org> CC: Thomas Gleixner <email@example.com> CC: Steven Rostedt <firstname.lastname@example.org>
Diffstat (limited to 'Documentation')
1 files changed, 4 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index f4a04c0c7ed..d46f541baf8 100644
@@ -794,6 +794,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
that can be changed at run time by the
set_graph_function file in the debugfs tracing directory.
+ Force TSC resynchronization when SMP CPUs go online.
+ See also idle=poll and disable frequency scaling.
[HW,JOY] Multisystem joystick and NES/SNES/PSX pad
support via parallel port (up to 5 devices per port)