Hi,

[auto build test ERROR on asm-generic/master]
[also build test ERROR on v4.7-rc3 next-20160615]
[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/Pan-Xinhui/locking-qrwlock-Let-qrwlock-has-same-layout-regardless-of-the-endian/20160615-172044
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic master
config: x86_64-randconfig-x014-201624 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

   In file included from arch/x86/include/asm/qrwlock.h:5:0,
                    from arch/x86/include/asm/spinlock.h:219,
                    from include/linux/spinlock.h:87,
                    from include/linux/mmzone.h:7,
                    from include/linux/gfp.h:5,
                    from include/linux/slab.h:14,
                    from include/linux/crypto.h:24,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/asm-generic/qrwlock.h: In function 'queued_read_can_lock':
>> include/asm-generic/qrwlock.h:40:29: error: '_QW_SHIFT' undeclared (first 
>> use in this function)
    #define _QW_WMASK (0xffU << _QW_SHIFT) /* Writer mask     */
                                ^
>> include/asm-generic/qrwlock.h:55:38: note: in expansion of macro '_QW_WMASK'
     return !(atomic_read(&lock->cnts) & _QW_WMASK);
                                         ^~~~~~~~~
   include/asm-generic/qrwlock.h:40:29: note: each undeclared identifier is 
reported only once for each function it appears in
    #define _QW_WMASK (0xffU << _QW_SHIFT) /* Writer mask     */
                                ^
>> include/asm-generic/qrwlock.h:55:38: note: in expansion of macro '_QW_WMASK'
     return !(atomic_read(&lock->cnts) & _QW_WMASK);
                                         ^~~~~~~~~
   In file included from arch/x86/include/asm/atomic.h:4:0,
                    from include/linux/atomic.h:4,
                    from include/linux/crypto.h:20,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/asm-generic/qrwlock.h: In function 'queued_read_trylock':
>> include/asm-generic/qrwlock.h:40:29: error: '_QW_SHIFT' undeclared (first 
>> use in this function)
    #define _QW_WMASK (0xffU << _QW_SHIFT) /* Writer mask     */
                                ^
   include/linux/compiler.h:169:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   include/asm-generic/qrwlock.h:77:22: note: in expansion of macro '_QW_WMASK'
     if (likely(!(cnts & _QW_WMASK))) {
                         ^~~~~~~~~
   include/asm-generic/qrwlock.h: In function 'queued_write_trylock':
   include/asm-generic/qrwlock.h:39:30: error: '_QW_SHIFT' undeclared (first 
use in this function)
    #define _QW_LOCKED (0xffU << _QW_SHIFT) /* A writer holds the lock */
                                 ^
   include/linux/compiler.h:169:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
>> include/asm-generic/qrwlock.h:100:24: note: in expansion of macro 
>> '_QW_LOCKED'
              cnts, cnts | _QW_LOCKED) == cnts);
                           ^~~~~~~~~~
   include/asm-generic/qrwlock.h: In function 'queued_read_lock':
>> include/asm-generic/qrwlock.h:40:29: error: '_QW_SHIFT' undeclared (first 
>> use in this function)
    #define _QW_WMASK (0xffU << _QW_SHIFT) /* Writer mask     */
                                ^
   include/linux/compiler.h:169:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   include/asm-generic/qrwlock.h:111:22: note: in expansion of macro '_QW_WMASK'
     if (likely(!(cnts & _QW_WMASK)))
                         ^~~~~~~~~
   In file included from arch/x86/include/asm/qrwlock.h:5:0,
                    from arch/x86/include/asm/spinlock.h:219,
                    from include/linux/spinlock.h:87,
                    from include/linux/mmzone.h:7,
                    from include/linux/gfp.h:5,
                    from include/linux/slab.h:14,
                    from include/linux/crypto.h:24,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/asm-generic/qrwlock.h: In function 'queued_write_lock':
   include/asm-generic/qrwlock.h:39:30: error: '_QW_SHIFT' undeclared (first 
use in this function)
    #define _QW_LOCKED (0xffU << _QW_SHIFT) /* A writer holds the lock */
                                 ^
   include/asm-generic/qrwlock.h:125:45: note: in expansion of macro 
'_QW_LOCKED'
     if (atomic_cmpxchg_acquire(&lock->cnts, 0, _QW_LOCKED) == 0)
                                                ^~~~~~~~~~
   make[2]: *** [arch/x86/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +/_QW_SHIFT +40 include/asm-generic/qrwlock.h

    33  #else
    34  #define _QR_SHIFT       0               /* Reader count shift      */
    35  #define _QW_SHIFT       24              /* Writer mode shift    */
    36  #endif
    37  
    38  #define _QW_WAITING     (1U << _QW_SHIFT)       /* A writer is waiting  
   */
  > 39  #define _QW_LOCKED      (0xffU << _QW_SHIFT)    /* A writer holds the 
lock */
  > 40  #define _QW_WMASK       (0xffU << _QW_SHIFT)    /* Writer mask          
   */
    41  #define _QR_BIAS        (1U << _QR_SHIFT)
    42  
    43  /*
    44   * External function declarations
    45   */
    46  extern void queued_read_lock_slowpath(struct qrwlock *lock, u32 cnts);
    47  extern void queued_write_lock_slowpath(struct qrwlock *lock);
    48  
    49  /**
    50   * queued_read_can_lock- would read_trylock() succeed?
    51   * @lock: Pointer to queue rwlock structure
    52   */
    53  static inline int queued_read_can_lock(struct qrwlock *lock)
    54  {
  > 55          return !(atomic_read(&lock->cnts) & _QW_WMASK);
    56  }
    57  
    58  /**
    59   * queued_write_can_lock- would write_trylock() succeed?
    60   * @lock: Pointer to queue rwlock structure
    61   */
    62  static inline int queued_write_can_lock(struct qrwlock *lock)
    63  {
    64          return !atomic_read(&lock->cnts);
    65  }
    66  
    67  /**
    68   * queued_read_trylock - try to acquire read lock of a queue rwlock
    69   * @lock : Pointer to queue rwlock structure
    70   * Return: 1 if lock acquired, 0 if failed
    71   */
    72  static inline int queued_read_trylock(struct qrwlock *lock)
    73  {
    74          u32 cnts;
    75  
    76          cnts = atomic_read(&lock->cnts);
    77          if (likely(!(cnts & _QW_WMASK))) {
    78                  cnts = (u32)atomic_add_return_acquire(_QR_BIAS, 
&lock->cnts);
    79                  if (likely(!(cnts & _QW_WMASK)))
    80                          return 1;
    81                  atomic_sub(_QR_BIAS, &lock->cnts);
    82          }
    83          return 0;
    84  }
    85  
    86  /**
    87   * queued_write_trylock - try to acquire write lock of a queue rwlock
    88   * @lock : Pointer to queue rwlock structure
    89   * Return: 1 if lock acquired, 0 if failed
    90   */
    91  static inline int queued_write_trylock(struct qrwlock *lock)
    92  {
    93          u32 cnts;
    94  
    95          cnts = atomic_read(&lock->cnts);
    96          if (unlikely(cnts))
    97                  return 0;
    98  
    99          return likely(atomic_cmpxchg_acquire(&lock->cnts,
 > 100                                               cnts, cnts | _QW_LOCKED) 
 > == cnts);
   101  }
   102  /**
   103   * queued_read_lock - acquire read lock of a queue rwlock

---
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