WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH 13/14] x86/ticketlock: add slowpath logic

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 13/14] x86/ticketlock: add slowpath logic
From: Srivatsa Vaddagiri <vatsa@xxxxxxxxxxxxxxxxxx>
Date: Fri, 18 Feb 2011 22:33:46 +0530
Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxx>, Nick Piggin <npiggin@xxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>, vsrivatsa@xxxxxxxxx, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Jan Beulich <JBeulich@xxxxxxxxxx>, Eric Dumazet <dada1@xxxxxxxxxxxxx>, Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, suzuki@xxxxxxxxxx, Avi Kivity <avi@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Américo Wang <xiyou.wangcong@xxxxxxxxx>, Linux Virtualization <virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Delivery-date: Fri, 18 Feb 2011 10:07:13 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4D3DF5A5.7070301@xxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <cover.1289940821.git.jeremy.fitzhardinge@xxxxxxxxxx> <97ed99ae9160bdb6477284b333bd6708fb7a19cb.1289940821.git.jeremy.fitzhardinge@xxxxxxxxxx> <20110117152222.GA19233@xxxxxxxxxxxxxxxxxx> <20110119162348.GA29900@xxxxxxxxxxxxxxxxxx> <4D3DF5A5.7070301@xxxxxxxx>
Reply-to: vatsa@xxxxxxxxxxxxxxxxxx
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.20 (2009-06-14)
> On Mon, Jan 24, 2011 at 01:56:53PM -0800, Jeremy Fitzhardinge wrote:

For some reason, I seem to be missing emails from your id/domain and hence had
missed this completely!

> >   * bits.  However, we need to be careful about this because someone
> >   * may just be entering as we leave, and enter the slowpath.
> >   */
> > -void __ticket_unlock_release_slowpath(struct arch_spinlock *lock)
> > +void __ticket_unlock_slowpath(struct arch_spinlock *lock)
> >  {
> >     struct arch_spinlock old, new;
> >  
> >     BUILD_BUG_ON(((__ticket_t)NR_CPUS) != NR_CPUS);
> >  
> >     old = ACCESS_ONCE(*lock);
> > -
> >     new = old;
> > -   new.tickets.head += TICKET_LOCK_INC;
> >  
> >     /* Clear the slowpath flag */
> >     new.tickets.tail &= ~TICKET_SLOWPATH_FLAG;
> > +   if (new.tickets.head == new.tickets.tail)
> > +           cmpxchg(&lock->head_tail, old.head_tail, new.head_tail);
> >  
> > -   /*
> > -    * If there's currently people waiting or someone snuck in
> > -    * since we read the lock above, then do a normal unlock and
> > -    * kick.  If we managed to unlock with no queued waiters, then
> > -    * we can clear the slowpath flag.
> > -    */
> > -   if (new.tickets.head != new.tickets.tail ||
> > -       cmpxchg(&lock->head_tail,
> > -               old.head_tail, new.head_tail) != old.head_tail) {
> > -           /* still people waiting */
> > -           __ticket_unlock_release(lock);
> > -   }
> > -
> > +   /* Wake up an appropriate waiter */
> >     __ticket_unlock_kick(lock, new.tickets.head);
> 
> Does the __ticket_unlock_kick need to be unconditional?

I recall having tried optimizing it to be conditional, something along these
lines:

        if (new.ticket.head == new.tickets.tail) {
                cmpxchg();      
        } else {
                __ticket_unlock_kick(lock, new.tickets.head);
        }

but it didn't work for some reason. I left the call unconditional as was the
case previously based on that experiment.

- vatsa

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] Re: [PATCH 13/14] x86/ticketlock: add slowpath logic, Srivatsa Vaddagiri <=