Hi Mao,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tip/locking/core]
[also build test WARNING on v4.18-rc8 next-20180807]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Mao-Wenan/rtmutex-Drop-pointless-static-qualifier-in-rt_mutex_adjust_prio_chain/20180808-013010
config: x86_64-randconfig-x010-201831 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   kernel/locking/rtmutex.c: In function 'rt_mutex_adjust_prio_chain':
>> kernel/locking/rtmutex.c:481:6: warning: 'prev_max' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
      if (prev_max != max_lock_depth) {
         ^

vim +/prev_max +481 kernel/locking/rtmutex.c

820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  384  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  385  /*
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  386   * Adjust 
the priority chain. Also used for deadlock detection.
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  387   * 
Decreases task's usage by one - may thus free the task.
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  388   *
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  389   * @task: 
the task owning the mutex (owner) for which a chain walk is
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  390   *        
        probably needed
e6beaa363 kernel/locking/rtmutex.c Tom(JeHyeon  Yeon 2015-03-18  391)  * 
@chwalk:       do we have to carry out deadlock detection?
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  392   * 
@orig_lock:    the mutex (can be NULL if we are walking the chain to recheck
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  393   *        
        things for a task that has just got its priority adjusted, and
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  394   *        
        is waiting on a mutex)
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  395   * 
@next_lock:    the mutex on which the owner of @orig_lock was blocked before
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  396   *        
        we dropped its pi_lock. Is never dereferenced, only used for
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  397   *        
        comparison to detect lock chain changes.
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  398   * 
@orig_waiter: rt_mutex_waiter struct for the task that has just donated
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  399   *        
        its priority to the mutex owner (can be NULL in the case
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  400   *        
        depicted above or if the top waiter is gone away and we are
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  401   *        
        actually deboosting the owner)
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  402   * 
@top_task:     the current top waiter
0c1061733 kernel/rtmutex.c         Juri Lelli        2013-05-15  403   *
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  404   * 
Returns 0 or -EDEADLK.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  405   *
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  406   * Chain 
walk basics and protection scope
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  407   *
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  408   * [R] 
refcount on task
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  409   * [P] 
task->pi_lock held
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  410   * [L] 
rtmutex->wait_lock held
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  411   *
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  412   * Step   
Description                             Protected by
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  413   *        
function arguments:
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  414   *        
@task                                   [R]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  415   *        
@orig_lock if != NULL                   @top_task is blocked on it
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  416   *        
@next_lock                              Unprotected. Cannot be
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  417   *        
                                        dereferenced. Only used for
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  418   *        
                                        comparison.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  419   *        
@orig_waiter if != NULL                 @top_task is blocked on it
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  420   *        
@top_task                               current, or in case of proxy
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  421   *        
                                        locking protected by calling
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  422   *        
                                        code
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  423   *        
again:
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  424   *        
  loop_sanity_check();
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  425   *        
retry:
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  426   * [1]    
  lock(task->pi_lock);                  [R] acquire [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  427   * [2]    
  waiter = task->pi_blocked_on;         [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  428   * [3]    
  check_exit_conditions_1();            [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  429   * [4]    
  lock = waiter->lock;                  [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  430   * [5]    
  if (!try_lock(lock->wait_lock)) {     [P] try to acquire [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  431   *        
    unlock(task->pi_lock);              release [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  432   *        
    goto retry;
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  433   *        
  }
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  434   * [6]    
  check_exit_conditions_2();            [P] + [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  435   * [7]    
  requeue_lock_waiter(lock, waiter);    [P] + [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  436   * [8]    
  unlock(task->pi_lock);                release [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  437   *        
  put_task_struct(task);                release [R]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  438   * [9]    
  check_exit_conditions_3();            [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  439   * [10]   
  task = owner(lock);                   [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  440   *        
  get_task_struct(task);                [L] acquire [R]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  441   *        
  lock(task->pi_lock);                  [L] acquire [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  442   * [11]   
  requeue_pi_waiter(tsk, waiters(lock));[P] + [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  443   * [12]   
  check_exit_conditions_4();            [P] + [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  444   * [13]   
  unlock(task->pi_lock);                release [P]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  445   *        
  unlock(lock->wait_lock);              release [L]
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  446   *        
  goto again;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  447   */
bd197234b kernel/rtmutex.c         Thomas Gleixner   2007-06-17  448  static 
int rt_mutex_adjust_prio_chain(struct task_struct *task,
8930ed80f kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  449            
                      enum rtmutex_chainwalk chwalk,
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  450            
                      struct rt_mutex *orig_lock,
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  451            
                      struct rt_mutex *next_lock,
95e02ca9b kernel/rtmutex.c         Thomas Gleixner   2006-06-27  452            
                      struct rt_mutex_waiter *orig_waiter,
9a11b49a8 kernel/rtmutex.c         Ingo Molnar       2006-07-03  453            
                      struct task_struct *top_task)
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  454  {
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  455    struct 
rt_mutex_waiter *waiter, *top_waiter = orig_waiter;
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  456    struct 
rt_mutex_waiter *prerequeue_top_waiter;
8930ed80f kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  457    int ret 
= 0, depth = 0;
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  458    struct 
rt_mutex *lock;
8930ed80f kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  459    bool 
detect_deadlock;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  460    bool 
requeue = true;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  461  
8930ed80f kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  462    
detect_deadlock = rt_mutex_cond_detect_deadlock(orig_waiter, chwalk);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  463  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  464    /*
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  465     * The 
(de)boosting is a step by step approach with a lot of
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  466     * 
pitfalls. We want this to be preemptible and we want hold a
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  467     * 
maximum of two locks per step. So we have to check
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  468     * 
carefully whether things change under us.
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  469     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  470   again:
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  471    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  472     * We 
limit the lock chain length for each invocation.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  473     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  474    if 
(++depth > max_lock_depth) {
3ac304ec5 kernel/locking/rtmutex.c Mao Wenan         2018-08-07  475            
int prev_max;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  476  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  477            
/*
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  478            
 * Print this only once. If the admin changes the limit,
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  479            
 * print a new message when reaching the limit again.
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  480            
 */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27 @481            
if (prev_max != max_lock_depth) {
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  482            
        prev_max = max_lock_depth;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  483            
        printk(KERN_WARNING "Maximum lock depth %d reached "
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  484            
               "task: %s (%d)\n", max_lock_depth,
ba25f9dcc kernel/rtmutex.c         Pavel Emelyanov   2007-10-18  485            
               top_task->comm, task_pid_nr(top_task));
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  486            
}
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  487            
put_task_struct(task);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  488  
3d5c9340d kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  489            
return -EDEADLK;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  490    }
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  491  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  492    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  493     * We 
are fully preemptible here and only hold the refcount on
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  494     * 
@task. So everything can have changed under us since the
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  495     * 
caller or our own code below (goto retry/again) dropped all
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  496     * 
locks.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  497     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  498   retry:
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  499    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  500     * [1] 
Task cannot go away as we did a get_task() before !
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  501     */
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  502    
raw_spin_lock_irq(&task->pi_lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  503  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  504    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  505     * [2] 
Get the waiter on which @task is blocked on.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  506     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  507    waiter 
= task->pi_blocked_on;
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  508  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  509    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  510     * [3] 
check_exit_conditions_1() protected by task->pi_lock.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  511     */
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  512  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  513    /*
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  514     * 
Check whether the end of the boosting chain has been
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  515     * 
reached or the state of the chain has changed while we
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  516     * 
dropped the locks.
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  517     */
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  518    if 
(!waiter)
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  519            
goto out_unlock_pi;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  520  
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  521    /*
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  522     * 
Check the orig_waiter state. After we dropped the locks,
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  523     * the 
previous owner of the lock might have released the lock.
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  524     */
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  525    if 
(orig_waiter && !rt_mutex_owner(orig_lock))
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  526            
goto out_unlock_pi;
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  527  
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  528    /*
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  529     * We 
dropped all locks after taking a refcount on @task, so
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  530     * the 
task might have moved on in the lock chain or even left
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  531     * the 
chain completely and blocks now on an unrelated lock or
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  532     * on 
@orig_lock.
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  533     *
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  534     * We 
stored the lock on which @task was blocked in @next_lock,
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  535     * so 
we can detect the chain change.
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  536     */
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  537    if 
(next_lock != waiter->lock)
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  538            
goto out_unlock_pi;
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  539  
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  540    /*
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  541     * Drop 
out, when the task has no waiters. Note,
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  542     * 
top_waiter can be NULL, when we are in the deboosting
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  543     * mode!
1a539a872 kernel/rtmutex.c         Thomas Gleixner   2007-06-08  544     */
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  545    if 
(top_waiter) {
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  546            
if (!task_has_pi_waiters(task))
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  547            
        goto out_unlock_pi;
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  548            
/*
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  549            
 * If deadlock detection is off, we stop here if we
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  550            
 * are not the top pi waiter of the task. If deadlock
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  551            
 * detection is enabled we continue, but stop the
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  552            
 * requeueing in the chain walk.
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  553            
 */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  554            
if (top_waiter != task_top_pi_waiter(task)) {
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  555            
        if (!detect_deadlock)
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  556            
                goto out_unlock_pi;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  557            
        else
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  558            
                requeue = false;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  559            
}
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  560    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  561  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  562    /*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  563     * If 
the waiter priority is the same as the task priority
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  564     * then 
there is no further priority adjustment necessary.  If
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  565     * 
deadlock detection is off, we stop the chain walk. If its
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  566     * 
enabled we continue, but stop the requeueing in the chain
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  567     * walk.
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  568     */
19830e552 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  569    if 
(rt_mutex_waiter_equal(waiter, task_to_waiter(task))) {
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  570            
if (!detect_deadlock)
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  571            
        goto out_unlock_pi;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  572            
else
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  573            
        requeue = false;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  574    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  575  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  576    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  577     * [4] 
Get the next lock
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  578     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  579    lock = 
waiter->lock;
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  580    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  581     * [5] 
We need to trylock here as we are holding task->pi_lock,
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  582     * 
which is the reverse lock order versus the other rtmutex
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  583     * 
operations.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  584     */
d209d74d5 kernel/rtmutex.c         Thomas Gleixner   2009-11-17  585    if 
(!raw_spin_trylock(&lock->wait_lock)) {
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  586            
raw_spin_unlock_irq(&task->pi_lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  587            
cpu_relax();
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  588            
goto retry;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  589    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  590  
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  591    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  592     * [6] 
check_exit_conditions_2() protected by task->pi_lock and
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  593     * 
lock->wait_lock.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  594     *
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  595     * 
Deadlock detection. If the lock is the same as the original
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  596     * lock 
which caused us to walk the lock chain or if the
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  597     * 
current lock is owned by the task which initiated the chain
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  598     * 
walk, we detected a deadlock.
397335f00 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  599     */
95e02ca9b kernel/rtmutex.c         Thomas Gleixner   2006-06-27  600    if 
(lock == orig_lock || rt_mutex_owner(lock) == top_task) {
8930ed80f kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  601            
debug_rt_mutex_deadlock(chwalk, orig_waiter, lock);
d209d74d5 kernel/rtmutex.c         Thomas Gleixner   2009-11-17  602            
raw_spin_unlock(&lock->wait_lock);
3d5c9340d kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  603            
ret = -EDEADLK;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  604            
goto out_unlock_pi;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  605    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  606  
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  607    /*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  608     * If 
we just follow the lock chain for deadlock detection, no
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  609     * need 
to do all the requeue operations. To avoid a truckload
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  610     * of 
conditionals around the various places below, just do the
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  611     * 
minimum chain walk checks.
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  612     */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  613    if 
(!requeue) {
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  614            
/*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  615            
 * No requeue[7] here. Just release @task [8]
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  616            
 */
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  617            
raw_spin_unlock(&task->pi_lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  618            
put_task_struct(task);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  619  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  620            
/*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  621            
 * [9] check_exit_conditions_3 protected by lock->wait_lock.
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  622            
 * If there is no owner of the lock, end of chain.
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  623            
 */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  624            
if (!rt_mutex_owner(lock)) {
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  625            
        raw_spin_unlock_irq(&lock->wait_lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  626            
        return 0;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  627            
}
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  628  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  629            
/* [10] Grab the next task, i.e. owner of @lock */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  630            
task = rt_mutex_owner(lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  631            
get_task_struct(task);
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  632            
raw_spin_lock(&task->pi_lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  633  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  634            
/*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  635            
 * No requeue [11] here. We just do deadlock detection.
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  636            
 *
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  637            
 * [12] Store whether owner is blocked
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  638            
 * itself. Decision is made after dropping the locks
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  639            
 */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  640            
next_lock = task_blocked_on_lock(task);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  641            
/*
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  642            
 * Get the top waiter for the next iteration
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  643            
 */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  644            
top_waiter = rt_mutex_top_waiter(lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  645  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  646            
/* [13] Drop locks */
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  647            
raw_spin_unlock(&task->pi_lock);
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  648            
raw_spin_unlock_irq(&lock->wait_lock);
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  649  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  650            
/* If owner is not blocked, end of chain. */
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  651            
if (!next_lock)
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  652            
        goto out_put_task;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  653            
goto again;
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  654    }
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  655  
67792e2ca kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  656    /*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  657     * 
Store the current top waiter before doing the requeue
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  658     * 
operation on @lock. We need it for the boost/deboost
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  659     * 
decision below.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  660     */
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  661    
prerequeue_top_waiter = rt_mutex_top_waiter(lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  662  
9f40a51a3 kernel/locking/rtmutex.c Davidlohr Bueso   2015-05-19  663    /* [7] 
Requeue the waiter in the lock waiter tree. */
fb00aca47 kernel/locking/rtmutex.c Peter Zijlstra    2013-11-07  664    
rt_mutex_dequeue(lock, waiter);
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  665  
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  666    /*
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  667     * 
Update the waiter prio fields now that we're dequeued.
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  668     *
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  669     * 
These values can have changed through either:
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  670     *
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  671     *   
sys_sched_set_scheduler() / sys_sched_setattr()
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  672     *
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  673     * or
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  674     *
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  675     *   DL 
CBS enforcement advancing the effective deadline.
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  676     *
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  677     * Even 
though pi_waiters also uses these fields, and that tree is only
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  678     * 
updated in [11], we can do this here, since we hold [L], which
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  679     * 
serializes all pi_waiters access and rb_erase() does not care about
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  680     * the 
values of the node being removed.
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  681     */
2d3d891d3 kernel/locking/rtmutex.c Dario Faggioli    2013-11-07  682    
waiter->prio = task->prio;
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  683    
waiter->deadline = task->dl.deadline;
e0aad5b44 kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  684  
fb00aca47 kernel/locking/rtmutex.c Peter Zijlstra    2013-11-07  685    
rt_mutex_enqueue(lock, waiter);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  686  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  687    /* [8] 
Release the task */
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  688    
raw_spin_unlock(&task->pi_lock);
2ffa5a5cd kernel/locking/rtmutex.c Thomas Gleixner   2014-06-07  689    
put_task_struct(task);
2ffa5a5cd kernel/locking/rtmutex.c Thomas Gleixner   2014-06-07  690  
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  691    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  692     * [9] 
check_exit_conditions_3 protected by lock->wait_lock.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  693     *
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  694     * We 
must abort the chain walk if there is no lock owner even
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  695     * in 
the dead lock detection case, as we have nothing to
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  696     * 
follow here. This is the end of the chain we are walking.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  697     */
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  698    if 
(!rt_mutex_owner(lock)) {
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  699            
/*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  700            
 * If the requeue [7] above changed the top waiter,
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  701            
 * then we need to wake the new top waiter up to try
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  702            
 * to get the lock.
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  703            
 */
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  704            
if (prerequeue_top_waiter != rt_mutex_top_waiter(lock))
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  705            
        wake_up_process(rt_mutex_top_waiter(lock)->task);
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  706            
raw_spin_unlock_irq(&lock->wait_lock);
2ffa5a5cd kernel/locking/rtmutex.c Thomas Gleixner   2014-06-07  707            
return 0;
8161239a8 kernel/rtmutex.c         Lai Jiangshan     2011-01-14  708    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  709  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  710    /* [10] 
Grab the next task, i.e. the owner of @lock */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  711    task = 
rt_mutex_owner(lock);
db630637b kernel/rtmutex.c         Steven Rostedt    2006-09-29  712    
get_task_struct(task);
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  713    
raw_spin_lock(&task->pi_lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  714  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  715    /* [11] 
requeue the pi waiters if necessary */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  716    if 
(waiter == rt_mutex_top_waiter(lock)) {
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  717            
/*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  718            
 * The waiter became the new top (highest priority)
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  719            
 * waiter on the lock. Replace the previous top waiter
9f40a51a3 kernel/locking/rtmutex.c Davidlohr Bueso   2015-05-19  720            
 * in the owner tasks pi waiters tree with this waiter
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  721            
 * and adjust the priority of the owner.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  722            
 */
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  723            
rt_mutex_dequeue_pi(task, prerequeue_top_waiter);
fb00aca47 kernel/locking/rtmutex.c Peter Zijlstra    2013-11-07  724            
rt_mutex_enqueue_pi(task, waiter);
acd58620e kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  725            
rt_mutex_adjust_prio(task);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  726  
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  727    } else 
if (prerequeue_top_waiter == waiter) {
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  728            
/*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  729            
 * The waiter was the top waiter on the lock, but is
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  730            
 * no longer the top prority waiter. Replace waiter in
9f40a51a3 kernel/locking/rtmutex.c Davidlohr Bueso   2015-05-19  731            
 * the owner tasks pi waiters tree with the new top
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  732            
 * (highest priority) waiter and adjust the priority
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  733            
 * of the owner.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  734            
 * The new top waiter is stored in @waiter so that
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  735            
 * @waiter == @top_waiter evaluates to true below and
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  736            
 * we continue to deboost the rest of the chain.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  737            
 */
fb00aca47 kernel/locking/rtmutex.c Peter Zijlstra    2013-11-07  738            
rt_mutex_dequeue_pi(task, waiter);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  739            
waiter = rt_mutex_top_waiter(lock);
fb00aca47 kernel/locking/rtmutex.c Peter Zijlstra    2013-11-07  740            
rt_mutex_enqueue_pi(task, waiter);
acd58620e kernel/locking/rtmutex.c Peter Zijlstra    2017-03-23  741            
rt_mutex_adjust_prio(task);
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  742    } else {
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  743            
/*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  744            
 * Nothing changed. No need to do any priority
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  745            
 * adjustment.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  746            
 */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  747    }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  748  
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  749    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  750     * [12] 
check_exit_conditions_4() protected by task->pi_lock
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  751     * and 
lock->wait_lock. The actual decisions are made after we
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  752     * 
dropped the locks.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  753     *
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  754     * 
Check whether the task which owns the current lock is pi
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  755     * 
blocked itself. If yes we store a pointer to the lock for
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  756     * the 
lock chain change detection above. After we dropped
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  757     * 
task->pi_lock next_lock cannot be dereferenced anymore.
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  758     */
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  759    
next_lock = task_blocked_on_lock(task);
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  760    /*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  761     * 
Store the top waiter of @lock for the end of chain walk
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  762     * 
decision below.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  763     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  764    
top_waiter = rt_mutex_top_waiter(lock);
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  765  
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  766    /* [13] 
Drop the locks */
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  767    
raw_spin_unlock(&task->pi_lock);
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  768    
raw_spin_unlock_irq(&lock->wait_lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  769  
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  770    /*
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  771     * Make 
the actual exit decisions [12], based on the stored
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  772     * 
values.
3eb65aead kernel/locking/rtmutex.c Thomas Gleixner   2014-06-09  773     *
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  774     * We 
reached the end of the lock chain. Stop right here. No
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  775     * 
point to go back just to figure that out.
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  776     */
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  777    if 
(!next_lock)
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  778            
goto out_put_task;
820849843 kernel/locking/rtmutex.c Thomas Gleixner   2014-06-05  779  
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  780    /*
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  781     * If 
the current waiter is not the top waiter on the lock,
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  782     * then 
we can stop the chain walk here if we are not in full
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  783     * 
deadlock detection mode.
a57594a13 kernel/locking/rtmutex.c Thomas Gleixner   2014-05-22  784     */
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  785    if 
(!detect_deadlock && waiter != top_waiter)
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  786            
goto out_put_task;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  787  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  788    goto 
again;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  789  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  790   
out_unlock_pi:
b4abf9104 kernel/locking/rtmutex.c Thomas Gleixner   2016-01-13  791    
raw_spin_unlock_irq(&task->pi_lock);
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  792   
out_put_task:
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  793    
put_task_struct(task);
36c8b5868 kernel/rtmutex.c         Ingo Molnar       2006-07-03  794  
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  795    return 
ret;
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  796  }
23f78d4a0 kernel/rtmutex.c         Ingo Molnar       2006-06-27  797  

:::::: The code at line 481 was first introduced by commit
:::::: 23f78d4a03c53cbd75d87a795378ea540aa08c86 [PATCH] pi-futex: rt mutex core

:::::: TO: Ingo Molnar <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to