Hi Roman,

[auto build test WARNING on block/for-next]
[also build test WARNING on v4.7 next-20160805]
[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/Roman-Pen/blk-mq-fix-hang-caused-by-freeze-unfreeze-sequence/20160806-014441
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 
for-next
config: x86_64-randconfig-x012-201631 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c: In function 'blk_queue_enter':
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:151:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> include/linux/wait.h:473:2: note: in expansion of macro 'if'
     if (!(condition))      \
     ^~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:151:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
>> include/linux/wait.h:473:2: note: in expansion of macro 'if'
     if (!(condition))      \
     ^~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:162:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
>> include/linux/wait.h:473:2: note: in expansion of macro 'if'
     if (!(condition))      \
     ^~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:151:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
   include/linux/wait.h:278:3: note: in expansion of macro 'if'
      if (condition)      \
      ^~
>> include/linux/wait.h:451:2: note: in expansion of macro '___wait_event'
     ___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0,  \
     ^~~~~~~~~~~~~
   include/linux/wait.h:474:11: note: in expansion of macro 
'__wait_event_interruptible'
      __ret = __wait_event_interruptible(wq, condition); \
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:151:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
   include/linux/wait.h:278:3: note: in expansion of macro 'if'
      if (condition)      \
      ^~
>> include/linux/wait.h:451:2: note: in expansion of macro '___wait_event'
     ___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0,  \
     ^~~~~~~~~~~~~
   include/linux/wait.h:474:11: note: in expansion of macro 
'__wait_event_interruptible'
      __ret = __wait_event_interruptible(wq, condition); \
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from block/blk-core.c:14:
   block/blk-core.c:661:18: error: passing argument 1 of 'atomic_read' from 
incompatible pointer type [-Werror=incompatible-pointer-types]
        !atomic_read(&q->mq_freeze_depth) ||
                     ^
   include/linux/compiler.h:162:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
   include/linux/wait.h:278:3: note: in expansion of macro 'if'
      if (condition)      \
      ^~
>> include/linux/wait.h:451:2: note: in expansion of macro '___wait_event'
     ___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0,  \
     ^~~~~~~~~~~~~
   include/linux/wait.h:474:11: note: in expansion of macro 
'__wait_event_interruptible'
      __ret = __wait_event_interruptible(wq, condition); \
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
   block/blk-core.c:660:9: note: in expansion of macro 
'wait_event_interruptible'
      ret = wait_event_interruptible(q->mq_freeze_wq,
            ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/msr.h:66:0,
                    from arch/x86/include/asm/processor.h:20,
                    from arch/x86/include/asm/cpufeature.h:4,
                    from arch/x86/include/asm/thread_info.h:52,
                    from include/linux/thread_info.h:54,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:59,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from block/blk-core.c:15:
   arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka 
const struct <anonymous> *}' but argument is of type 'int *'
    static __always_inline int atomic_read(const atomic_t *v)
                               ^~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/if +473 include/linux/wait.h

41a1431b1 Peter Zijlstra 2013-10-02  272        else                            
                                \
c2d816443 Oleg Nesterov  2013-10-07  273                __wait.flags = 0;       
                                \
c2d816443 Oleg Nesterov  2013-10-07  274                                        
                                \
c2d816443 Oleg Nesterov  2013-10-07  275        for (;;) {                      
                                \
c2d816443 Oleg Nesterov  2013-10-07  276                long __int = 
prepare_to_wait_event(&wq, &__wait, state);\
41a1431b1 Peter Zijlstra 2013-10-02  277                                        
                                \
41a1431b1 Peter Zijlstra 2013-10-02 @278                if (condition)          
                                \
41a1431b1 Peter Zijlstra 2013-10-02  279                        break;          
                                \
41a1431b1 Peter Zijlstra 2013-10-02  280                                        
                                \
c2d816443 Oleg Nesterov  2013-10-07  281                if 
(___wait_is_interruptible(state) && __int) {         \
c2d816443 Oleg Nesterov  2013-10-07  282                        __ret = __int;  
                                \
41a1431b1 Peter Zijlstra 2013-10-02  283                        if (exclusive) 
{                                \
41a1431b1 Peter Zijlstra 2013-10-02  284                                
abort_exclusive_wait(&wq, &__wait,      \
41a1431b1 Peter Zijlstra 2013-10-02  285                                        
             state, NULL);      \
41a1431b1 Peter Zijlstra 2013-10-02  286                                goto 
__out;                             \
41a1431b1 Peter Zijlstra 2013-10-02  287                        }               
                                \
41a1431b1 Peter Zijlstra 2013-10-02  288                        break;          
                                \
41a1431b1 Peter Zijlstra 2013-10-02  289                }                       
                                \
41a1431b1 Peter Zijlstra 2013-10-02  290                                        
                                \
41a1431b1 Peter Zijlstra 2013-10-02  291                cmd;                    
                                \
41a1431b1 Peter Zijlstra 2013-10-02  292        }                               
                                \
41a1431b1 Peter Zijlstra 2013-10-02  293        finish_wait(&wq, &__wait);      
                                \
35a2af94c Peter Zijlstra 2013-10-02  294  __out:        __ret;                  
                                        \
35a2af94c Peter Zijlstra 2013-10-02  295  })
41a1431b1 Peter Zijlstra 2013-10-02  296  
^1da177e4 Linus Torvalds 2005-04-16  297  #define __wait_event(wq, condition)   
                                \
35a2af94c Peter Zijlstra 2013-10-02  298        (void)___wait_event(wq, 
condition, TASK_UNINTERRUPTIBLE, 0, 0,  \
35a2af94c Peter Zijlstra 2013-10-02  299                            schedule())
^1da177e4 Linus Torvalds 2005-04-16  300  
^1da177e4 Linus Torvalds 2005-04-16  301  /**
^1da177e4 Linus Torvalds 2005-04-16  302   * wait_event - sleep until a 
condition gets true
^1da177e4 Linus Torvalds 2005-04-16  303   * @wq: the waitqueue to wait on
^1da177e4 Linus Torvalds 2005-04-16  304   * @condition: a C expression for the 
event to wait for
^1da177e4 Linus Torvalds 2005-04-16  305   *
^1da177e4 Linus Torvalds 2005-04-16  306   * The process is put to sleep 
(TASK_UNINTERRUPTIBLE) until the
^1da177e4 Linus Torvalds 2005-04-16  307   * @condition evaluates to true. The 
@condition is checked each time
^1da177e4 Linus Torvalds 2005-04-16  308   * the waitqueue @wq is woken up.
^1da177e4 Linus Torvalds 2005-04-16  309   *
^1da177e4 Linus Torvalds 2005-04-16  310   * wake_up() has to be called after 
changing any variable that could
^1da177e4 Linus Torvalds 2005-04-16  311   * change the result of the wait 
condition.
^1da177e4 Linus Torvalds 2005-04-16  312   */
^1da177e4 Linus Torvalds 2005-04-16  313  #define wait_event(wq, condition)     
                                \
^1da177e4 Linus Torvalds 2005-04-16  314  do {                                  
                                \
e22b886a8 Peter Zijlstra 2014-09-24  315        might_sleep();                  
                                \
^1da177e4 Linus Torvalds 2005-04-16  316        if (condition)                  
                                \
^1da177e4 Linus Torvalds 2005-04-16  317                break;                  
                                \
^1da177e4 Linus Torvalds 2005-04-16  318        __wait_event(wq, condition);    
                                \
^1da177e4 Linus Torvalds 2005-04-16  319  } while (0)
^1da177e4 Linus Torvalds 2005-04-16  320  
2c5612465 Peter Zijlstra 2015-02-03  321  #define __io_wait_event(wq, 
condition)                                        \
2c5612465 Peter Zijlstra 2015-02-03  322        (void)___wait_event(wq, 
condition, TASK_UNINTERRUPTIBLE, 0, 0,  \
2c5612465 Peter Zijlstra 2015-02-03  323                            
io_schedule())
2c5612465 Peter Zijlstra 2015-02-03  324  
2c5612465 Peter Zijlstra 2015-02-03  325  /*
2c5612465 Peter Zijlstra 2015-02-03  326   * io_wait_event() -- like 
wait_event() but with io_schedule()
2c5612465 Peter Zijlstra 2015-02-03  327   */
2c5612465 Peter Zijlstra 2015-02-03  328  #define io_wait_event(wq, condition)  
                                \
2c5612465 Peter Zijlstra 2015-02-03  329  do {                                  
                                \
2c5612465 Peter Zijlstra 2015-02-03  330        might_sleep();                  
                                \
2c5612465 Peter Zijlstra 2015-02-03  331        if (condition)                  
                                \
2c5612465 Peter Zijlstra 2015-02-03  332                break;                  
                                \
2c5612465 Peter Zijlstra 2015-02-03  333        __io_wait_event(wq, condition); 
                                \
2c5612465 Peter Zijlstra 2015-02-03  334  } while (0)
2c5612465 Peter Zijlstra 2015-02-03  335  
36df04bc5 Peter Zijlstra 2014-10-29  336  #define __wait_event_freezable(wq, 
condition)                         \
36df04bc5 Peter Zijlstra 2014-10-29  337        ___wait_event(wq, condition, 
TASK_INTERRUPTIBLE, 0, 0,          \
36df04bc5 Peter Zijlstra 2014-10-29  338                            schedule(); 
try_to_freeze())
36df04bc5 Peter Zijlstra 2014-10-29  339  
36df04bc5 Peter Zijlstra 2014-10-29  340  /**
f4bcfa1da Stafford Horne 2016-02-23  341   * wait_event_freezable - sleep (or 
freeze) until a condition gets true
36df04bc5 Peter Zijlstra 2014-10-29  342   * @wq: the waitqueue to wait on
36df04bc5 Peter Zijlstra 2014-10-29  343   * @condition: a C expression for the 
event to wait for
36df04bc5 Peter Zijlstra 2014-10-29  344   *
36df04bc5 Peter Zijlstra 2014-10-29  345   * The process is put to sleep 
(TASK_INTERRUPTIBLE -- so as not to contribute
36df04bc5 Peter Zijlstra 2014-10-29  346   * to system load) until the 
@condition evaluates to true. The
36df04bc5 Peter Zijlstra 2014-10-29  347   * @condition is checked each time 
the waitqueue @wq is woken up.
36df04bc5 Peter Zijlstra 2014-10-29  348   *
36df04bc5 Peter Zijlstra 2014-10-29  349   * wake_up() has to be called after 
changing any variable that could
36df04bc5 Peter Zijlstra 2014-10-29  350   * change the result of the wait 
condition.
36df04bc5 Peter Zijlstra 2014-10-29  351   */
36df04bc5 Peter Zijlstra 2014-10-29  352  #define wait_event_freezable(wq, 
condition)                           \
36df04bc5 Peter Zijlstra 2014-10-29  353  ({                                    
                                \
36df04bc5 Peter Zijlstra 2014-10-29  354        int __ret = 0;                  
                                \
36df04bc5 Peter Zijlstra 2014-10-29  355        might_sleep();                  
                                \
36df04bc5 Peter Zijlstra 2014-10-29  356        if (!(condition))               
                                \
36df04bc5 Peter Zijlstra 2014-10-29  357                __ret = 
__wait_event_freezable(wq, condition);          \
36df04bc5 Peter Zijlstra 2014-10-29  358        __ret;                          
                                \
36df04bc5 Peter Zijlstra 2014-10-29  359  })
36df04bc5 Peter Zijlstra 2014-10-29  360  
35a2af94c Peter Zijlstra 2013-10-02  361  #define __wait_event_timeout(wq, 
condition, timeout)                  \
35a2af94c Peter Zijlstra 2013-10-02  362        ___wait_event(wq, 
___wait_cond_timeout(condition),              \
35a2af94c Peter Zijlstra 2013-10-02  363                      
TASK_UNINTERRUPTIBLE, 0, timeout,                 \
35a2af94c Peter Zijlstra 2013-10-02  364                      __ret = 
schedule_timeout(__ret))
^1da177e4 Linus Torvalds 2005-04-16  365  
^1da177e4 Linus Torvalds 2005-04-16  366  /**
^1da177e4 Linus Torvalds 2005-04-16  367   * wait_event_timeout - sleep until a 
condition gets true or a timeout elapses
^1da177e4 Linus Torvalds 2005-04-16  368   * @wq: the waitqueue to wait on
^1da177e4 Linus Torvalds 2005-04-16  369   * @condition: a C expression for the 
event to wait for
^1da177e4 Linus Torvalds 2005-04-16  370   * @timeout: timeout, in jiffies
^1da177e4 Linus Torvalds 2005-04-16  371   *
^1da177e4 Linus Torvalds 2005-04-16  372   * The process is put to sleep 
(TASK_UNINTERRUPTIBLE) until the
^1da177e4 Linus Torvalds 2005-04-16  373   * @condition evaluates to true. The 
@condition is checked each time
^1da177e4 Linus Torvalds 2005-04-16  374   * the waitqueue @wq is woken up.
^1da177e4 Linus Torvalds 2005-04-16  375   *
^1da177e4 Linus Torvalds 2005-04-16  376   * wake_up() has to be called after 
changing any variable that could
^1da177e4 Linus Torvalds 2005-04-16  377   * change the result of the wait 
condition.
^1da177e4 Linus Torvalds 2005-04-16  378   *
6b44f5190 Scot Doyle     2014-08-24  379   * Returns:
6b44f5190 Scot Doyle     2014-08-24  380   * 0 if the @condition evaluated to 
%false after the @timeout elapsed,
6b44f5190 Scot Doyle     2014-08-24  381   * 1 if the @condition evaluated to 
%true after the @timeout elapsed,
6b44f5190 Scot Doyle     2014-08-24  382   * or the remaining jiffies (at least 
1) if the @condition evaluated
6b44f5190 Scot Doyle     2014-08-24  383   * to %true before the @timeout 
elapsed.
^1da177e4 Linus Torvalds 2005-04-16  384   */
^1da177e4 Linus Torvalds 2005-04-16  385  #define wait_event_timeout(wq, 
condition, timeout)                    \
^1da177e4 Linus Torvalds 2005-04-16  386  ({                                    
                                \
^1da177e4 Linus Torvalds 2005-04-16  387        long __ret = timeout;           
                                \
e22b886a8 Peter Zijlstra 2014-09-24  388        might_sleep();                  
                                \
8922915b3 Oleg Nesterov  2013-10-07  389        if 
(!___wait_cond_timeout(condition))                           \
35a2af94c Peter Zijlstra 2013-10-02  390                __ret = 
__wait_event_timeout(wq, condition, timeout);   \
^1da177e4 Linus Torvalds 2005-04-16  391        __ret;                          
                                \
^1da177e4 Linus Torvalds 2005-04-16  392  })
^1da177e4 Linus Torvalds 2005-04-16  393  
36df04bc5 Peter Zijlstra 2014-10-29  394  #define 
__wait_event_freezable_timeout(wq, condition, timeout)                \
36df04bc5 Peter Zijlstra 2014-10-29  395        ___wait_event(wq, 
___wait_cond_timeout(condition),              \
36df04bc5 Peter Zijlstra 2014-10-29  396                      
TASK_INTERRUPTIBLE, 0, timeout,                   \
36df04bc5 Peter Zijlstra 2014-10-29  397                      __ret = 
schedule_timeout(__ret); try_to_freeze())
36df04bc5 Peter Zijlstra 2014-10-29  398  
36df04bc5 Peter Zijlstra 2014-10-29  399  /*
36df04bc5 Peter Zijlstra 2014-10-29  400   * like wait_event_timeout() -- 
except it uses TASK_INTERRUPTIBLE to avoid
36df04bc5 Peter Zijlstra 2014-10-29  401   * increasing load and is freezable.
36df04bc5 Peter Zijlstra 2014-10-29  402   */
36df04bc5 Peter Zijlstra 2014-10-29  403  #define 
wait_event_freezable_timeout(wq, condition, timeout)          \
36df04bc5 Peter Zijlstra 2014-10-29  404  ({                                    
                                \
36df04bc5 Peter Zijlstra 2014-10-29  405        long __ret = timeout;           
                                \
36df04bc5 Peter Zijlstra 2014-10-29  406        might_sleep();                  
                                \
36df04bc5 Peter Zijlstra 2014-10-29  407        if 
(!___wait_cond_timeout(condition))                           \
36df04bc5 Peter Zijlstra 2014-10-29  408                __ret = 
__wait_event_freezable_timeout(wq, condition, timeout); \
36df04bc5 Peter Zijlstra 2014-10-29  409        __ret;                          
                                \
36df04bc5 Peter Zijlstra 2014-10-29  410  })
36df04bc5 Peter Zijlstra 2014-10-29  411  
9f3520c31 Yuanhan Liu    2015-05-08  412  #define 
__wait_event_exclusive_cmd(wq, condition, cmd1, cmd2)         \
9f3520c31 Yuanhan Liu    2015-05-08  413        (void)___wait_event(wq, 
condition, TASK_UNINTERRUPTIBLE, 1, 0,  \
9f3520c31 Yuanhan Liu    2015-05-08  414                            cmd1; 
schedule(); cmd2)
9f3520c31 Yuanhan Liu    2015-05-08  415  /*
9f3520c31 Yuanhan Liu    2015-05-08  416   * Just like wait_event_cmd(), except 
it sets exclusive flag
9f3520c31 Yuanhan Liu    2015-05-08  417   */
9f3520c31 Yuanhan Liu    2015-05-08  418  #define wait_event_exclusive_cmd(wq, 
condition, cmd1, cmd2)           \
9f3520c31 Yuanhan Liu    2015-05-08  419  do {                                  
                                \
9f3520c31 Yuanhan Liu    2015-05-08  420        if (condition)                  
                                \
9f3520c31 Yuanhan Liu    2015-05-08  421                break;                  
                                \
9f3520c31 Yuanhan Liu    2015-05-08  422        __wait_event_exclusive_cmd(wq, 
condition, cmd1, cmd2);          \
9f3520c31 Yuanhan Liu    2015-05-08  423  } while (0)
9f3520c31 Yuanhan Liu    2015-05-08  424  
82e06c811 Shaohua Li     2013-11-14  425  #define __wait_event_cmd(wq, 
condition, cmd1, cmd2)                   \
82e06c811 Shaohua Li     2013-11-14  426        (void)___wait_event(wq, 
condition, TASK_UNINTERRUPTIBLE, 0, 0,  \
82e06c811 Shaohua Li     2013-11-14  427                            cmd1; 
schedule(); cmd2)
82e06c811 Shaohua Li     2013-11-14  428  
82e06c811 Shaohua Li     2013-11-14  429  /**
82e06c811 Shaohua Li     2013-11-14  430   * wait_event_cmd - sleep until a 
condition gets true
82e06c811 Shaohua Li     2013-11-14  431   * @wq: the waitqueue to wait on
82e06c811 Shaohua Li     2013-11-14  432   * @condition: a C expression for the 
event to wait for
f434f7afa Masanari Iida  2014-01-22  433   * @cmd1: the command will be 
executed before sleep
f434f7afa Masanari Iida  2014-01-22  434   * @cmd2: the command will be 
executed after sleep
82e06c811 Shaohua Li     2013-11-14  435   *
82e06c811 Shaohua Li     2013-11-14  436   * The process is put to sleep 
(TASK_UNINTERRUPTIBLE) until the
82e06c811 Shaohua Li     2013-11-14  437   * @condition evaluates to true. The 
@condition is checked each time
82e06c811 Shaohua Li     2013-11-14  438   * the waitqueue @wq is woken up.
82e06c811 Shaohua Li     2013-11-14  439   *
82e06c811 Shaohua Li     2013-11-14  440   * wake_up() has to be called after 
changing any variable that could
82e06c811 Shaohua Li     2013-11-14  441   * change the result of the wait 
condition.
82e06c811 Shaohua Li     2013-11-14  442   */
82e06c811 Shaohua Li     2013-11-14  443  #define wait_event_cmd(wq, condition, 
cmd1, cmd2)                     \
82e06c811 Shaohua Li     2013-11-14  444  do {                                  
                                \
82e06c811 Shaohua Li     2013-11-14  445        if (condition)                  
                                \
82e06c811 Shaohua Li     2013-11-14  446                break;                  
                                \
82e06c811 Shaohua Li     2013-11-14  447        __wait_event_cmd(wq, condition, 
cmd1, cmd2);                    \
82e06c811 Shaohua Li     2013-11-14  448  } while (0)
82e06c811 Shaohua Li     2013-11-14  449  
35a2af94c Peter Zijlstra 2013-10-02  450  #define 
__wait_event_interruptible(wq, condition)                     \
35a2af94c Peter Zijlstra 2013-10-02 @451        ___wait_event(wq, condition, 
TASK_INTERRUPTIBLE, 0, 0,          \
f13f4c41c Peter Zijlstra 2013-10-02  452                      schedule())
^1da177e4 Linus Torvalds 2005-04-16  453  
^1da177e4 Linus Torvalds 2005-04-16  454  /**
^1da177e4 Linus Torvalds 2005-04-16  455   * wait_event_interruptible - sleep 
until a condition gets true
^1da177e4 Linus Torvalds 2005-04-16  456   * @wq: the waitqueue to wait on
^1da177e4 Linus Torvalds 2005-04-16  457   * @condition: a C expression for the 
event to wait for
^1da177e4 Linus Torvalds 2005-04-16  458   *
^1da177e4 Linus Torvalds 2005-04-16  459   * The process is put to sleep 
(TASK_INTERRUPTIBLE) until the
^1da177e4 Linus Torvalds 2005-04-16  460   * @condition evaluates to true or a 
signal is received.
^1da177e4 Linus Torvalds 2005-04-16  461   * The @condition is checked each 
time the waitqueue @wq is woken up.
^1da177e4 Linus Torvalds 2005-04-16  462   *
^1da177e4 Linus Torvalds 2005-04-16  463   * wake_up() has to be called after 
changing any variable that could
^1da177e4 Linus Torvalds 2005-04-16  464   * change the result of the wait 
condition.
^1da177e4 Linus Torvalds 2005-04-16  465   *
^1da177e4 Linus Torvalds 2005-04-16  466   * The function will return 
-ERESTARTSYS if it was interrupted by a
^1da177e4 Linus Torvalds 2005-04-16  467   * signal and 0 if @condition 
evaluated to true.
^1da177e4 Linus Torvalds 2005-04-16  468   */
^1da177e4 Linus Torvalds 2005-04-16  469  #define wait_event_interruptible(wq, 
condition)                               \
^1da177e4 Linus Torvalds 2005-04-16  470  ({                                    
                                \
^1da177e4 Linus Torvalds 2005-04-16  471        int __ret = 0;                  
                                \
e22b886a8 Peter Zijlstra 2014-09-24  472        might_sleep();                  
                                \
^1da177e4 Linus Torvalds 2005-04-16 @473        if (!(condition))               
                                \
35a2af94c Peter Zijlstra 2013-10-02  474                __ret = 
__wait_event_interruptible(wq, condition);      \
^1da177e4 Linus Torvalds 2005-04-16  475        __ret;                          
                                \
^1da177e4 Linus Torvalds 2005-04-16  476  })

:::::: The code at line 473 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torva...@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torva...@ppc970.osdl.org>

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

Attachment: .config.gz
Description: Binary data

Reply via email to