From fc76293ad9603f3ac319e6585537f22657a36b0a Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Wed, 15 Feb 2012 18:48:22 +0000 Subject: [PATCH] --- yaml --- r: 287673 b: refs/heads/master c: 9a45a9407c69d068500923480884661e2b9cc421 h: refs/heads/master i: 287671: 1b548ecb36a047872603ee589b6fb29cafa5e65c v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/perf_event.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index efb206f7edb6..12549414227a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 64f8c13561fbd2f1a8b4a8975b2aee73b561093e +refs/heads/master: 9a45a9407c69d068500923480884661e2b9cc421 diff --git a/trunk/arch/powerpc/kernel/perf_event.c b/trunk/arch/powerpc/kernel/perf_event.c index 10a140f82cb8..64483fde95c6 100644 --- a/trunk/arch/powerpc/kernel/perf_event.c +++ b/trunk/arch/powerpc/kernel/perf_event.c @@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) { unsigned long flags; s64 left; + unsigned long val; if (!event->hw.idx || !event->hw.sample_period) return; @@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) event->hw.state = 0; left = local64_read(&event->hw.period_left); - write_pmc(event->hw.idx, left); + + val = 0; + if (left < 0x80000000L) + val = 0x80000000L - left; + + write_pmc(event->hw.idx, val); perf_event_update_userpage(event); perf_pmu_enable(event->pmu);