Hi Martin,

I love your patch! Yet something to improve:

[auto build test ERROR on bpf-next/master]

url:    
https://github.com/0day-ci/linux/commits/Martin-KaFai-Lau/bpf-Introduce-bpf-sk-local-storage/20190426-192951
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>

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

   In file included from arch/arm64/include/asm/spinlock_types.h:23:0,
                    from include/linux/spinlock_types.h:13,
                    from net//core/bpf_sk_storage.c:3:
>> include/asm-generic/qspinlock_types.h:33:3: error: unknown type name 
>> 'atomic_t'
      atomic_t val;
      ^~~~~~~~
>> include/asm-generic/qspinlock_types.h:51:4: error: unknown type name 'u16'
       u16 tail;
       ^~~
   include/asm-generic/qspinlock_types.h:52:4: error: unknown type name 'u16'
       u16 locked_pending;
       ^~~
>> include/asm-generic/qspinlock_types.h:55:4: error: unknown type name 'u8'
       u8 reserved[2];
       ^~
   include/asm-generic/qspinlock_types.h:56:4: error: unknown type name 'u8'
       u8 pending;
       ^~
   include/asm-generic/qspinlock_types.h:57:4: error: unknown type name 'u8'
       u8 locked;
       ^~
   In file included from ./arch/arm64/include/generated/asm/qspinlock.h:1:0,
                    from arch/arm64/include/asm/spinlock.h:20,
                    from include/linux/spinlock.h:88,
                    from include/linux/seqlock.h:36,
                    from include/linux/time.h:6,
                    from include/linux/ktime.h:24,
                    from include/linux/timer.h:6,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:12,
                    from net//core/bpf_sk_storage.c:8:
   include/asm-generic/qspinlock.h: In function 'queued_spin_is_locked':
>> include/asm-generic/qspinlock.h:35:21: error: passing argument 1 of 
>> 'atomic_read' from incompatible pointer type 
>> [-Werror=incompatible-pointer-types]
     return atomic_read(&lock->val);
                        ^
   In file included from arch/arm64/include/asm/atomic.h:169:0,
                    from include/linux/atomic.h:7,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/asm-generic/atomic-instrumented.h:24:1: note: expected 'const 
atomic_t * {aka const struct <anonymous> *}' but argument is of type 'int *'
    atomic_read(const atomic_t *v)
    ^~~~~~~~~~~
   In file included from ./arch/arm64/include/generated/asm/qspinlock.h:1:0,
                    from arch/arm64/include/asm/spinlock.h:20,
                    from include/linux/spinlock.h:88,
                    from include/linux/seqlock.h:36,
                    from include/linux/time.h:6,
                    from include/linux/ktime.h:24,
                    from include/linux/timer.h:6,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:12,
                    from net//core/bpf_sk_storage.c:8:
   include/asm-generic/qspinlock.h: In function 'queued_spin_value_unlocked':
   include/asm-generic/qspinlock.h:50:22: error: passing argument 1 of 
'atomic_read' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
     return !atomic_read(&lock.val);
                         ^
   In file included from arch/arm64/include/asm/atomic.h:169:0,
                    from include/linux/atomic.h:7,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/asm-generic/atomic-instrumented.h:24:1: note: expected 'const 
atomic_t * {aka const struct <anonymous> *}' but argument is of type 'int *'
    atomic_read(const atomic_t *v)
    ^~~~~~~~~~~
   In file included from ./arch/arm64/include/generated/asm/qspinlock.h:1:0,
                    from arch/arm64/include/asm/spinlock.h:20,
                    from include/linux/spinlock.h:88,
                    from include/linux/seqlock.h:36,
                    from include/linux/time.h:6,
                    from include/linux/ktime.h:24,
                    from include/linux/timer.h:6,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:12,
                    from net//core/bpf_sk_storage.c:8:
   include/asm-generic/qspinlock.h: In function 'queued_spin_is_contended':
   include/asm-generic/qspinlock.h:60:21: error: passing argument 1 of 
'atomic_read' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
     return atomic_read(&lock->val) & ~_Q_LOCKED_MASK;
                        ^
   In file included from arch/arm64/include/asm/atomic.h:169:0,
                    from include/linux/atomic.h:7,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/asm-generic/atomic-instrumented.h:24:1: note: expected 'const 
atomic_t * {aka const struct <anonymous> *}' but argument is of type 'int *'
    atomic_read(const atomic_t *v)
    ^~~~~~~~~~~
   In file included from ./arch/arm64/include/generated/asm/qspinlock.h:1:0,
                    from arch/arm64/include/asm/spinlock.h:20,
                    from include/linux/spinlock.h:88,
                    from include/linux/seqlock.h:36,
                    from include/linux/time.h:6,
                    from include/linux/ktime.h:24,
                    from include/linux/timer.h:6,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:12,
                    from net//core/bpf_sk_storage.c:8:
   include/asm-generic/qspinlock.h: In function 'queued_spin_trylock':
   include/asm-generic/qspinlock.h:69:24: error: passing argument 1 of 
'atomic_read' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
     u32 val = atomic_read(&lock->val);
                           ^
   In file included from arch/arm64/include/asm/atomic.h:169:0,
                    from include/linux/atomic.h:7,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/asm-generic/atomic-instrumented.h:24:1: note: expected 'const 
atomic_t * {aka const struct <anonymous> *}' but argument is of type 'int *'
    atomic_read(const atomic_t *v)
    ^~~~~~~~~~~
   In file included from include/uapi/linux/swab.h:6:0,
                    from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/big_endian.h:13,
                    from include/linux/byteorder/big_endian.h:5,
                    from arch/arm64/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/qrwlock_types.h:6,
                    from arch/arm64/include/asm/spinlock_types.h:24,
                    from include/linux/spinlock_types.h:13,
                    from net//core/bpf_sk_storage.c:3:
>> include/asm-generic/qspinlock.h:74:43: error: passing argument 1 of 
>> 'atomic_try_cmpxchg_acquire' from incompatible pointer type 
>> [-Werror=incompatible-pointer-types]
     return likely(atomic_try_cmpxchg_acquire(&lock->val, &val, _Q_LOCKED_VAL));
                                              ^
   include/linux/compiler.h:76:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   In file included from include/linux/atomic.h:74:0,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/linux/atomic-fallback.h:928:1: note: expected 'atomic_t * {aka 
struct <anonymous> *}' but argument is of type 'int *'
    atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/uapi/linux/swab.h:6:0,
                    from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/big_endian.h:13,
                    from include/linux/byteorder/big_endian.h:5,
                    from arch/arm64/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/qrwlock_types.h:6,
                    from arch/arm64/include/asm/spinlock_types.h:24,
                    from include/linux/spinlock_types.h:13,
                    from net//core/bpf_sk_storage.c:3:
   include/asm-generic/qspinlock.h: In function 'queued_spin_lock':
   include/asm-generic/qspinlock.h:87:40: error: passing argument 1 of 
'atomic_try_cmpxchg_acquire' from incompatible pointer type 
[-Werror=incompatible-pointer-types]
     if (likely(atomic_try_cmpxchg_acquire(&lock->val, &val, _Q_LOCKED_VAL)))
                                           ^
   include/linux/compiler.h:76:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   In file included from include/linux/atomic.h:74:0,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/arm64/include/asm/bitops.h:37,
                    from include/linux/bitops.h:19,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from net//core/bpf_sk_storage.c:3:
   include/linux/atomic-fallback.h:928:1: note: expected 'atomic_t * {aka 
struct <anonymous> *}' but argument is of type 'int *'
    atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/fs.h:25:0,
                    from include/linux/compat.h:17,
                    from include/linux/ethtool.h:17,
                    from include/linux/netdevice.h:41,
                    from include/net/sock.h:51,
                    from net//core/bpf_sk_storage.c:10:
   include/linux/semaphore.h: In function 'sema_init':
>> include/linux/semaphore.h:35:17: warning: braces around scalar initializer
     *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val);
                    ^~~~~~~~~
   include/linux/semaphore.h:35:17: note: (near initialization for 
'(anonymous).raw_lock.<anonymous>.val')
   cc1: some warnings being treated as errors

vim +/atomic_t +33 include/asm-generic/qspinlock_types.h

a33fda35 Waiman Long 2015-04-24  30  
a33fda35 Waiman Long 2015-04-24  31  typedef struct qspinlock {
625e88be Will Deacon 2018-04-26  32     union {
a33fda35 Waiman Long 2015-04-24 @33             atomic_t val;
625e88be Will Deacon 2018-04-26  34  
625e88be Will Deacon 2018-04-26  35             /*
625e88be Will Deacon 2018-04-26  36              * By using the whole 2nd least 
significant byte for the
625e88be Will Deacon 2018-04-26  37              * pending bit, we can allow 
better optimization of the lock
625e88be Will Deacon 2018-04-26  38              * acquisition for the pending 
bit holder.
625e88be Will Deacon 2018-04-26  39              */
625e88be Will Deacon 2018-04-26  40  #ifdef __LITTLE_ENDIAN
625e88be Will Deacon 2018-04-26  41             struct {
625e88be Will Deacon 2018-04-26  42                     u8      locked;
625e88be Will Deacon 2018-04-26  43                     u8      pending;
625e88be Will Deacon 2018-04-26  44             };
625e88be Will Deacon 2018-04-26  45             struct {
625e88be Will Deacon 2018-04-26  46                     u16     locked_pending;
625e88be Will Deacon 2018-04-26  47                     u16     tail;
625e88be Will Deacon 2018-04-26  48             };
625e88be Will Deacon 2018-04-26  49  #else
625e88be Will Deacon 2018-04-26  50             struct {
625e88be Will Deacon 2018-04-26 @51                     u16     tail;
625e88be Will Deacon 2018-04-26  52                     u16     locked_pending;
625e88be Will Deacon 2018-04-26  53             };
625e88be Will Deacon 2018-04-26  54             struct {
625e88be Will Deacon 2018-04-26 @55                     u8      reserved[2];
625e88be Will Deacon 2018-04-26  56                     u8      pending;
625e88be Will Deacon 2018-04-26  57                     u8      locked;
625e88be Will Deacon 2018-04-26  58             };
625e88be Will Deacon 2018-04-26  59  #endif
625e88be Will Deacon 2018-04-26  60     };
a33fda35 Waiman Long 2015-04-24  61  } arch_spinlock_t;
a33fda35 Waiman Long 2015-04-24  62  

:::::: The code at line 33 was first introduced by commit
:::::: a33fda35e3a7655fb7df756ed67822afb5ed5e8d locking/qspinlock: Introduce a 
simple generic 4-byte queued spinlock

:::::: TO: Waiman Long <waiman.l...@hp.com>
:::::: CC: Ingo Molnar <mi...@kernel.org>

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