mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event
@ 2010-05-10  9:27 Lin Ming
  2010-05-10  9:38 ` Russell King
  2010-05-10 10:00 ` Lin Ming
  0 siblings, 2 replies; 4+ messages in thread
From: Lin Ming @ 2010-05-10  9:27 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar
  Cc: Frederic Weisbecker, eranian, Gary.Mohr@Bull.com, Corey Ashford,
	arjan, Zhang, Yanmin, Paul Mackerras, David S. Miller,
	Russell King, Paul Mundt, lkml

perf: arm, convert to new API pmu->init_event

Signed-off-by: Lin Ming <ming.m.lin@intel.com>
---
 arch/arm/kernel/perf_event.c |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index 8400ddf..565f13a 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -270,13 +270,6 @@ out:
 	return err;
 }
 
-static struct pmu pmu = {
-	.enable	    = armpmu_enable,
-	.disable    = armpmu_disable,
-	.unthrottle = armpmu_unthrottle,
-	.read	    = armpmu_read,
-};
-
 static int
 validate_event(struct cpu_hw_events *cpuc,
 	       struct perf_event *event)
@@ -446,20 +439,19 @@ __hw_perf_event_init(struct perf_event *event)
 	return err;
 }
 
-struct pmu *
-hw_perf_event_init(struct perf_event *event)
+static int armpmu_init_event(struct perf_event *event)
 {
 	int err = 0;
 
 	if (!armpmu)
-		return ERR_PTR(-ENODEV);
+		return -ENODEV;
 
 	event->destroy = hw_perf_event_destroy;
 
 	if (!atomic_inc_not_zero(&active_events)) {
 		if (atomic_read(&active_events) > perf_max_events) {
 			atomic_dec(&active_events);
-			return ERR_PTR(-ENOSPC);
+			return -ENOSPC;
 		}
 
 		mutex_lock(&pmu_reserve_mutex);
@@ -473,15 +465,23 @@ hw_perf_event_init(struct perf_event *event)
 	}
 
 	if (err)
-		return ERR_PTR(err);
+		return err;
 
 	err = __hw_perf_event_init(event);
 	if (err)
 		hw_perf_event_destroy(event);
 
-	return err ? ERR_PTR(err) : &pmu;
+	return err;
 }
 
+static struct pmu pmu = {
+	.enable	    = armpmu_enable,
+	.disable    = armpmu_disable,
+	.unthrottle = armpmu_unthrottle,
+	.read	    = armpmu_read,
+	.init_event  = armpmu_init_event,
+};
+
 void
 hw_perf_enable(void)
 {
@@ -2138,6 +2138,8 @@ init_hw_perf_events(void)
 		pr_info("enabled with %s PMU driver, %d counters available\n",
 			armpmu->name, armpmu->num_events);
 
+	perf_event_register_pmu(&pmu);
+
 	return 0;
 }
 arch_initcall(init_hw_perf_events);



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event
  2010-05-10  9:27 [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event Lin Ming
@ 2010-05-10  9:38 ` Russell King
  2010-05-10 10:00 ` Lin Ming
  1 sibling, 0 replies; 4+ messages in thread
From: Russell King @ 2010-05-10  9:38 UTC (permalink / raw)
  To: Lin Ming
  Cc: Peter Zijlstra, Ingo Molnar, Frederic Weisbecker, eranian,
	Gary.Mohr@Bull.com, Corey Ashford, arjan, Zhang, Yanmin,
	Paul Mackerras, David S. Miller, Paul Mundt, lkml

On Mon, May 10, 2010 at 05:27:52PM +0800, Lin Ming wrote:
> perf: arm, convert to new API pmu->init_event

Unfortunately, this seems to clash with a rework of the ARM PMU/oprofile
code.  You also really need to copy the guys doing this work, eg the
authors of arch/arm/kernel/perf_event.c - Will Deacon.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event
  2010-05-10  9:27 [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event Lin Ming
  2010-05-10  9:38 ` Russell King
@ 2010-05-10 10:00 ` Lin Ming
  2010-05-10 20:01   ` Will Deacon
  1 sibling, 1 reply; 4+ messages in thread
From: Lin Ming @ 2010-05-10 10:00 UTC (permalink / raw)
  To: Peter Zijlstra, Will Deacon
  Cc: Ingo Molnar, Frederic Weisbecker, eranian, Gary.Mohr@Bull.com,
	Corey Ashford, arjan, Zhang, Yanmin, Paul Mackerras,
	David S. Miller, Russell King, Paul Mundt, lkml

On Mon, 2010-05-10 at 17:38 +0800, Russell King wrote:
> Unfortunately, this seems to clash with a rework of the ARM PMU/oprofile
> code.  You also really need to copy the guys doing this work, eg the
> authors of arch/arm/kernel/perf_event.c - Will Deacon.

(Add Will Deacon)

I'll check the rework of the ARM PMU/oprofile code.

Thanks.

On Mon, 2010-05-10 at 17:27 +0800, Lin Ming wrote:
> perf: arm, convert to new API pmu->init_event
> 
> Signed-off-by: Lin Ming <ming.m.lin@intel.com>
> ---
>  arch/arm/kernel/perf_event.c |   28 +++++++++++++++-------------
>  1 files changed, 15 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
> index 8400ddf..565f13a 100644
> --- a/arch/arm/kernel/perf_event.c
> +++ b/arch/arm/kernel/perf_event.c
> @@ -270,13 +270,6 @@ out:
>  	return err;
>  }
>  
> -static struct pmu pmu = {
> -	.enable	    = armpmu_enable,
> -	.disable    = armpmu_disable,
> -	.unthrottle = armpmu_unthrottle,
> -	.read	    = armpmu_read,
> -};
> -
>  static int
>  validate_event(struct cpu_hw_events *cpuc,
>  	       struct perf_event *event)
> @@ -446,20 +439,19 @@ __hw_perf_event_init(struct perf_event *event)
>  	return err;
>  }
>  
> -struct pmu *
> -hw_perf_event_init(struct perf_event *event)
> +static int armpmu_init_event(struct perf_event *event)
>  {
>  	int err = 0;
>  
>  	if (!armpmu)
> -		return ERR_PTR(-ENODEV);
> +		return -ENODEV;
>  
>  	event->destroy = hw_perf_event_destroy;
>  
>  	if (!atomic_inc_not_zero(&active_events)) {
>  		if (atomic_read(&active_events) > perf_max_events) {
>  			atomic_dec(&active_events);
> -			return ERR_PTR(-ENOSPC);
> +			return -ENOSPC;
>  		}
>  
>  		mutex_lock(&pmu_reserve_mutex);
> @@ -473,15 +465,23 @@ hw_perf_event_init(struct perf_event *event)
>  	}
>  
>  	if (err)
> -		return ERR_PTR(err);
> +		return err;
>  
>  	err = __hw_perf_event_init(event);
>  	if (err)
>  		hw_perf_event_destroy(event);
>  
> -	return err ? ERR_PTR(err) : &pmu;
> +	return err;
>  }
>  
> +static struct pmu pmu = {
> +	.enable	    = armpmu_enable,
> +	.disable    = armpmu_disable,
> +	.unthrottle = armpmu_unthrottle,
> +	.read	    = armpmu_read,
> +	.init_event  = armpmu_init_event,
> +};
> +
>  void
>  hw_perf_enable(void)
>  {
> @@ -2138,6 +2138,8 @@ init_hw_perf_events(void)
>  		pr_info("enabled with %s PMU driver, %d counters available\n",
>  			armpmu->name, armpmu->num_events);
>  
> +	perf_event_register_pmu(&pmu);
> +
>  	return 0;
>  }
>  arch_initcall(init_hw_perf_events);
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event
  2010-05-10 10:00 ` Lin Ming
@ 2010-05-10 20:01   ` Will Deacon
  0 siblings, 0 replies; 4+ messages in thread
From: Will Deacon @ 2010-05-10 20:01 UTC (permalink / raw)
  To: Lin Ming
  Cc: Peter Zijlstra, Ingo Molnar, Frederic Weisbecker, eranian,
	Gary.Mohr@Bull.com, Corey Ashford, arjan, Zhang, Yanmin,
	Paul Mackerras, David S. Miller, Russell King, Paul Mundt, lkml

Hi Lin [thanks to Russell for the CC],

On Mon, 2010-05-10 at 11:00 +0100, Lin Ming wrote:
> On Mon, 2010-05-10 at 17:27 +0800, Lin Ming wrote:
> > perf: arm, convert to new API pmu->init_event
> >
> > Signed-off-by: Lin Ming <ming.m.lin@intel.com>
> > ---
> >  arch/arm/kernel/perf_event.c |   28 +++++++++++++++-------------
> >  1 files changed, 15 insertions(+), 13 deletions(-)
> >
 
--------8<--------

The changes I've made to perf_event.c that result in conflicts
with this patch shouldn't cause you any trouble. If you rebase
the patch then everything should work as expected. Please CC me
when you submit the next iteration.

Cheers,

Will


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-05-10 20:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-10  9:27 [RFC][PATCH 5/9] perf: arm, convert to new API pmu->init_event Lin Ming
2010-05-10  9:38 ` Russell King
2010-05-10 10:00 ` Lin Ming
2010-05-10 20:01   ` Will Deacon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®