aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/perf_event.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-02-04 07:53:17 +0100
committerIngo Molnar <mingo@kernel.org>2015-02-04 07:53:17 +0100
commit2622e849a1d3d3ef531d1cc33308bb7fd00eee40 (patch)
treef2be9d9f08444cb93b3a8f87099fe4ff8ac3cd57 /arch/arm/kernel/perf_event.c
parent996636ddae5cab8883bd76b996cd4f2ea9a152be (diff)
parente36f014edff70fc02b3d3d79cead1d58f289332e (diff)
downloadkernel_replicant_linux-2622e849a1d3d3ef531d1cc33308bb7fd00eee40.tar.gz
kernel_replicant_linux-2622e849a1d3d3ef531d1cc33308bb7fd00eee40.tar.bz2
kernel_replicant_linux-2622e849a1d3d3ef531d1cc33308bb7fd00eee40.zip
Merge tag 'v3.19-rc7' into locking/core, to refresh the branch before applying new changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/arm/kernel/perf_event.c')
-rw-r--r--arch/arm/kernel/perf_event.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index f7c65adaa428..557e128e4df0 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -116,8 +116,14 @@ int armpmu_event_set_period(struct perf_event *event)
ret = 1;
}
- if (left > (s64)armpmu->max_period)
- left = armpmu->max_period;
+ /*
+ * Limit the maximum period to prevent the counter value
+ * from overtaking the one we are about to program. In
+ * effect we are reducing max_period to account for
+ * interrupt latency (and we are being very conservative).
+ */
+ if (left > (armpmu->max_period >> 1))
+ left = armpmu->max_period >> 1;
local64_set(&hwc->prev_count, (u64)-left);