Messages in this thread |  | | | Subject | Re: Q: perf_install_in_context/perf_event_enable are racy? | | From | Peter Zijlstra <> | | Date | Fri, 21 Jan 2011 14:39:45 +0100 |
| |
On Fri, 2011-01-21 at 14:03 +0100, Ingo Molnar wrote: > > > But, it seems, there is another problem. Forget about the exiting, > > > I can't understand why we can trust current in the code above. > > > With __ARCH_WANT_INTERRUPTS_ON_CTXSW schedule() does: > > > > > > // sets cpuctx->task_ctx = NULL > > > perf_event_task_sched_out(); > > > > > > // enables irqs > > > prepare_lock_switch(); > > > > > > > > > // updates current_task > > > switch_to(); > > > > > > What if IPI comes in the window before switch_to() ? > > > > > > (the same questions for __perf_event_enable). > > > > Ingo, do you have any insights in that, I think you wrote all that > > initially? > > Not sure. Can an IPI come there - we have irqs disabled usually, dont we?
Ah, I think I see how that works:
__perf_event_task_sched_out() perf_event_context_sched_out() if (do_switch) cpuctx->task_ctx = NULL; vs
__perf_install_in_context() if (cpu_ctx->task_ctx != ctx)
|  |