Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1334904

Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin()

From Waiman Long <waiman.long@hpe.com>
Newsgroups linux.kernel
Subject Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin()
Date 2016-02-16 02:30 +0100
Message-ID <r2CCJ-GB-1@gated-at.bofh.it> (permalink)
References <r1pRg-1EI-13@gated-at.bofh.it> <r1pRg-1EI-11@gated-at.bofh.it> <r1sP7-3ws-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 02/12/2016 03:40 PM, Peter Zijlstra wrote:
> On Fri, Feb 12, 2016 at 12:32:12PM -0500, Waiman Long wrote:
>> @@ -358,8 +373,8 @@ static bool mutex_optimistic_spin(struct mutex *lock,
>>   			}
>>
>>   			mutex_set_owner(lock);
>> -			osq_unlock(&lock->osq);
>> -			return true;
>> +			acquired = true;
>> +			break;
>>   		}
>>
>>   		/*
>> @@ -380,7 +395,10 @@ static bool mutex_optimistic_spin(struct mutex *lock,
>>   		cpu_relax_lowlatency();
>>   	}
>>
>> -	osq_unlock(&lock->osq);
>> +	if (!waiter)
>> +		osq_unlock(&lock->osq);
>> +	if (acquired || waiter)
>> +		return acquired;
>>   done:
>>   	/*
>>   	 * If we fell out of the spin path because of need_resched(),
> Is there a reason to not also preempt in the wait-loop? Surely the same
> reason is still valid there too?

The waiter does check for need_sched(). So it will break out of the loop 
and return false in this case. This causes the waiter to loop back and 
goes to sleep if the lock can't be acquired. That is why I don't think 
we need to do another schedule_preempt_disabled() here.

Cheers,
Longman

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/4] locking/mutex: Enable optimistic spinning of lock waiter Waiman Long <Waiman.Long@hpe.com> - 2016-02-12 18:40 +0100
  [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <Waiman.Long@hpe.com> - 2016-02-12 18:40 +0100
    Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Peter Zijlstra <peterz@infradead.org> - 2016-02-12 21:30 +0100
      Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Davidlohr Bueso <dave@stgolabs.net> - 2016-02-12 23:20 +0100
        Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Peter Zijlstra <peterz@infradead.org> - 2016-02-13 13:20 +0100
          Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Davidlohr Bueso <dave@stgolabs.net> - 2016-02-13 19:20 +0100
        Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Jason Low <jason.low2@hp.com> - 2016-02-16 03:20 +0100
          Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Jason Low <jason.low2@hp.com> - 2016-02-16 03:30 +0100
            Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Peter Zijlstra <peterz@infradead.org> - 2016-02-16 10:00 +0100
              Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <waiman.long@hpe.com> - 2016-02-17 03:00 +0100
      Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <waiman.long@hpe.com> - 2016-02-15 23:10 +0100
    Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Peter Zijlstra <peterz@infradead.org> - 2016-02-12 21:50 +0100
      Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <waiman.long@hpe.com> - 2016-02-16 02:30 +0100
        Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Jason Low <jason.low2@hp.com> - 2016-02-16 04:10 +0100
          Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <waiman.long@hpe.com> - 2016-02-16 04:40 +0100
    Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Davidlohr Bueso <dave@stgolabs.net> - 2016-02-12 23:10 +0100
    Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to  mutex_optimistic_spin() Davidlohr Bueso <dave@stgolabs.net> - 2016-02-12 23:10 +0100
      Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() Waiman Long <waiman.long@hpe.com> - 2016-02-16 01:10 +0100
  [PATCH v2 3/4] locking/mutex: Avoid missed wakeup of mutex waiter Waiman Long <Waiman.Long@hpe.com> - 2016-02-12 18:40 +0100
  [PATCH v2 2/4] locking/mutex: Enable optimistic spinning of woken task in wait queue Waiman Long <Waiman.Long@hpe.com> - 2016-02-12 18:40 +0100
  Re: [PATCH v2 0/4] locking/mutex: Enable optimistic spinning of lock  waiter Peter Zijlstra <peterz@infradead.org> - 2016-02-16 10:00 +0100
    Re: [PATCH v2 0/4] locking/mutex: Enable optimistic spinning of lock  waiter Waiman Long <waiman.long@hpe.com> - 2016-02-17 03:00 +0100

csiph-web