metag: perf: add missing prev_count updates
authorJames Hogan <james.hogan@imgtec.com>
Wed, 27 Feb 2013 16:16:38 +0000 (16:16 +0000)
committerJames Hogan <james.hogan@imgtec.com>
Fri, 15 Mar 2013 13:20:03 +0000 (13:20 +0000)
commitc6ac1e6edacc7e1fb0405d61f95a797c6a712411
tree8794cd7bbb6873aaf5cafdaa75af0daf35409dfa
parentdb59932f62386cdfd8510c27a83118c5e915e9ea
metag: perf: add missing prev_count updates

The prev_count needs setting when changing the counter value, otherwise
the calculated delta will be wrong, which for frequency sampling
(dynamic period sampling) results in sampling at too high a frequency.

For non-interrupting performance counters it should also be cleared when
enabling the counter since the write to the PERF_COUNT register will
clear the perf counter.

This also includes a minor change to remove the u64 cast from the
metag_pmu->write() call as metag_pmu->write() takes a u32 anyway, and in
any case GCC is smart enough to optimise away the cast.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
arch/metag/kernel/perf/perf_event.c