linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop
@ 2011-08-08 13:56 Mark Rutland
  0 siblings, 0 replies; 4+ messages in thread
From: Mark Rutland @ 2011-08-08 13:56 UTC (permalink / raw)
  To: linux-arm-kernel

As armpmu_disable will call armpmu->stop when the last event has been
removed, this is pointless and simply adds to the noise when debugging.
Additionally, due to this call occurring in a preemptible context, this
is problematic for per-cpu locking of PMU registers (where we will
attempt to access per-cpu spinlock for use with raw_spin_lock_irqsave).

This patch removes the call to armpmu->stop.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/kernel/perf_event.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index 9d6ac99..5ce6c33 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -396,7 +396,6 @@ armpmu_release_hardware(void)
 			free_irq(irq, NULL);
 	}
 
-	armpmu->stop();
 	release_pmu(ARM_PMU_DEVICE_CPU);
 }
 
-- 
1.7.0.4

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

* [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop
  2011-08-15 13:55 [RFC PATCH 00/15] ARM: perf: support multiple PMUs Mark Rutland
@ 2011-08-15 13:55 ` Mark Rutland
  0 siblings, 0 replies; 4+ messages in thread
From: Mark Rutland @ 2011-08-15 13:55 UTC (permalink / raw)
  To: linux-arm-kernel

As armpmu_disable will call armpmu->stop when the last event has been
removed, this is pointless and simply adds to the noise when debugging.
Additionally, due to this call occurring in a preemptible context, this
is problematic for per-cpu locking of PMU registers (where we will
attempt to access per-cpu spinlock for use with raw_spin_lock_irqsave).

This patch removes the call to armpmu->stop.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/kernel/perf_event.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index 9d6ac99..5ce6c33 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -396,7 +396,6 @@ armpmu_release_hardware(void)
 			free_irq(irq, NULL);
 	}
 
-	armpmu->stop();
 	release_pmu(ARM_PMU_DEVICE_CPU);
 }
 
-- 
1.7.0.4

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

* [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop
       [not found] <4B9A4BAF850C914D8DED94776A2C477E0B853A03@nasanexd01b.na.qualcomm.com>
@ 2011-08-22 18:36 ` Ashwin Chaugule
  2011-08-22 20:12   ` Will Deacon
  0 siblings, 1 reply; 4+ messages in thread
From: Ashwin Chaugule @ 2011-08-22 18:36 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

>> From: Mark Rutland 
>>
>> As armpmu_disable will call armpmu->stop when the last event has been
>> removed, this is pointless and simply adds to the noise when debugging.
>> Additionally, due to this call occurring in a preemptible context, this
>> is problematic for per-cpu locking of PMU registers (where we will
>> attempt to access per-cpu spinlock for use with raw_spin_lock_irqsave).
>>
>> This patch removes the call to armpmu->stop.
>>
>> Signed-off-by: Mark Rutland <mark.rutland@arm.com>
>> Reviewed-by: Will Deacon <will.deacon@arm.com>
>> ---
>> arch/arm/kernel/perf_event.c |    1 -
>> 1 files changed, 0 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
>> index 9d6ac99..5ce6c33 100644
>> --- a/arch/arm/kernel/perf_event.c
>> +++ b/arch/arm/kernel/perf_event.c
>> @@ -396,7 +396,6 @@ armpmu_release_hardware(void)
>> 			free_irq(irq, NULL);
>> 	}
>>
>> -	armpmu->stop();
>> 	release_pmu(ARM_PMU_DEVICE_CPU);


Makes sense. On a similar note, I've been wondering why we need to loop
through all events in armpmu_enable() ?

Wouldn't the event->add call have taken care of armpmu->enable prior to
calling armpmu_enable() ?

I think we just need an armpmu->start(). What are your thoughts ?

Cheers,
Ashwin

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

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

* [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop
  2011-08-22 18:36 ` Ashwin Chaugule
@ 2011-08-22 20:12   ` Will Deacon
  0 siblings, 0 replies; 4+ messages in thread
From: Will Deacon @ 2011-08-22 20:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 22, 2011 at 07:36:18PM +0100, Ashwin Chaugule wrote:
> Hello,

Hi Ashwin,

> >> From: Mark Rutland 
> >>
> >> As armpmu_disable will call armpmu->stop when the last event has been
> >> removed, this is pointless and simply adds to the noise when debugging.
> >> Additionally, due to this call occurring in a preemptible context, this
> >> is problematic for per-cpu locking of PMU registers (where we will
> >> attempt to access per-cpu spinlock for use with raw_spin_lock_irqsave).
> >>
> >> This patch removes the call to armpmu->stop.
> >>
> >> Signed-off-by: Mark Rutland <mark.rutland@arm.com>
> >> Reviewed-by: Will Deacon <will.deacon@arm.com>
> >> ---
> >> arch/arm/kernel/perf_event.c |    1 -
> >> 1 files changed, 0 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
> >> index 9d6ac99..5ce6c33 100644
> >> --- a/arch/arm/kernel/perf_event.c
> >> +++ b/arch/arm/kernel/perf_event.c
> >> @@ -396,7 +396,6 @@ armpmu_release_hardware(void)
> >> 			free_irq(irq, NULL);
> >> 	}
> >>
> >> -	armpmu->stop();
> >> 	release_pmu(ARM_PMU_DEVICE_CPU);
> 
> 
> Makes sense. On a similar note, I've been wondering why we need to loop
> through all events in armpmu_enable() ?
> 
> Wouldn't the event->add call have taken care of armpmu->enable prior to
> calling armpmu_enable() ?

Hmm, I think you might be right. armpmu->enable is called from armpmu_start,
which is called from armpmu->add whenever a new event is added. The current
redundancy is likely a hangover from before we had the PERF_EF_*/PERF_HES_*
flags.

> I think we just need an armpmu->start(). What are your thoughts ?

Yes, conditional on armpmu->num_events > 0. I'll give it a spin and add it to
my perf-updates branch if I don't see any regressions.

Cheers,

Will

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

end of thread, other threads:[~2011-08-22 20:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-08 13:56 [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop Mark Rutland
  -- strict thread matches above, loose matches on Subject: below --
2011-08-15 13:55 [RFC PATCH 00/15] ARM: perf: support multiple PMUs Mark Rutland
2011-08-15 13:55 ` [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop Mark Rutland
     [not found] <4B9A4BAF850C914D8DED94776A2C477E0B853A03@nasanexd01b.na.qualcomm.com>
2011-08-22 18:36 ` Ashwin Chaugule
2011-08-22 20:12   ` Will Deacon

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).