Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 075e0b00 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

perf: Optimize ctx_sched_out()



Oleg noted that ctx_sched_out() disables the PMU even though it might
not actually do something, avoid needless PMU-disabling.

Reported-by: default avatarOleg Nesterov <oleg@redhat.com>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20110409192141.665385503@chello.nl


Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent f506b3dc
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1760,7 +1760,6 @@ static void ctx_sched_out(struct perf_event_context *ctx,
	struct perf_event *event;

	raw_spin_lock(&ctx->lock);
	perf_pmu_disable(ctx->pmu);
	ctx->is_active = 0;
	if (likely(!ctx->nr_events))
		goto out;
@@ -1770,6 +1769,7 @@ static void ctx_sched_out(struct perf_event_context *ctx,
	if (!ctx->nr_active)
		goto out;

	perf_pmu_disable(ctx->pmu);
	if (event_type & EVENT_PINNED) {
		list_for_each_entry(event, &ctx->pinned_groups, group_entry)
			group_sched_out(event, cpuctx, ctx);
@@ -1779,8 +1779,8 @@ static void ctx_sched_out(struct perf_event_context *ctx,
		list_for_each_entry(event, &ctx->flexible_groups, group_entry)
			group_sched_out(event, cpuctx, ctx);
	}
out:
	perf_pmu_enable(ctx->pmu);
out:
	raw_spin_unlock(&ctx->lock);
}