summaryrefslogtreecommitdiff
path: root/arch/powerpc/perf
diff options
context:
space:
mode:
authorAlexandru-Cezar Sardan <alexandru.sardan@freescale.com>2014-06-26 12:58:58 +0400
committerScott Wood <scottwood@freescale.com>2015-01-30 08:44:18 +0300
commit0d7d9b3a456aa8670cd9552f69529d57716f3122 (patch)
tree278c0c31448d4b3c144be1e8043774eb35ec5b44 /arch/powerpc/perf
parent5db431285d832156852d6f0013089b5d2305a28d (diff)
downloadlinux-0d7d9b3a456aa8670cd9552f69529d57716f3122.tar.xz
perf/powerpc: reset event hw state when adding it to the PMU
When adding an event to the PMU with PERF_EF_START the STOPPED and UPTODATE flags need to be cleared in the hw.event status variable because they are preventing the update of the event count on overflow interrupt. Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/perf')
-rw-r--r--arch/powerpc/perf/core-fsl-emb.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/perf/core-fsl-emb.c b/arch/powerpc/perf/core-fsl-emb.c
index e9fe904b6538..5d747b4cb8ee 100644
--- a/arch/powerpc/perf/core-fsl-emb.c
+++ b/arch/powerpc/perf/core-fsl-emb.c
@@ -330,9 +330,11 @@ static int fsl_emb_pmu_add(struct perf_event *event, int flags)
}
local64_set(&event->hw.prev_count, val);
- if (!(flags & PERF_EF_START)) {
+ if (unlikely(!(flags & PERF_EF_START))) {
event->hw.state = PERF_HES_STOPPED | PERF_HES_UPTODATE;
val = 0;
+ } else {
+ event->hw.state &= ~(PERF_HES_STOPPED | PERF_HES_UPTODATE);
}
write_pmc(i, val);