powerpc/perf: Never program book3s PMCs with values >= 0x80000000
authorAnton Blanchard <anton@samba.org>
Wed, 28 May 2014 22:15:38 +0000 (08:15 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 11 Jul 2014 03:50:47 +0000 (13:50 +1000)
commitf56029410a13cae3652d1f34788045c40a13ffc7
tree2f0e1a0d05b6f533eeba3b37b0decc2d6cf84677
parentfb43e8477ed9006c4f397f904c691a120503038c
powerpc/perf: Never program book3s PMCs with values >= 0x80000000

We are seeing a lot of PMU warnings on POWER8:

    Can't find PMC that caused IRQ

Looking closer, the active PMC is 0 at this point and we took a PMU
exception on the transition from negative to 0. Some versions of POWER8
have an issue where they edge detect and not level detect PMC overflows.

A number of places program the PMC with (0x80000000 - period_left),
where period_left can be negative. We can either fix all of these or
just ensure that period_left is always >= 1.

This patch takes the second option.

Cc: <stable@vger.kernel.org>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/perf/core-book3s.c