linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 03/14] drivers/perf: arm_pmu: fold init into alloc
Date: Tue, 11 Apr 2017 09:39:46 +0100	[thread overview]
Message-ID: <1491899997-32210-4-git-send-email-mark.rutland@arm.com> (raw)
In-Reply-To: <1491899997-32210-1-git-send-email-mark.rutland@arm.com>

Given we always want to initialise common fields on an allocated PMU,
this patch folds this common initialisation into armpmu_alloc(). This
will make it simpler to reuse this code for an ACPI-specific probe path.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Jeremy Linton <jeremy.linton@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
---
 drivers/perf/arm_pmu.c | 52 +++++++++++++++++++++++---------------------------
 1 file changed, 24 insertions(+), 28 deletions(-)

diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index 71a825d..1cb8b1a 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -494,24 +494,6 @@ static ssize_t armpmu_cpumask_show(struct device *dev,
 	.attrs = armpmu_common_attrs,
 };
 
-static void armpmu_init(struct arm_pmu *armpmu)
-{
-	armpmu->pmu = (struct pmu) {
-		.pmu_enable	= armpmu_enable,
-		.pmu_disable	= armpmu_disable,
-		.event_init	= armpmu_event_init,
-		.add		= armpmu_add,
-		.del		= armpmu_del,
-		.start		= armpmu_start,
-		.stop		= armpmu_stop,
-		.read		= armpmu_read,
-		.filter_match	= armpmu_filter_match,
-		.attr_groups	= armpmu->attr_groups,
-	};
-	armpmu->attr_groups[ARMPMU_ATTR_GROUP_COMMON] =
-		&armpmu_common_attr_group;
-}
-
 /* Set at runtime when we know what CPU type we are. */
 static struct arm_pmu *__oprofile_cpu_pmu;
 
@@ -766,14 +748,6 @@ static int cpu_pmu_init(struct arm_pmu *cpu_pmu)
 	if (err)
 		goto out_unregister;
 
-	/*
-	 * This is a CPU PMU potentially in a heterogeneous configuration (e.g.
-	 * big.LITTLE). This is not an uncore PMU, and we have taken ctx
-	 * sharing into account (e.g. with our pmu::filter_match callback and
-	 * pmu::event_init group validation).
-	 */
-	cpu_pmu->pmu.capabilities |= PERF_PMU_CAP_HETEROGENEOUS_CPUS;
-
 	return 0;
 
 out_unregister:
@@ -962,6 +936,30 @@ static struct arm_pmu *armpmu_alloc(void)
 		goto out_free_pmu;
 	}
 
+	pmu->pmu = (struct pmu) {
+		.pmu_enable	= armpmu_enable,
+		.pmu_disable	= armpmu_disable,
+		.event_init	= armpmu_event_init,
+		.add		= armpmu_add,
+		.del		= armpmu_del,
+		.start		= armpmu_start,
+		.stop		= armpmu_stop,
+		.read		= armpmu_read,
+		.filter_match	= armpmu_filter_match,
+		.attr_groups	= pmu->attr_groups,
+		/*
+		 * This is a CPU PMU potentially in a heterogeneous
+		 * configuration (e.g. big.LITTLE). This is not an uncore PMU,
+		 * and we have taken ctx sharing into account (e.g. with our
+		 * pmu::filter_match callback and pmu::event_init group
+		 * validation).
+		 */
+		.capabilities	= PERF_PMU_CAP_HETEROGENEOUS_CPUS,
+	};
+
+	pmu->attr_groups[ARMPMU_ATTR_GROUP_COMMON] =
+		&armpmu_common_attr_group;
+
 	for_each_possible_cpu(cpu) {
 		struct pmu_hw_events *events;
 
@@ -998,8 +996,6 @@ int arm_pmu_device_probe(struct platform_device *pdev,
 	if (!pmu)
 		return -ENOMEM;
 
-	armpmu_init(pmu);
-
 	pmu->plat_device = pdev;
 
 	ret = pmu_parse_irqs(pmu);
-- 
1.9.1

  parent reply	other threads:[~2017-04-11  8:39 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-11  8:39 [PATCHv3 00/14] arm_pmu: ACPI support Mark Rutland
2017-04-11  8:39 ` [PATCHv3 01/14] drivers/perf: arm_pmu: remove pointless PMU disabling Mark Rutland
2017-04-11  8:39 ` [PATCHv3 02/14] drivers/perf: arm_pmu: define armpmu_init_fn Mark Rutland
2017-04-11  8:39 ` Mark Rutland [this message]
2017-04-11  8:39 ` [PATCHv3 04/14] drivers/perf: arm_pmu: factor out pmu registration Mark Rutland
2017-04-11  8:39 ` [PATCHv3 05/14] drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() Mark Rutland
2017-04-11  8:39 ` [PATCHv3 06/14] drivers/perf: arm_pmu: handle no platform_device Mark Rutland
2017-04-11  8:39 ` [PATCHv3 07/14] drivers/perf: arm_pmu: rename irq request/free functions Mark Rutland
2017-04-11  8:39 ` [PATCHv3 08/14] drivers/perf: arm_pmu: split cpu-local irq request/free Mark Rutland
2017-04-18 17:25   ` Geert Uytterhoeven
2017-04-18 18:24     ` Geert Uytterhoeven
2017-04-18 18:33     ` Mark Rutland
2017-04-18 18:57       ` Geert Uytterhoeven
2017-04-20 19:10         ` Mark Rutland
2017-04-11  8:39 ` [PATCHv3 09/14] drivers/perf: arm_pmu: move irq request/free into probe Mark Rutland
2017-04-11  8:39 ` [PATCHv3 10/14] drivers/perf: arm_pmu: split out platform device probe logic Mark Rutland
2017-04-11  8:39 ` [PATCHv3 11/14] arm64: add function to get a cpu's MADT GICC table Mark Rutland
2017-04-11  8:39 ` [PATCHv3 12/14] drivers/perf: arm_pmu: add ACPI framework Mark Rutland
2017-04-11  8:39 ` [PATCHv3 13/14] arm64: pmuv3: handle !PMUv3 when probing Mark Rutland
2017-04-13 14:06   ` Jayachandran C.
2017-04-13 15:36     ` Mark Rutland
2017-04-11  8:39 ` [PATCHv3 14/14] arm64: pmuv3: use arm_pmu ACPI framework Mark Rutland
2017-04-11 15:11 ` [PATCHv3 00/14] arm_pmu: ACPI support Anurup M
2017-04-11 15:45 ` Will Deacon
2017-04-12  6:48 ` Hanjun Guo

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=1491899997-32210-4-git-send-email-mark.rutland@arm.com \
    --to=mark.rutland@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).