diff mbox

[PATCHv2] drivers/perf: kill armpmu_register

Message ID 1446035537-12854-1-git-send-email-mark.rutland@arm.com
State Accepted
Commit b916b785af99088916a122cb37de1bda3fa7f70e
Headers show

Commit Message

Mark Rutland Oct. 28, 2015, 12:32 p.m. UTC
Nothing outside of drivers/perf/arm_pmu.c should call armpmu_register
any more, so it no longer needs to be in include/linux/perf/arm_pmu.h.
Additionally, by folding it in to arm_pmu_device_probe we can allow
drivers to override struct pmu fields without getting blatted by the
armpmu code.

This patch folds armpmu_register into arm_pmu_device_probe. The logging
to the console is moved to after the PMU is successfully registered with
the core perf code.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>

Suggested-by: Will Deacon <will.deacon@arm.com>
Cc: Drew Richardson <drew.richardson@arm.com>
Cc: Pawel Moll <pawel.moll@arm.com>
---
 drivers/perf/arm_pmu.c       | 15 ++++++---------
 include/linux/perf/arm_pmu.h |  2 --
 2 files changed, 6 insertions(+), 11 deletions(-)

Since v1 [1]
* Call armpmu_init before the PMU init_fn

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/378064.html

-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Comments

Drew Richardson Oct. 28, 2015, 2:45 p.m. UTC | #1
On Wed, Oct 28, 2015 at 12:32:17PM +0000, Mark Rutland wrote:
> Nothing outside of drivers/perf/arm_pmu.c should call armpmu_register

> any more, so it no longer needs to be in include/linux/perf/arm_pmu.h.

> Additionally, by folding it in to arm_pmu_device_probe we can allow

> drivers to override struct pmu fields without getting blatted by the

> armpmu code.

> 

> This patch folds armpmu_register into arm_pmu_device_probe. The logging

> to the console is moved to after the PMU is successfully registered with

> the core perf code.

> 

> Signed-off-by: Mark Rutland <mark.rutland@arm.com>

> Suggested-by: Will Deacon <will.deacon@arm.com>

> Cc: Drew Richardson <drew.richardson@arm.com>

> Cc: Pawel Moll <pawel.moll@arm.com>

> ---

>  drivers/perf/arm_pmu.c       | 15 ++++++---------

>  include/linux/perf/arm_pmu.h |  2 --

>  2 files changed, 6 insertions(+), 11 deletions(-)

> 

> Since v1 [1]

> * Call armpmu_init before the PMU init_fn

> 

> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/378064.html

> 

> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c

> index f346960..6186882 100644

> --- a/drivers/perf/arm_pmu.c

> +++ b/drivers/perf/arm_pmu.c

> @@ -583,14 +583,6 @@ static void armpmu_init(struct arm_pmu *armpmu)

>  	};

>  }

>  

> -int armpmu_register(struct arm_pmu *armpmu, int type)

> -{

> -	armpmu_init(armpmu);

> -	pr_info("enabled with %s PMU driver, %d counters available\n",

> -			armpmu->name, armpmu->num_events);

> -	return perf_pmu_register(&armpmu->pmu, armpmu->name, type);

> -}

> -

>  /* Set at runtime when we know what CPU type we are. */

>  static struct arm_pmu *__oprofile_cpu_pmu;

>  

> @@ -913,6 +905,8 @@ int arm_pmu_device_probe(struct platform_device *pdev,

>  		return -ENOMEM;

>  	}

>  

> +	armpmu_init(pmu);

> +

>  	if (!__oprofile_cpu_pmu)

>  		__oprofile_cpu_pmu = pmu;

>  

> @@ -938,10 +932,13 @@ int arm_pmu_device_probe(struct platform_device *pdev,

>  	if (ret)

>  		goto out_free;

>  

> -	ret = armpmu_register(pmu, -1);

> +	ret = perf_pmu_register(&pmu->pmu, pmu->name, -1);

>  	if (ret)

>  		goto out_destroy;

>  

> +	pr_info("enabled with %s PMU driver, %d counters available\n",

> +			pmu->name, pmu->num_events);

> +

>  	return 0;

>  

>  out_destroy:

> diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h

> index bfa673b..83b5e34 100644

> --- a/include/linux/perf/arm_pmu.h

> +++ b/include/linux/perf/arm_pmu.h

> @@ -111,8 +111,6 @@ struct arm_pmu {

>  

>  #define to_arm_pmu(p) (container_of(p, struct arm_pmu, pmu))

>  

> -int armpmu_register(struct arm_pmu *armpmu, int type);

> -

>  u64 armpmu_event_update(struct perf_event *event);

>  

>  int armpmu_event_set_period(struct perf_event *event);

> -- 

> 1.9.1

> 


This works great and I no longer need to copy attr_groups in
armpmu_init. Thank you Mark.

Drew

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox

Patch

diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index f346960..6186882 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -583,14 +583,6 @@  static void armpmu_init(struct arm_pmu *armpmu)
 	};
 }
 
-int armpmu_register(struct arm_pmu *armpmu, int type)
-{
-	armpmu_init(armpmu);
-	pr_info("enabled with %s PMU driver, %d counters available\n",
-			armpmu->name, armpmu->num_events);
-	return perf_pmu_register(&armpmu->pmu, armpmu->name, type);
-}
-
 /* Set at runtime when we know what CPU type we are. */
 static struct arm_pmu *__oprofile_cpu_pmu;
 
@@ -913,6 +905,8 @@  int arm_pmu_device_probe(struct platform_device *pdev,
 		return -ENOMEM;
 	}
 
+	armpmu_init(pmu);
+
 	if (!__oprofile_cpu_pmu)
 		__oprofile_cpu_pmu = pmu;
 
@@ -938,10 +932,13 @@  int arm_pmu_device_probe(struct platform_device *pdev,
 	if (ret)
 		goto out_free;
 
-	ret = armpmu_register(pmu, -1);
+	ret = perf_pmu_register(&pmu->pmu, pmu->name, -1);
 	if (ret)
 		goto out_destroy;
 
+	pr_info("enabled with %s PMU driver, %d counters available\n",
+			pmu->name, pmu->num_events);
+
 	return 0;
 
 out_destroy:
diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
index bfa673b..83b5e34 100644
--- a/include/linux/perf/arm_pmu.h
+++ b/include/linux/perf/arm_pmu.h
@@ -111,8 +111,6 @@  struct arm_pmu {
 
 #define to_arm_pmu(p) (container_of(p, struct arm_pmu, pmu))
 
-int armpmu_register(struct arm_pmu *armpmu, int type);
-
 u64 armpmu_event_update(struct perf_event *event);
 
 int armpmu_event_set_period(struct perf_event *event);