aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Shishkin <alexander.shishkin@linux.intel.com>2015-04-21 09:16:17 -0400
committerIngo Molnar <mingo@kernel.org>2015-05-27 03:17:48 -0400
commit0a487aad2dfd088bcbbe1766944280b40ff969a5 (patch)
tree595d72d907cc58f7f1baf58127ffc65e3f60e633
parent5b1dbd17c0dee679b154ce47f534677b7e0f7ad6 (diff)
perf/x86/intel/pt: Kill pt_is_running()
Initially, we were trying to guard against scenarios where somebody attaches to the system with a hardware debugger while PT is enabled from software and pt_is_running() tries to make sure we handle this better, but the truth is, there is still a race window no matter what and people with hardware debuggers should really know what they are doing anyway. In other words, there is no point in keeping this one around, and it's one RDMSR instructions fewer in the fast path. The case when PT is enabled by the BIOS at boot time is handled in the driver initialization path and doesn't use pt_is_running(). This patch gets rid of it. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: acme@infradead.org Cc: adrian.hunter@intel.com Cc: hpa@zytor.com Link: http://lkml.kernel.org/r/1429622177-22843-6-git-send-email-alexander.shishkin@linux.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel_pt.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel_pt.c b/arch/x86/kernel/cpu/perf_event_intel_pt.c
index 40ba5e4312d4..a2d407172d61 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_pt.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_pt.c
@@ -187,15 +187,6 @@ static bool pt_event_valid(struct perf_event *event)
187 * These all are cpu affine and operate on a local PT 187 * These all are cpu affine and operate on a local PT
188 */ 188 */
189 189
190static bool pt_is_running(void)
191{
192 u64 ctl;
193
194 rdmsrl(MSR_IA32_RTIT_CTL, ctl);
195
196 return !!(ctl & RTIT_CTL_TRACEEN);
197}
198
199static void pt_config(struct perf_event *event) 190static void pt_config(struct perf_event *event)
200{ 191{
201 u64 reg; 192 u64 reg;
@@ -933,7 +924,7 @@ static void pt_event_start(struct perf_event *event, int mode)
933 struct pt *pt = this_cpu_ptr(&pt_ctx); 924 struct pt *pt = this_cpu_ptr(&pt_ctx);
934 struct pt_buffer *buf = perf_get_aux(&pt->handle); 925 struct pt_buffer *buf = perf_get_aux(&pt->handle);
935 926
936 if (pt_is_running() || !buf || pt_buffer_is_full(buf, pt)) { 927 if (!buf || pt_buffer_is_full(buf, pt)) {
937 event->hw.state = PERF_HES_STOPPED; 928 event->hw.state = PERF_HES_STOPPED;
938 return; 929 return;
939 } 930 }