On Wed, May 24, 2017 at 08:47:00PM +0200, Thomas Gleixner wrote:
> On Wed, 24 May 2017, Paul E. McKenney wrote:
> > > @@ -8920,7 +8912,7 @@ perf_event_mux_interval_ms_store(struct
> > >   pmu->hrtimer_interval_ms = timer;
> > > 
> > >   /* update all cpuctx for this PMU */
> > > - get_online_cpus();
> > > + cpus_read_lock();
> > 
> > OK, I'll bite...
> > 
> > Why is this piece using cpus_read_lock() instead of pmus_lock?
> > 
> > My guess is for the benefit of the cpu_function_call() below, but if
> > the code instead cycled through the perf_online_mask, wouldn't any
> > CPU selected be guaranteed to be online?
> 
> Indeed.
> 
> > Or is there some reason that it would be necessary to specially handle
> > CPUs that perf does not consider to be active, but that are still at
> > least partway online?
> 
> I have to delegate that question to Peter :)

Another reason might be a desire to avoid contention on pmus_lock,
if this function is called often.  If that is the case, I cannot
resist suggesting percpu_rw_sem.  ;-)

                                                        Thanx, Paul

Reply via email to