From 72065df91e9683773ce37dc6dabcd68e43ba7161 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 29 Jan 2010 09:04:26 +0100 Subject: [PATCH] --- yaml --- r: 182425 b: refs/heads/master c: 75c9f3284a7ff957829f44baace82406a6354ceb h: refs/heads/master i: 182423: 52b2c8da0da486af8e5cdd83468fd360086e7f13 v: v3 --- [refs] | 2 +- trunk/kernel/perf_event.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 3fcd7f8b2036..6a153ec09491 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 18c01f8abff51e4910cc5ffb4b710e8c6eea60c9 +refs/heads/master: 75c9f3284a7ff957829f44baace82406a6354ceb diff --git a/trunk/kernel/perf_event.c b/trunk/kernel/perf_event.c index 251fb9552492..53dc2a362111 100644 --- a/trunk/kernel/perf_event.c +++ b/trunk/kernel/perf_event.c @@ -5002,8 +5002,15 @@ inherit_event(struct perf_event *parent_event, else child_event->state = PERF_EVENT_STATE_OFF; - if (parent_event->attr.freq) - child_event->hw.sample_period = parent_event->hw.sample_period; + if (parent_event->attr.freq) { + u64 sample_period = parent_event->hw.sample_period; + struct hw_perf_event *hwc = &child_event->hw; + + hwc->sample_period = sample_period; + hwc->last_period = sample_period; + + atomic64_set(&hwc->period_left, sample_period); + } child_event->overflow_handler = parent_event->overflow_handler;