Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753395AbbBSMNW (ORCPT ); Thu, 19 Feb 2015 07:13:22 -0500 Received: from mga03.intel.com ([134.134.136.65]:2540 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753358AbbBSMNO (ORCPT ); Thu, 19 Feb 2015 07:13:14 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,512,1418112000"; d="scan'208";a="456739563" From: Adrian Hunter To: Peter Zijlstra , Ingo Molnar Cc: Arnaldo Carvalho de Melo , linux-kernel@vger.kernel.org, David Ahern , Frederic Weisbecker , Jiri Olsa , Namhyung Kim , Paul Mackerras , Stephane Eranian , John Stultz , Thomas Gleixner , Pawel Moll , Steven Rostedt , Andi Kleen Subject: [PATCH 2/2] perf/x86: Provide TSC for PERF_SAMPLE_CLOCK_ARCH Date: Thu, 19 Feb 2015 14:11:10 +0200 Message-Id: <1424347870-8492-3-git-send-email-adrian.hunter@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1424347870-8492-1-git-send-email-adrian.hunter@intel.com> References: <1424347870-8492-1-git-send-email-adrian.hunter@intel.com> Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1681 Lines: 53 Provide TSC for PERF_SAMPLE_CLOCK_ARCH. This is needed to match perf events against hardware traces like Intel PT. Signed-off-by: Adrian Hunter --- arch/x86/include/asm/perf_event.h | 6 ++++++ arch/x86/kernel/cpu/perf_event.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h index dc0f6ed..ced9b5f 100644 --- a/arch/x86/include/asm/perf_event.h +++ b/arch/x86/include/asm/perf_event.h @@ -261,6 +261,12 @@ struct perf_guest_switch_msr { extern struct perf_guest_switch_msr *perf_guest_get_msrs(int *nr); extern void perf_get_x86_pmu_capability(struct x86_pmu_capability *cap); extern void perf_check_microcode(void); + +#ifdef CONFIG_X86_TSC +#define HAVE_PERF_SAMPLE_CLOCK_ARCH 1 +u64 perf_sample_clock_arch(void); +#endif + #else static inline struct perf_guest_switch_msr *perf_guest_get_msrs(int *nr) { diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 8271d6b..23ae9d4 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c @@ -2256,3 +2256,13 @@ void perf_get_x86_pmu_capability(struct x86_pmu_capability *cap) cap->events_mask_len = x86_pmu.events_mask_len; } EXPORT_SYMBOL_GPL(perf_get_x86_pmu_capability); + +#ifdef CONFIG_X86_TSC +u64 perf_sample_clock_arch(void) +{ + u64 tsc; + + rdtscll(tsc); + return tsc; +} +#endif -- 1.9.1 -- 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/