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.sar...@freescale.com>
---
 arch/powerpc/perf/core-fsl-emb.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/perf/core-fsl-emb.c b/arch/powerpc/perf/core-fsl-emb.c
index d35ae52..ef2ce48 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);
-- 
1.7.9.5

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to