| Date | Sat, 09 Apr 2011 21:17:48 +0200 | From | Peter Zijlstra <> | Subject | [RFC][PATCH 9/9] perf: De-schedule a task context when removing the last event |
| |
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- kernel/perf_event.c | 4 ++++ 1 file changed, 4 insertions(+)
Index: linux-2.6/kernel/perf_event.c =================================================================== --- linux-2.6.orig/kernel/perf_event.c +++ linux-2.6/kernel/perf_event.c @@ -1114,6 +1114,10 @@ static int __perf_remove_from_context(vo raw_spin_lock(&ctx->lock); event_sched_out(event, cpuctx, ctx); list_del_event(event, ctx); + if (!ctx->nr_events && cpuctx->task_ctx == ctx) { + ctx->is_active = 0; + cpuctx->task_ctx = NULL; + } raw_spin_unlock(&ctx->lock); return 0;
|