Skip to contentSkip to conversation

perf,core: do no try to schedule task events if there are none.

PATCH In review Gleb Natapov 2 participants 3 messages Nov 22, 2011 – Dec 7, 2011 perf events

lore
Share & tools
lore
#0 lore raw

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
index b0c1186..920314e 100644
@@ -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.

#1 lore raw
Quoted 4 lines · Gleb Natapov

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.

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!

#2 lore raw

[tip:perf/urgent] perf: Do no try to schedule task events if there are none

In reply to Gleb Natapov
Commit-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
index 600c162..d3b9df5 100644
@@ -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);