On Wed, Aug 05, 2015 at 09:08:32AM -0700, Alexei Starovoitov wrote: > On 8/5/15 6:53 AM, Peter Zijlstra wrote: > >+ /* > >+ * If the event is currently on this CPU, its either a per-task event, > >+ * or local to this CPU. Furthermore it means its ACTIVE (otherwise > >+ * oncpu == -1). > >+ */ > >+ if (event->oncpu == smp_processor_id()) > >+ event->pmu->read(event); > >+ > >+ val = local64_read(&event->count); > >+ local_irq_restore(flags); > >+ > > nice! cleaner and faster. > so raw_spin_lock(&ctx->lock) is not needed, because > update_*(event) methods are not called, right?
Indeed, and by ensuring the event is indeed local (by force of WARN_ON) disabling IRQs will avoid counter scheduling and result in a stable event state. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html