[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 03/60] xen/sched: let sched_switch_sched() return new lock address



>>> On 12.06.19 at 11:56, <dfaggioli@xxxxxxxx> wrote:
> On Wed, 2019-06-12 at 10:32 +0100, Jan Beulich wrote:
>> > > > On 12.06.19 at 10:19, <jgross@xxxxxxxx> wrote:
>> > On 12.06.19 10:05, Andrew Cooper wrote:
>> > > On 28/05/2019 11:32, Juergen Gross wrote:
>> > > > 
>> > > > +    per_cpu(scheduler, cpu) = new_ops;
>> > > > +    sd->sched_priv = ppriv;
>> > > > +
>> > > > +    /*
>> > > > +     * (Re?)route the lock to the per pCPU lock as /last/
>> > > > thing. In fact,
>> > > > +     * if it is free (and it can be) we want that anyone that
>> > > > manages
>> > > > +     * taking it, finds all the initializations we've done
>> > > > above in place.
>> > > > +     */
>> > > > +    smp_mb();
>> > > 
>> > > A full memory barrier is a massive overhead for what should be
>> > > smp_wmb().  The matching barrier is actually hidden in the
>> > > implicit
>> > > semantics of managing to lock sd->schedule_lock (which is trial
>> > > an error
>> > > anyway), but the only thing that matters here is that all other
>> > > written
>> > > data is in place first.
>> > > 
>> > Not that it would really matter for performance (switching cpus
>> > between
>> > cpupools is a _very_ rare operation), I'm fine transforming the
>> > barrier
>> > into smp_wmb().
>> 
>> This again is a change easy enough to make while committing. I'm
>> recording the above in case I end up being the committer.
>> 
> I'm fine (i.e., my Rev-by: remains valid) with this being turned into a
> wmb(), and it being done upon commit (thanks Jan for the offer to do
> that!).
> 
> If we do it, however, I think the comment needs to be adjusted too, and
> the commit message needs to briefly mention this new change we're
> doing.
> 
> Maybe, for the comment, add something like:
> 
> "The smp_wmb() corresponds to the barrier implicit in successfully
> taking the lock."

I'm not entirely happy with this one: Taking a lock is an implicit full
barrier, so cannot alone be used to reason why a write barrier is
sufficient here.

> And, for the changelog, add:
> 
> "While there, turn the full barrier, which was overkill, into an
> smp_wmb(), matching with the one implicit in managing to take the
> lock."

This one reads fine to me.

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.