[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 8/9] qspinlock: Generic paravirt support
On Wed, Apr 01, 2015 at 02:54:45PM -0400, Waiman Long wrote: > On 04/01/2015 02:17 PM, Peter Zijlstra wrote: > >On Wed, Apr 01, 2015 at 07:42:39PM +0200, Peter Zijlstra wrote: > >>>Hohumm.. time to think more I think ;-) > >>So bear with me, I've not really pondered this well so it could be full > >>of holes (again). > >> > >>After the cmpxchg(&l->locked, _Q_LOCKED_VAL, _Q_SLOW_VAL) succeeds the > >>spin_unlock() must do the hash lookup, right? We can make the lookup > >>unhash. > >> > >>If the cmpxchg() fails the unlock will not do the lookup and we must > >>unhash. > >The idea being that the result is that any lookup is guaranteed to find > >an entry, which reduces our worst case lookup cost to whatever the worst > >case insertion cost was. > > > > I think it doesn't matter who did the unhashing. Multiple independent locks > can be hashed to the same value. Since they can be unhashed independently, > there is no way to know whether you have checked all the possible buckets. oh but the crux is that you guarantee a lookup will find an entry. it will never need to iterate the entire array. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |