diff options
author | Alexandru-Cezar Sardan <alexandru.sardan@freescale.com> | 2014-06-26 10:58:58 +0200 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2015-01-30 06:44:18 +0100 |
commit | 0d7d9b3a456aa8670cd9552f69529d57716f3122 (patch) | |
tree | 278c0c31448d4b3c144be1e8043774eb35ec5b44 /arch/powerpc | |
parent | powerpc/qe: Use strlcpy() (diff) | |
download | linux-0d7d9b3a456aa8670cd9552f69529d57716f3122.tar.xz linux-0d7d9b3a456aa8670cd9552f69529d57716f3122.zip |
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')
-rw-r--r-- | arch/powerpc/perf/core-fsl-emb.c | 4 |
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); |