Hi Wang, Thank you for the patch! Yet something to improve: [auto build test ERROR on powerpc/next] [also build test ERROR on char-misc/char-misc-testing staging/staging-testing v5.7-rc1 next-20200415] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Wang-Wenhu/drivers-uio-new-driver-uio_fsl_85xx_cache_sram/20200416-040633 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-allyesconfig (attached as .config) compiler: powerpc64-linux-gcc (GCC) 9.3.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 COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): WARNING: unmet direct dependencies detected for ARCH_32BIT_OFF_T Depends on !64BIT Selected by - PPC && PPC32 In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:14:3: error: conflicting types for 'atomic64_t' 14 | } atomic64_t; | ^~~~~~~~~~ In file included from include/linux/page-flags.h:9, from kernel/bounds.c:10: include/linux/types.h:178:3: note: previous declaration of 'atomic64_t' was here 178 | } atomic64_t; | ^~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:18:12: error: conflicting types for 'atomic64_read' 18 | extern s64 atomic64_read(const atomic64_t | ^~~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:300:23: note: previous definition of 'atomic64_read' was here 300 | static __inline__ s64 atomic64_read(const atomic64_t | ^~~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:19:13: error: conflicting types for 'atomic64_set' 19 | extern void atomic64_set(atomic64_t s64 i); | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:309:24: note: previous definition of 'atomic64_set' was here 309 | static __inline__ void atomic64_set(atomic64_t s64 i) | ^~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:32: warning: "ATOMIC64_OPS" redefined 32 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op) | In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:380: note: this is the location of the previous definition 380 | #define ATOMIC64_OPS(op, asm_op) | In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:24:14: error: conflicting types for 'atomic64_add' 24 | extern void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ >> include/asm-generic/atomic64.h:32:26: note: in expansion of macro 'ATOMIC64_OP' 32 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~ >> include/asm-generic/atomic64.h:34:1: note: in expansion of macro 'ATOMIC64_OPS' 34 | ATOMIC64_OPS(add) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:315:24: note: previous definition of 'atomic64_add' was here 315 | static __inline__ void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ >> arch/powerpc/include/asm/atomic.h:366:2: note: in expansion of macro 'ATOMIC64_OP' 366 | ATOMIC64_OP(op, asm_op) | ^~~~~~~~~~~ >> arch/powerpc/include/asm/atomic.h:370:1: note: in expansion of macro 'ATOMIC64_OPS' 370 | ATOMIC64_OPS(add, add) | ^~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:24:14: error: conflicting types for 'atomic64_sub' 24 | extern void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ >> include/asm-generic/atomic64.h:32:26: note: in expansion of macro 'ATOMIC64_OP' 32 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~ include/asm-generic/atomic64.h:35:1: note: in expansion of macro 'ATOMIC64_OPS' 35 | ATOMIC64_OPS(sub) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:315:24: note: previous definition of 'atomic64_sub' was here 315 | static __inline__ void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ >> arch/powerpc/include/asm/atomic.h:366:2: note: in expansion of macro 'ATOMIC64_OP' 366 | ATOMIC64_OP(op, asm_op) | ^~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:371:1: note: in expansion of macro 'ATOMIC64_OPS' 371 | ATOMIC64_OPS(sub, subf) | ^~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:24:14: error: conflicting types for 'atomic64_and' 24 | extern void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ include/asm-generic/atomic64.h:38:26: note: in expansion of macro 'ATOMIC64_OP' 38 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~ include/asm-generic/atomic64.h:40:1: note: in expansion of macro 'ATOMIC64_OPS' 40 | ATOMIC64_OPS(and) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:315:24: note: previous definition of 'atomic64_and' was here 315 | static __inline__ void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ arch/powerpc/include/asm/atomic.h:381:2: note: in expansion of macro 'ATOMIC64_OP' 381 | ATOMIC64_OP(op, asm_op) | ^~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:384:1: note: in expansion of macro 'ATOMIC64_OPS' 384 | ATOMIC64_OPS(and, and) | ^~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:24:14: error: conflicting types for 'atomic64_or' 24 | extern void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ include/asm-generic/atomic64.h:38:26: note: in expansion of macro 'ATOMIC64_OP' 38 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~ include/asm-generic/atomic64.h:41:1: note: in expansion of macro 'ATOMIC64_OPS' 41 | ATOMIC64_OPS(or) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:315:24: note: previous definition of 'atomic64_or' was here 315 | static __inline__ void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ arch/powerpc/include/asm/atomic.h:381:2: note: in expansion of macro 'ATOMIC64_OP' 381 | ATOMIC64_OP(op, asm_op) | ^~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:385:1: note: in expansion of macro 'ATOMIC64_OPS' 385 | ATOMIC64_OPS(or, or) | ^~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> include/asm-generic/atomic64.h:24:14: error: conflicting types for 'atomic64_xor' 24 | extern void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ include/asm-generic/atomic64.h:38:26: note: in expansion of macro 'ATOMIC64_OP' 38 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~ include/asm-generic/atomic64.h:42:1: note: in expansion of macro 'ATOMIC64_OPS' 42 | ATOMIC64_OPS(xor) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:315:24: note: previous definition of 'atomic64_xor' was here 315 | static __inline__ void atomic64_##op(s64 a, atomic64_t | ^~~~~~~~~ arch/powerpc/include/asm/atomic.h:381:2: note: in expansion of macro 'ATOMIC64_OP' 381 | ATOMIC64_OP(op, asm_op) | ^~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:386:1: note: in expansion of macro 'ATOMIC64_OPS' 386 | ATOMIC64_OPS(xor, xor) | ^~~~~~~~~~~~ >> arch/powerpc/include/asm/atomic.h:485:34: error: conflicting types for 'atomic64_dec_if_positive' 485 | #define atomic64_dec_if_positive atomic64_dec_if_positive | ^~~~~~~~~~~~~~~~~~~~~~~~ >> include/asm-generic/atomic64.h:49:12: note: in expansion of macro 'atomic64_dec_if_positive' 49 | extern s64 atomic64_dec_if_positive(atomic64_t | ^~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:466:23: note: previous definition of 'atomic64_dec_if_positive' was here 466 | static __inline__ s64 atomic64_dec_if_positive(atomic64_t | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from arch/powerpc/include/asm/atomic.h:11, from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: >> arch/powerpc/include/asm/cmpxchg.h:482:4: error: expected identifier or '(' before '{' token 482 | ({ | ^ >> arch/powerpc/include/asm/atomic.h:487:36: note: in expansion of macro 'cmpxchg' 487 | #define atomic64_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n))) | ^~~~~~~ >> include/asm-generic/atomic64.h:51:12: note: in expansion of macro 'atomic64_cmpxchg' 51 | extern s64 atomic64_cmpxchg(atomic64_t s64 o, s64 n); | ^~~~~~~~~~~~~~~~ In file included from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: include/linux/atomic.h:66:2: error: expected identifier or '(' before '{' token 66 | ({ | ^ include/linux/atomic-fallback.h:27:2: note: in expansion of macro '__atomic_op_fence' 27 | __atomic_op_fence(xchg, __VA_ARGS__) | ^~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:493:32: note: in expansion of macro 'xchg' 493 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) | ^~~~ include/asm-generic/atomic64.h:52:12: note: in expansion of macro 'atomic64_xchg' 52 | extern s64 atomic64_xchg(atomic64_t s64 new); | ^~~~~~~~~~~~~ In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:526:35: error: conflicting types for 'atomic64_fetch_add_unless' 526 | #define atomic64_fetch_add_unless atomic64_fetch_add_unless | ^~~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/atomic64.h:53:12: note: in expansion of macro 'atomic64_fetch_add_unless' 53 | extern s64 atomic64_fetch_add_unless(atomic64_t s64 a, s64 u); | ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:505:23: note: previous definition of 'atomic64_fetch_add_unless' was here 505 | static __inline__ s64 atomic64_fetch_add_unless(atomic64_t s64 a, s64 u) | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: include/linux/atomic-fallback.h: In function 'atomic64_add_return_acquire': include/linux/atomic-fallback.h:1216:43: error: passing argument 2 of 'atomic64_add_return_relaxed' from incompatible pointer type 1216 | s64 ret = atomic64_add_return_relaxed(i, v); | ^ | | | atomic64_t Makefile arch block certs crypto drivers fs include init ipc kernel lib mm net scripts security sound source usr virt {aka struct In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:331:51: note: expected 'atomic64_t {aka 'struct but argument is of type 'atomic64_t {aka 'struct 331 | atomic64_##op##_return_relaxed(s64 a, atomic64_t | ~~~~~~~~~~~~^ arch/powerpc/include/asm/atomic.h:367:2: note: in expansion of macro 'ATOMIC64_OP_RETURN_RELAXED' 367 | ATOMIC64_OP_RETURN_RELAXED(op, asm_op) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:370:1: note: in expansion of macro 'ATOMIC64_OPS' 370 | ATOMIC64_OPS(add, add) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: include/linux/atomic-fallback.h: In function 'atomic64_add_return_release': include/linux/atomic-fallback.h:1228:40: error: passing argument 2 of 'atomic64_add_return_relaxed' from incompatible pointer type 1228 | return atomic64_add_return_relaxed(i, v); | ^ | | | atomic64_t Makefile arch block certs crypto drivers fs include init ipc kernel lib mm net scripts security sound source usr virt {aka struct In file included from include/linux/atomic.h:7, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: arch/powerpc/include/asm/atomic.h:331:51: note: expected 'atomic64_t {aka 'struct but argument is of type 'atomic64_t {aka 'struct 331 | atomic64_##op##_return_relaxed(s64 a, atomic64_t | ~~~~~~~~~~~~^ arch/powerpc/include/asm/atomic.h:367:2: note: in expansion of macro 'ATOMIC64_OP_RETURN_RELAXED' 367 | ATOMIC64_OP_RETURN_RELAXED(op, asm_op) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/atomic.h:370:1: note: in expansion of macro 'ATOMIC64_OPS' 370 | ATOMIC64_OPS(add, add) | ^~~~~~~~~~~~ In file included from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: include/linux/atomic-fallback.h: At top level: include/linux/atomic-fallback.h:1235:1: error: static declaration of 'atomic64_add_return' follows non-static declaration 1235 | atomic64_add_return(s64 i, atomic64_t | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/atomic-fallback.h:1185, from include/linux/atomic.h:74, from include/linux/debug_locks.h:6, from include/linux/lockdep.h:28, from include/linux/spinlock_types.h:18, from kernel/bounds.c:14: include/asm-generic/atomic64.h:27:12: note: previous declaration of 'atomic64_add_return' was here 27 | extern s64 atomic64_##op##_return(s64 a, atomic64_t | ^~~~~~~~~ include/asm-generic/atomic64.h:32:42: note: in expansion of macro 'ATOMIC64_OP_RETURN' 32 | #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op) | ^~~~~~~~~~~~~~~~~~ include/asm-generic/atomic64.h:34:1: note: in expansion of macro 'ATOMIC64_OPS' 34 | ATOMIC64_OPS(add) vim +/atomic64_t +14 include/asm-generic/atomic64.h 09d4e0edd4614e7 Paul Mackerras 2009-06-12 11 09d4e0edd4614e7 Paul Mackerras 2009-06-12 12 typedef struct { 9255813d5841e15 Mark Rutland 2019-05-22 13 s64 counter; 09d4e0edd4614e7 Paul Mackerras 2009-06-12 @14 } atomic64_t; 09d4e0edd4614e7 Paul Mackerras 2009-06-12 15 09d4e0edd4614e7 Paul Mackerras 2009-06-12 16 #define ATOMIC64_INIT(i) { (i) } 09d4e0edd4614e7 Paul Mackerras 2009-06-12 17 9255813d5841e15 Mark Rutland 2019-05-22 @18 extern s64 atomic64_read(const atomic64_t *v); 9255813d5841e15 Mark Rutland 2019-05-22 @19 extern void atomic64_set(atomic64_t *v, s64 i); 560cb12a4080a48 Peter Zijlstra 2014-04-23 20 9d664c0aec3bfdb Peter Zijlstra 2017-06-09 21 #define atomic64_set_release(v, i) atomic64_set((v), (i)) 9d664c0aec3bfdb Peter Zijlstra 2017-06-09 22 560cb12a4080a48 Peter Zijlstra 2014-04-23 23 #define ATOMIC64_OP(op) \ 9255813d5841e15 Mark Rutland 2019-05-22 @24 extern void atomic64_##op(s64 a, atomic64_t *v); 560cb12a4080a48 Peter Zijlstra 2014-04-23 25 560cb12a4080a48 Peter Zijlstra 2014-04-23 26 #define ATOMIC64_OP_RETURN(op) \ 9255813d5841e15 Mark Rutland 2019-05-22 27 extern s64 atomic64_##op##_return(s64 a, atomic64_t *v); 560cb12a4080a48 Peter Zijlstra 2014-04-23 28 28aa2bda2211f43 Peter Zijlstra 2016-04-18 29 #define ATOMIC64_FETCH_OP(op) \ 9255813d5841e15 Mark Rutland 2019-05-22 30 extern s64 atomic64_fetch_##op(s64 a, atomic64_t *v); 28aa2bda2211f43 Peter Zijlstra 2016-04-18 31 28aa2bda2211f43 Peter Zijlstra 2016-04-18 @32 #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op) 560cb12a4080a48 Peter Zijlstra 2014-04-23 33 560cb12a4080a48 Peter Zijlstra 2014-04-23 @34 ATOMIC64_OPS(add) 560cb12a4080a48 Peter Zijlstra 2014-04-23 35 ATOMIC64_OPS(sub) 560cb12a4080a48 Peter Zijlstra 2014-04-23 36 28aa2bda2211f43 Peter Zijlstra 2016-04-18 37 #undef ATOMIC64_OPS 28aa2bda2211f43 Peter Zijlstra 2016-04-18 38 #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op) 28aa2bda2211f43 Peter Zijlstra 2016-04-18 39 28aa2bda2211f43 Peter Zijlstra 2016-04-18 40 ATOMIC64_OPS(and) 28aa2bda2211f43 Peter Zijlstra 2016-04-18 41 ATOMIC64_OPS(or) 28aa2bda2211f43 Peter Zijlstra 2016-04-18 42 ATOMIC64_OPS(xor) e6942b7de2dfe44 Peter Zijlstra 2014-04-23 43 560cb12a4080a48 Peter Zijlstra 2014-04-23 44 #undef ATOMIC64_OPS 28aa2bda2211f43 Peter Zijlstra 2016-04-18 45 #undef ATOMIC64_FETCH_OP 560cb12a4080a48 Peter Zijlstra 2014-04-23 46 #undef ATOMIC64_OP_RETURN 560cb12a4080a48 Peter Zijlstra 2014-04-23 47 #undef ATOMIC64_OP 560cb12a4080a48 Peter Zijlstra 2014-04-23 48 9255813d5841e15 Mark Rutland 2019-05-22 @49 extern s64 atomic64_dec_if_positive(atomic64_t *v); b3a2a05f9111de0 Mark Rutland 2018-06-21 50 #define atomic64_dec_if_positive atomic64_dec_if_positive 9255813d5841e15 Mark Rutland 2019-05-22 @51 extern s64 atomic64_cmpxchg(atomic64_t *v, s64 o, s64 n); 9255813d5841e15 Mark Rutland 2019-05-22 @52 extern s64 atomic64_xchg(atomic64_t *v, s64 new); 9255813d5841e15 Mark Rutland 2019-05-22 @53 extern s64 atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u); 00b808ab79ead37 Mark Rutland 2018-06-21 54 #define atomic64_fetch_add_unless atomic64_fetch_add_unless 09d4e0edd4614e7 Paul Mackerras 2009-06-12 55 :::::: The code at line 14 was first introduced by commit :::::: 09d4e0edd4614e787393acc582ac701c6ec3565b lib: Provide generic atomic64_t implementation :::::: TO: Paul Mackerras :::::: CC: Benjamin Herrenschmidt --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org