perf,core: do no try to schedule task events if there are none.
PATCH 1/1 perf,core: do no try to schedule task events if there are none.
perf_event_sched_in() shouldn't try to schedule task events if there are none otherwise task's ctx->is_active will be set and will not be cleared during sched_out. This will prevent newly added events from being scheduled into the task context.
---
The patch is against tip/perf/urgent since it depends on commit 1d5f003f5a9 there. I've sent updated version of above commit earlier but unfortunately old version was applied and I do not see amended version in Peter's queue either. So here is incremental fix.
kernel/events/core.c +2 -2
@@ -2171,11 +2171,11 @@ static void perf_event_context_sched_in(struct perf_event_context *ctx,*/ cpu_ctx_sched_out (cpuctx,EVENT_FLEXIBLE ); -perf_event_sched_in (cpuctx, ctx, task); -if (ctx->nr_events) cpuctx->task_ctx = ctx; +perf_event_sched_in (cpuctx, cpuctx->task_ctx, task); +perf_pmu_enable (ctx->pmu);perf_ctx_unlock (cpuctx, ctx);
--
Gleb.
Quoted 4 lines · Gleb Natapov
The patch is against tip/perf/urgent since it depends on commit
1d5f003f5a9there. I've sent updated version of above commit earlier but unfortunately old version was applied and I do not see amended version in Peter's queue either. So here is incremental fix.
Ah, sorry for messing that up, I did pick up the new version, but must have crossed wires with Ingo merging and I failed to double check which version ended up in the tree.
Thanks!
[tip:perf/urgent] perf: Do no try to schedule task events if there are none
In reply to Gleb NatapovCommit-ID: 86b47c25494b824da655b95f6fdb4fdb3f17aa77 Gitweb: http://git.kernel.org/tip/86b47c25494b824da655b95f6fdb4fdb3f17aa77 Author: Gleb Natapov <[email protected]> AuthorDate: Tue, 22 Nov 2011 16:08:21 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Wed, 7 Dec 2011 16:31:22 +0100
perf: Do no try to schedule task events if there are none
perf_event_sched_in() shouldn't try to schedule task events if there are none otherwise task's ctx->is_active will be set and will not be cleared during sched_out. This will prevent newly added events from being scheduled into the task context.
Fixes a boo-boo in commit 1d5f003f5a9 ("perf: Do not set task_ctx pointer in cpuctx if there are no events in the context").
--- kernel/events/core.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/events/core.c +2 -2
@@ -2174,11 +2174,11 @@ static void perf_event_context_sched_in(struct perf_event_context *ctx,*/ cpu_ctx_sched_out (cpuctx,EVENT_FLEXIBLE ); -perf_event_sched_in (cpuctx, ctx, task); -if (ctx->nr_events) cpuctx->task_ctx = ctx; +perf_event_sched_in (cpuctx, cpuctx->task_ctx, task); +perf_pmu_enable (ctx->pmu);perf_ctx_unlock (cpuctx, ctx);