ARM: 6865/1: perf: ensure pass through zero is counted on overflow
authorWill Deacon <will.deacon@arm.com>
Tue, 5 Apr 2011 13:01:24 +0000 (14:01 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 10 Apr 2011 20:13:35 +0000 (21:13 +0100)
Commit a737823d ("ARM: perf: ensure overflows aren't missed due to IRQ
latency") changed the way that event deltas are calculated on overflow
so that we don't miss events when the new count value overtakes the
previous one.

Unfortunately, we forget to count the event that passes through zero so
we end up being off by 1. This patch adds on the correction.

Reported-by: Chris Moore <moore@free.fr>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/perf_event.c

index 69cfee0fe00f1cbc38eb7f789ef23aae51688dd6..979da3947f4272c933739064d576f991c412eeac 100644 (file)
@@ -221,7 +221,7 @@ again:
        prev_raw_count &= armpmu->max_period;
 
        if (overflow)
-               delta = armpmu->max_period - prev_raw_count + new_raw_count;
+               delta = armpmu->max_period - prev_raw_count + new_raw_count + 1;
        else
                delta = new_raw_count - prev_raw_count;