From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: mingo@elte.hu
Cc: William Cohen <wcohen@redhat.com>,
linux-kernel@vger.kernel.org,
Stephane Eranian <eranian@google.com>,
Arun Sharma <asharma@fb.com>, Vince Weaver <vince@deater.net>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [RFC][PATCH 3/6] perf, x86: Implement userspace RDPMC
Date: Mon, 21 Nov 2011 15:51:17 +0100 [thread overview]
Message-ID: <20111121145337.626579222@chello.nl> (raw)
In-Reply-To: 20111121145114.049265181@chello.nl
[-- Attachment #1: perf-rdpmc-2.patch --]
[-- Type: text/plain, Size: 1344 bytes --]
Implement a correct pmu::event_idx for the x86 counter index rules and
set CR4.PCE on CPU_STARTING.
Cc: Stephane Eranian <eranian@google.com>
Cc: Arun Sharma <asharma@fb.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
arch/x86/kernel/cpu/perf_event.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
Index: linux-2.6/arch/x86/kernel/cpu/perf_event.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/perf_event.c
+++ linux-2.6/arch/x86/kernel/cpu/perf_event.c
@@ -1211,6 +1211,7 @@ x86_pmu_notifier(struct notifier_block *
break;
case CPU_STARTING:
+ set_in_cr4(X86_CR4_PCE);
if (x86_pmu.cpu_starting)
x86_pmu.cpu_starting(cpu);
break;
@@ -1536,6 +1537,18 @@ static int x86_pmu_event_init(struct per
return err;
}
+static int x86_pmu_event_idx(struct perf_event *event)
+{
+ int idx = event->hw.idx;
+
+ if (x86_pmu.num_counters_fixed && idx >= X86_PMC_IDX_FIXED) {
+ idx -= X86_PMC_IDX_FIXED;
+ idx |= 1 << 30;
+ }
+
+ return idx + 1;
+}
+
static struct pmu pmu = {
.pmu_enable = x86_pmu_enable,
.pmu_disable = x86_pmu_disable,
@@ -1551,6 +1564,8 @@ static struct pmu pmu = {
.start_txn = x86_pmu_start_txn,
.cancel_txn = x86_pmu_cancel_txn,
.commit_txn = x86_pmu_commit_txn,
+
+ .event_idx = x86_pmu_event_idx,
};
/*
next prev parent reply other threads:[~2011-11-21 14:56 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-21 14:51 [RFC][PATCH 0/6] perf: x86 RDPMC and RDTSC support Peter Zijlstra
2011-11-21 14:51 ` [RFC][PATCH 1/6] perf: Update the mmap control page on mmap() Peter Zijlstra
2011-11-21 14:51 ` [RFC][PATCH 2/6] perf, arch: Rework perf_event_index() Peter Zijlstra
2011-11-21 16:22 ` Eric B Munson
2011-11-21 17:23 ` Will Deacon
2011-11-21 19:18 ` Peter Zijlstra
2011-11-21 20:31 ` Will Deacon
2011-11-21 20:35 ` Peter Zijlstra
2011-11-21 22:43 ` Will Deacon
2011-11-22 11:26 ` Peter Zijlstra
2011-11-22 11:47 ` Will Deacon
2011-11-22 11:49 ` Oleg Strikov
2011-11-22 11:52 ` Will Deacon
2011-11-22 11:56 ` Oleg Strikov
2011-11-22 12:00 ` Oleg Strikov
2011-11-22 12:14 ` Will Deacon
2011-11-22 12:25 ` Oleg Strikov
2011-11-22 11:51 ` Peter Zijlstra
2011-11-22 11:54 ` Will Deacon
2011-11-22 11:48 ` Oleg Strikov
2011-11-21 14:51 ` Peter Zijlstra [this message]
2011-11-21 14:51 ` [RFC][PATCH 4/6] perf, x86: Provide means of disabling userspace RDPMC Peter Zijlstra
2011-11-21 14:51 ` [RFC][PATCH 5/6] perf: Extend the mmap control page with time (TSC) fields Peter Zijlstra
2011-12-28 17:55 ` Stephane Eranian
2011-11-21 14:51 ` [RFC][PATCH 6/6] perf, tools: X86 RDPMC, RDTSC test Peter Zijlstra
2011-11-21 15:29 ` Stephane Eranian
2011-11-21 15:37 ` Peter Zijlstra
2011-11-21 16:59 ` Peter Zijlstra
2011-11-21 17:42 ` Stephane Eranian
2011-11-21 15:02 ` [RFC][PATCH 0/6] perf: x86 RDPMC and RDTSC support Vince Weaver
2011-11-21 16:05 ` William Cohen
2011-11-21 16:08 ` William Cohen
2011-12-02 19:26 ` Arun Sharma
2011-12-02 22:22 ` Stephane Eranian
2011-12-05 20:16 ` Arun Sharma
2011-12-05 23:17 ` Arun Sharma
2011-12-06 1:38 ` Stephane Eranian
2011-12-06 9:42 ` Peter Zijlstra
2011-12-06 21:53 ` Arun Sharma
2011-12-16 22:36 ` Vince Weaver
2011-12-21 12:58 ` Peter Zijlstra
2011-12-21 13:15 ` Ingo Molnar
2011-12-23 20:12 ` Vince Weaver
2011-12-21 15:04 ` Vince Weaver
2011-12-21 21:32 ` Vince Weaver
2011-12-21 21:41 ` Peter Zijlstra
2011-12-21 22:19 ` Vince Weaver
2011-12-21 22:32 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111121145337.626579222@chello.nl \
--to=a.p.zijlstra@chello.nl \
--cc=asharma@fb.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=vince@deater.net \
--cc=wcohen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.