|
@@ -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);
|
|
|
}
|
|
|
|