From 0b9c7ae390c9ff5c89cc83865a1ede1db7ef16e3 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 20 May 2009 12:21:19 +0200 Subject: [PATCH] --- yaml --- r: 147477 b: refs/heads/master c: d7b629a34fc4134a43c730b5f0197855dc4948d0 h: refs/heads/master i: 147475: f835224b306eff3ede9bcf156939dba2dc8e9d98 v: v3 --- [refs] | 2 +- trunk/include/linux/perf_counter.h | 1 - trunk/kernel/perf_counter.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 581704dee916..c96fd2133916 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c44d70a340554a33071339064a303ac0f1a31623 +refs/heads/master: d7b629a34fc4134a43c730b5f0197855dc4948d0 diff --git a/trunk/include/linux/perf_counter.h b/trunk/include/linux/perf_counter.h index 13cb2fbbf334..c8c1dfc22c93 100644 --- a/trunk/include/linux/perf_counter.h +++ b/trunk/include/linux/perf_counter.h @@ -508,7 +508,6 @@ struct perf_counter_context { int nr_counters; int nr_active; int is_active; - int rr_allowed; struct task_struct *task; /* diff --git a/trunk/kernel/perf_counter.c b/trunk/kernel/perf_counter.c index 4d8f97375f3a..64113e6d1942 100644 --- a/trunk/kernel/perf_counter.c +++ b/trunk/kernel/perf_counter.c @@ -1120,8 +1120,7 @@ void perf_counter_task_tick(struct task_struct *curr, int cpu) __perf_counter_task_sched_out(ctx); rotate_ctx(&cpuctx->ctx); - if (ctx->rr_allowed) - rotate_ctx(ctx); + rotate_ctx(ctx); perf_counter_cpu_sched_in(cpuctx, cpu); perf_counter_task_sched_in(curr, cpu); @@ -3109,7 +3108,6 @@ __perf_counter_init_context(struct perf_counter_context *ctx, mutex_init(&ctx->mutex); INIT_LIST_HEAD(&ctx->counter_list); INIT_LIST_HEAD(&ctx->event_list); - ctx->rr_allowed = 1; ctx->task = task; } @@ -3350,14 +3348,14 @@ void perf_counter_init_task(struct task_struct *child) */ mutex_lock(&parent_ctx->mutex); - parent_ctx->rr_allowed = 0; - barrier(); /* irqs */ - /* * We dont have to disable NMIs - we are only looking at * the list, not manipulating it: */ - list_for_each_entry(counter, &parent_ctx->counter_list, list_entry) { + list_for_each_entry_rcu(counter, &parent_ctx->event_list, event_entry) { + if (counter != counter->group_leader) + continue; + if (!counter->hw_event.inherit) continue; @@ -3366,9 +3364,6 @@ void perf_counter_init_task(struct task_struct *child) break; } - barrier(); /* irqs */ - parent_ctx->rr_allowed = 1; - mutex_unlock(&parent_ctx->mutex); }