* [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 ` [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop 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 --
[not found] <4B9A4BAF850C914D8DED94776A2C477E0B853A03@nasanexd01b.na.qualcomm.com>
2011-08-22 18:36 ` [RFC PATCH 08/15] ARM: perf: remove unnecessary armpmu->stop Ashwin Chaugule
2011-08-22 20:12 ` Will Deacon
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
-- strict thread matches above, loose matches on Subject: below --
2011-08-08 13:56 Mark Rutland
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).