Skip to content

Commit

Permalink
Merge tag 'perf_urgent_for_v6.3_rc6' of git://git.kernel.org/pub/scm/…
Browse files Browse the repository at this point in the history
…linux/kernel/git/tip/tip

Pull perf fixes from Borislav Petkov:

 - Fix "same task" check when redirecting event output

 - Do not wait unconditionally for RCU on the event migration path if
   there are no events to migrate

* tag 'perf_urgent_for_v6.3_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf/core: Fix the same task check in perf_event_set_output
  perf: Optimize perf_pmu_migrate_context()
  • Loading branch information
Linus Torvalds committed Apr 9, 2023
2 parents 4ba115e + 24d3ae2 commit faf8f41
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions kernel/events/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -12173,7 +12173,7 @@ perf_event_set_output(struct perf_event *event, struct perf_event *output_event)
/*
* If its not a per-cpu rb, it must be the same task.
*/
if (output_event->cpu == -1 && output_event->ctx != event->ctx)
if (output_event->cpu == -1 && output_event->hw.target != event->hw.target)
goto out;

/*
Expand Down Expand Up @@ -12893,12 +12893,14 @@ void perf_pmu_migrate_context(struct pmu *pmu, int src_cpu, int dst_cpu)
__perf_pmu_remove(src_ctx, src_cpu, pmu, &src_ctx->pinned_groups, &events);
__perf_pmu_remove(src_ctx, src_cpu, pmu, &src_ctx->flexible_groups, &events);

/*
* Wait for the events to quiesce before re-instating them.
*/
synchronize_rcu();
if (!list_empty(&events)) {
/*
* Wait for the events to quiesce before re-instating them.
*/
synchronize_rcu();

__perf_pmu_install(dst_ctx, dst_cpu, pmu, &events);
__perf_pmu_install(dst_ctx, dst_cpu, pmu, &events);
}

mutex_unlock(&dst_ctx->mutex);
mutex_unlock(&src_ctx->mutex);
Expand Down

0 comments on commit faf8f41

Please sign in to comment.