From: Dave Aldridge Date: Thu, 21 Jan 2016 14:17:11 +0000 (-0800) Subject: sparc64: Fix for perf event counts sometimes reported as negative numbers X-Git-Tag: v4.1.12-92~198^2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=83b6f6d8dade657b63e035b7ed471cfa6928b2d4;p=users%2Fjedix%2Flinux-maple.git sparc64: Fix for perf event counts sometimes reported as negative numbers Use an unsigned number to prevent sign extension in the calculation to work out the difference between the previous and the current count obtained from the perfomance instrumentation counters. Orabug: 22607658 Signed-off-by: Dave Aldridge (cherry picked from commit b0fb8b78a2cc452512296ce5bec1fa927ebf867e) (cherry picked from commit da8cc212a978a1f54cadadeaabed46d9d5f839b3) Signed-off-by: Allen Pais --- diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index 6be35b131039..d5e46143f99c 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c @@ -862,8 +862,7 @@ static u64 sparc_perf_event_update(struct perf_event *event, struct hw_perf_event *hwc, int idx) { int shift = 64 - 32; - u64 prev_raw_count, new_raw_count; - s64 delta; + u64 prev_raw_count, new_raw_count, delta; again: prev_raw_count = local64_read(&hwc->prev_count);