mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stephane Eranian <eranian@google.com>
To: linux-kernel@vger.kernel.org
Cc: peterz@infradead.org, mingo@elte.hu, acme@redhat.com,
	ak@linux.intel.com, zheng.z.yan@intel.com
Subject: [PATCH v2 2/8] perf/x86/uncore: add ability to customize pmu callbacks
Date: Tue, 11 Feb 2014 16:20:08 +0100	[thread overview]
Message-ID: <1392132015-14521-3-git-send-email-eranian@google.com> (raw)
In-Reply-To: <1392132015-14521-1-git-send-email-eranian@google.com>

This patch enables custom struct pmu callbacks per uncore
PMU types. This feature may be used to simplify counter
setup for certain uncore PMUs which have free running
counters for instance. It becomes possible to bypass
the event scheduling phase of the configuration.

Signed-off-by: Stephane Eranian <eranian@google.com>
---
 arch/x86/kernel/cpu/perf_event_intel_uncore.c |   25 +++++++++++++++----------
 arch/x86/kernel/cpu/perf_event_intel_uncore.h |    1 +
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
index fe4255b..e6f32b3 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -3271,16 +3271,21 @@ static int __init uncore_pmu_register(struct intel_uncore_pmu *pmu)
 {
 	int ret;
 
-	pmu->pmu = (struct pmu) {
-		.attr_groups	= pmu->type->attr_groups,
-		.task_ctx_nr	= perf_invalid_context,
-		.event_init	= uncore_pmu_event_init,
-		.add		= uncore_pmu_event_add,
-		.del		= uncore_pmu_event_del,
-		.start		= uncore_pmu_event_start,
-		.stop		= uncore_pmu_event_stop,
-		.read		= uncore_pmu_event_read,
-	};
+	if (!pmu->type->pmu) {
+		pmu->pmu = (struct pmu) {
+			.attr_groups	= pmu->type->attr_groups,
+			.task_ctx_nr	= perf_invalid_context,
+			.event_init	= uncore_pmu_event_init,
+			.add		= uncore_pmu_event_add,
+			.del		= uncore_pmu_event_del,
+			.start		= uncore_pmu_event_start,
+			.stop		= uncore_pmu_event_stop,
+			.read		= uncore_pmu_event_read,
+		};
+	} else {
+		pmu->pmu = *pmu->type->pmu;
+		pmu->pmu.attr_groups = pmu->type->attr_groups;
+	}
 
 	if (pmu->type->num_boxes == 1) {
 		if (strlen(pmu->type->name) > 0)
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
index a80ab71..77dc9a5 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
@@ -440,6 +440,7 @@ struct intel_uncore_type {
 	struct intel_uncore_ops *ops;
 	struct uncore_event_desc *event_descs;
 	const struct attribute_group *attr_groups[4];
+	struct pmu *pmu; /* for custom pmu ops */
 };
 
 #define pmu_group attr_groups[0]
-- 
1.7.9.5


  parent reply	other threads:[~2014-02-11 15:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-11 15:20 [PATCH v2 0/8] perf/x86/uncore: add support for SNB/IVB/HSW integrated memory controller PMU Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 1/8] perf/x86/uncore: fix initialization of cpumask Stephane Eranian
2014-02-21 21:12   ` [tip:perf/core] " tip-bot for Stephane Eranian
2014-02-11 15:20 ` Stephane Eranian [this message]
2014-02-21 21:12   ` [tip:perf/core] perf/x86/uncore: add ability to customize pmu callbacks tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 3/8] perf/x86/uncore: add PCI ids for SNB/IVB/HSW IMC Stephane Eranian
2014-02-21 21:13   ` [tip:perf/core] " tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 4/8] perf/x86/uncore: make hrtimer timeout configurable per box Stephane Eranian
2014-02-21 21:13   ` [tip:perf/core] " tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 5/8] perf/x86/uncore: move uncore_event_to_box() and uncore_pmu_to_box() Stephane Eranian
2014-02-21 21:13   ` [tip:perf/core] " tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 6/8] perf/x86/uncore: add SNB/IVB/HSW client uncore memory controller support Stephane Eranian
2014-02-11 16:19   ` Peter Zijlstra
2014-02-11 16:25     ` Stephane Eranian
2014-02-11 16:50       ` Peter Zijlstra
2014-02-11 18:31         ` Stephane Eranian
2014-02-11 20:34           ` Peter Zijlstra
2014-02-21 21:13   ` [tip:perf/core] perf/x86/uncore: add SNB/IVB/ HSW " tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 7/8] perf/x86/uncore: add hrtimer to SNB uncore IMC PMU Stephane Eranian
2014-02-21 21:13   ` [tip:perf/core] " tip-bot for Stephane Eranian
2014-02-11 15:20 ` [PATCH v2 8/8] perf/x86/uncore: use MiB unit for events for SNB/IVB/HSW IMC Stephane Eranian
2014-02-21 21:13   ` [tip:perf/core] perf/x86/uncore: use MiB unit for events for SNB/ IVB/HSW IMC tip-bot for Stephane Eranian

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=1392132015-14521-3-git-send-email-eranian@google.com \
    --to=eranian@google.com \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=zheng.z.yan@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome