Eric B Munson
86c74ab317
powerpc/perf_event: Skip updating kernel counters if register value shrinks
...
Because of speculative event roll back, it is possible for some event coutners
to decrease between reads on POWER7. This causes a problem with the way that
counters are updated. Delta calues are calculated in a 64 bit value and the
top 32 bits are masked. If the register value has decreased, this leaves us
with a very large positive value added to the kernel counters. This patch
protects against this by skipping the update if the delta would be negative.
This can lead to a lack of precision in the coutner values, but from my testing
the value is typcially fewer than 10 samples at a time.
Signed-off-by: Eric B Munson <emunson@mgebm.net>
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-04-18 13:08:23 +10:00
..
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-11-29 15:48:23 +11:00
2011-03-31 11:26:23 -03:00
2011-02-07 12:57:11 +11:00
2010-10-13 08:47:09 -04:00
2011-03-23 19:46:42 -07:00
2011-04-12 06:29:21 -05:00
2011-03-23 19:47:19 -07:00
2011-04-18 13:06:45 +10:00
2010-12-09 15:17:50 +11:00
2011-03-30 10:44:00 +11:00
2010-11-26 15:14:56 +01:00
2011-01-21 14:08:33 +11:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-11-29 15:48:23 +11:00
2010-11-29 15:48:23 +11:00
2011-04-01 15:37:09 +11:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-04-07 11:14:49 -07:00
2011-03-31 11:26:23 -03:00
2011-04-11 22:54:42 +02:00
2011-04-01 15:37:25 +11:00
2010-12-09 15:35:32 +11:00
2011-04-01 15:37:18 +11:00
2010-11-17 13:54:58 -06:00
2010-10-24 10:52:14 +02:00
2010-11-05 14:42:27 -02:00
2011-03-31 11:26:23 -03:00
2011-04-12 06:29:21 -05:00
2011-03-31 11:26:23 -03:00
2010-10-14 00:52:46 -05:00
2011-03-29 14:48:12 +02:00
2010-11-29 15:48:22 +11:00
2010-11-29 15:48:23 +11:00
2010-11-29 15:48:23 +11:00
2010-11-29 15:48:22 +11:00
2010-10-05 17:27:54 -07:00
2010-11-26 15:14:56 +01:00
2011-03-04 18:19:04 +11:00
2011-02-28 01:36:39 -07:00
2011-04-05 16:22:11 +10:00
2011-02-04 11:46:51 -07:00
2011-02-04 11:46:51 -07:00
2011-03-21 10:57:57 +11:00
2011-02-04 11:46:51 -07:00
2011-03-29 14:48:12 +02:00
2011-01-19 20:05:42 +01:00
2011-04-18 13:08:23 +10:00
2010-11-26 15:14:56 +01:00
2010-11-26 15:14:56 +01:00
2010-11-26 15:14:56 +01:00
2010-11-26 15:14:56 +01:00
2010-11-26 15:14:56 +01:00
2010-11-26 15:14:56 +01:00
2010-11-29 15:48:17 +11:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:01 -07:00
2011-02-04 11:46:50 -07:00
2011-03-31 11:26:23 -03:00
2010-12-09 15:35:32 +11:00
2011-03-31 11:26:23 -03:00
2011-01-21 14:08:34 +11:00
2010-12-09 15:36:30 +11:00
2011-03-31 11:26:23 -03:00
2010-10-21 21:19:54 -07:00
2010-12-09 15:35:31 +11:00
2011-04-05 16:22:11 +10:00
2010-09-22 09:33:50 -07:00
2010-09-22 09:33:50 -07:00
2010-09-22 09:33:50 -07:00
2011-04-01 15:37:36 +11:00
2011-03-31 11:26:23 -03:00
2010-11-17 08:59:32 -08:00
2011-04-18 13:08:19 +10:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-23 16:36:55 -04:00
2010-11-29 15:48:23 +11:00
2010-12-09 15:17:50 +11:00
2011-01-25 14:26:50 +01:00