[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1284269844-23251-1-git-send-email-mcree@orcon.net.nz>
Date: Sun, 12 Sep 2010 17:37:24 +1200
From: Michael Cree <mcree@...on.net.nz>
To: peterz@...radead.org
Cc: Michael Cree <mcree@...on.net.nz>, mingo@...hat.com,
dengcheng.zhu@...il.com, yanmin_zhang@...ux.intel.com,
gorcunov@...il.com, fweisbec@...il.com, robert.richter@....com,
ming.m.lin@...el.com, tglx@...utronix.de, hpa@...or.com,
paulus@...ba.org, linux-kernel@...r.kernel.org,
eranian@...glemail.com, will.deacon@....com, lethal@...ux-sh.org,
davem@...emloft.net, mingo@...e.hu, linux-alpha@...r.kernel.org
Subject: [PATCH] alpha: Fix HW performance counters to be stopped properly.
Also fix a few compile errors due to undefined and duplicated
variables.
Signed-off-by: Michael Cree <mcree@...on.net.nz>
---
arch/alpha/kernel/perf_event.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/arch/alpha/kernel/perf_event.c b/arch/alpha/kernel/perf_event.c
index a25fe9e..41f204f 100644
--- a/arch/alpha/kernel/perf_event.c
+++ b/arch/alpha/kernel/perf_event.c
@@ -422,9 +422,10 @@ static void maybe_change_configuration(struct cpu_hw_events *cpuc)
static int alpha_pmu_add(struct perf_event *event, int flags)
{
struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
+ struct hw_perf_event *hwc = &event->hw;
int n0;
int ret;
- unsigned long flags;
+ unsigned long irq_flags;
/*
* The Sparc code has the IRQ disable first followed by the perf
@@ -435,7 +436,7 @@ static int alpha_pmu_add(struct perf_event *event, int flags)
* final PMI to occur before we disable interrupts.
*/
perf_pmu_disable(event->pmu);
- local_irq_save(flags);
+ local_irq_save(irq_flags);
/* Default to error to be returned */
ret = -EAGAIN;
@@ -458,7 +459,7 @@ static int alpha_pmu_add(struct perf_event *event, int flags)
if (!(flags & PERF_EF_START))
hwc->state |= PERF_HES_STOPPED;
- local_irq_restore(flags);
+ local_irq_restore(irq_flags);
perf_pmu_enable(event->pmu);
return ret;
@@ -474,11 +475,11 @@ static void alpha_pmu_del(struct perf_event *event, int flags)
{
struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
struct hw_perf_event *hwc = &event->hw;
- unsigned long flags;
+ unsigned long irq_flags;
int j;
perf_pmu_disable(event->pmu);
- local_irq_save(flags);
+ local_irq_save(irq_flags);
for (j = 0; j < cpuc->n_events; j++) {
if (event == cpuc->event[j]) {
@@ -504,7 +505,7 @@ static void alpha_pmu_del(struct perf_event *event, int flags)
}
}
- local_irq_restore(flags);
+ local_irq_restore(irq_flags);
perf_pmu_enable(event->pmu);
}
@@ -523,7 +524,7 @@ static void alpha_pmu_stop(struct perf_event *event, int flags)
struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
if (!(hwc->state & PERF_HES_STOPPED)) {
- cpuc->idx_mask &= !(1UL<<hwc->idx);
+ cpuc->idx_mask &= ~(1UL<<hwc->idx);
hwc->state |= PERF_HES_STOPPED;
}
@@ -533,7 +534,7 @@ static void alpha_pmu_stop(struct perf_event *event, int flags)
}
if (cpuc->enabled)
- wrperfmon(PERFMON_CMD_ENABLE, (1UL<<hwc->idx));
+ wrperfmon(PERFMON_CMD_DISABLE, (1UL<<hwc->idx));
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists