All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] seqlock: <linux/seqlock.h>: fix multiple kernel-doc warnings
Date: Mon, 17 Aug 2020 07:58:50 +0800	[thread overview]
Message-ID: <202008170748.Qwpursg2%lkp@intel.com> (raw)
In-Reply-To: <20200816222602.437-1-rdunlap@infradead.org>

[-- Attachment #1: Type: text/plain, Size: 24921 bytes --]

Hi Randy,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc1 next-20200814]
[cannot apply to tip/locking/core linux/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Randy-Dunlap/seqlock-linux-seqlock-h-fix-multiple-kernel-doc-warnings/20200817-062836
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
config: x86_64-randconfig-a013-20200817 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project ab9fc8bae805c785066779e76e7846aabad5609e)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

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

   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: error: 'inline' can only appear on functions
   static __always_inline void                                             \
          ^
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:16: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                  ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: '__gnu_inline__' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:23: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                         ^
   include/linux/compiler_attributes.h:167:56: note: expanded from macro '__gnu_inline'
   #define __gnu_inline                    __attribute__((__gnu_inline__))
                                                          ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: 'no_instrument_function' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:58: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                                                            ^
   arch/x86/include/asm/linkage.h:8:32: note: expanded from macro 'notrace'
   #define notrace __attribute__((no_instrument_function))
                                  ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: '__always_inline__' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:63: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                                                 ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:34: error: variable has incomplete type 'void'
   static __always_inline void                                             \
                                                                           ^
>> include/linux/seqlock.h:157:10: error: expected ';' after top level declarator
   seqcount_##lockname##_init(seqcount_##lockname##_t *s, locktype *lock)  \
            ^
            ;
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   SEQCOUNT_LOCKTYPE(raw_spinlock_t,       raw_spinlock,   false,  s->lock)
   ^
   include/linux/seqlock.h:177:29: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_ptr(seqcount_##lockname##_t *s)                 \
                               ^
   <scratch space>:103:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   include/linux/seqlock.h:183:37: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_preemptible(seqcount_##lockname##_t *s)         \
                                       ^
   <scratch space>:107:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   include/linux/seqlock.h:189:32: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_assert(seqcount_##lockname##_t *s)              \
                                  ^
   <scratch space>:111:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:751:17: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           unsigned ret = read_seqcount_begin(&sl->seqcount);
                          ^
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:184:1: note: expanded from here
   __seqcount_ptr
   ^
   include/linux/seqlock.h:751:17: note: did you mean '__seqcount_init'?
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:184:1: note: expanded from here
   __seqcount_ptr
   ^
   include/linux/seqlock.h:71:20: note: '__seqcount_init' declared here
   static inline void __seqcount_init(seqcount_t *s, const char *name,
                      ^
   include/linux/seqlock.h:751:17: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           unsigned ret = read_seqcount_begin(&sl->seqcount);
                          ^
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:186:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
   include/linux/seqlock.h:777:9: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           return read_seqcount_retry(&sl->seqcount, start);
                  ^
   include/linux/seqlock.h:401:24: note: expanded from macro 'read_seqcount_retry'
           read_seqcount_t_retry(__seqcount_ptr(s), start)
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:210:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
   include/linux/seqlock.h:777:9: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:401:24: note: expanded from macro 'read_seqcount_retry'
           read_seqcount_t_retry(__seqcount_ptr(s), start)
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:212:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:10:
   In file included from include/linux/sched.h:20:
>> include/linux/hrtimer.h:163:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           seqcount_raw_spinlock_t seq;
           ^~~~~~~~~~~~~~~~~~~~~~~
           seqcount_spinlock_t
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
>> include/linux/rbtree_latch.h:148:2: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:23:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
>> include/linux/rbtree_latch.h:148:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:25:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:150:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:51:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:175:2: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:75:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:175:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^

# https://github.com/0day-ci/linux/commit/360da27b2632939e5188f48d211b8a39cfdb8cde
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Randy-Dunlap/seqlock-linux-seqlock-h-fix-multiple-kernel-doc-warnings/20200817-062836
git checkout 360da27b2632939e5188f48d211b8a39cfdb8cde
vim +/inline +156 include/linux/seqlock.h

   139	
   140	/**
   141	 * typedef seqcount_LOCKNAME_t - sequence counter with LOCKTYPE associated
   142	 * @seqcount:	The real sequence counter
   143	 * @lock:	Pointer to the associated spinlock
   144	 *
   145	 * A plain sequence counter with external writer synchronization by a
   146	 * spinlock. The spinlock is associated to the sequence count in the
   147	 * static initializer or init function. This enables lockdep to validate
   148	 * that the write side critical section is properly serialized.
   149	 */
   150	
   151	/*
   152	 * seqcount_LOCKNAME_init() - runtime initializer for seqcount_LOCKNAME_t
   153	 * @s:		Pointer to the seqcount_LOCKNAME_t instance
   154	 * @lock:	Pointer to the associated LOCKTYPE
   155	 */
 > 156	static __always_inline void						\
 > 157	seqcount_##lockname##_init(seqcount_##lockname##_t *s, locktype *lock)	\
   158	{									\
   159		seqcount_init(&s->seqcount);					\
   160		__SEQ_LOCK(s->lock = lock);					\
   161	}									\
   162	
   163	/*
   164	 * SEQCOUNT_LOCKTYPE() - Instantiate seqcount_LOCKNAME_t and helpers
   165	 * @locktype:		actual typename
   166	 * @lockname:		name
   167	 * @preemptible:	preemptibility of above locktype
   168	 * @lockmember:		argument for lockdep_assert_held()
   169	 */
   170	#define SEQCOUNT_LOCKTYPE(locktype, lockname, preemptible, lockmember)	\
   171	typedef struct seqcount_##lockname {					\
   172		seqcount_t		seqcount;				\
   173		__SEQ_LOCK(locktype	*lock);					\
   174	} seqcount_##lockname##_t;						\
   175										\
   176	static __always_inline seqcount_t *					\
   177	__seqcount_##lockname##_ptr(seqcount_##lockname##_t *s)			\
   178	{									\
   179		return &s->seqcount;						\
   180	}									\
   181										\
   182	static __always_inline bool						\
   183	__seqcount_##lockname##_preemptible(seqcount_##lockname##_t *s)		\
   184	{									\
   185		return preemptible;						\
   186	}									\
   187										\
   188	static __always_inline void						\
   189	__seqcount_##lockname##_assert(seqcount_##lockname##_t *s)		\
   190	{									\
   191		__SEQ_LOCK(lockdep_assert_held(lockmember));			\
   192	}
   193	
   194	/*
   195	 * __seqprop() for seqcount_t
   196	 */
   197	
   198	static inline seqcount_t *__seqcount_ptr(seqcount_t *s)
   199	{
   200		return s;
   201	}
   202	
   203	static inline bool __seqcount_preemptible(seqcount_t *s)
   204	{
   205		return false;
   206	}
   207	
   208	static inline void __seqcount_assert(seqcount_t *s)
   209	{
   210		lockdep_assert_preemption_disabled();
   211	}
   212	
 > 213	SEQCOUNT_LOCKTYPE(raw_spinlock_t,	raw_spinlock,	false,	s->lock)
   214	SEQCOUNT_LOCKTYPE(spinlock_t,		spinlock,	false,	s->lock)
   215	SEQCOUNT_LOCKTYPE(rwlock_t,		rwlock,		false,	s->lock)
   216	SEQCOUNT_LOCKTYPE(struct mutex,		mutex,		true,	s->lock)
   217	SEQCOUNT_LOCKTYPE(struct ww_mutex,	ww_mutex,	true,	&s->lock->base)
   218	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33031 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Randy Dunlap <rdunlap@infradead.org>, linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	Randy Dunlap <rdunlap@infradead.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH] seqlock: <linux/seqlock.h>: fix multiple kernel-doc warnings
Date: Mon, 17 Aug 2020 07:58:50 +0800	[thread overview]
Message-ID: <202008170748.Qwpursg2%lkp@intel.com> (raw)
In-Reply-To: <20200816222602.437-1-rdunlap@infradead.org>

[-- Attachment #1: Type: text/plain, Size: 24442 bytes --]

Hi Randy,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.9-rc1 next-20200814]
[cannot apply to tip/locking/core linux/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Randy-Dunlap/seqlock-linux-seqlock-h-fix-multiple-kernel-doc-warnings/20200817-062836
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
config: x86_64-randconfig-a013-20200817 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project ab9fc8bae805c785066779e76e7846aabad5609e)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

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

   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: error: 'inline' can only appear on functions
   static __always_inline void                                             \
          ^
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:16: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                  ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: '__gnu_inline__' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:23: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                         ^
   include/linux/compiler_attributes.h:167:56: note: expanded from macro '__gnu_inline'
   #define __gnu_inline                    __attribute__((__gnu_inline__))
                                                          ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: 'no_instrument_function' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:41: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                           ^
   include/linux/compiler_types.h:144:58: note: expanded from macro 'inline'
   #define inline inline __gnu_inline __inline_maybe_unused notrace
                                                            ^
   arch/x86/include/asm/linkage.h:8:32: note: expanded from macro 'notrace'
   #define notrace __attribute__((no_instrument_function))
                                  ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:8: warning: '__always_inline__' attribute only applies to functions [-Wignored-attributes]
   include/linux/compiler_attributes.h:70:63: note: expanded from macro '__always_inline'
   #define __always_inline                 inline __attribute__((__always_inline__))
                                                                 ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:156:34: error: variable has incomplete type 'void'
   static __always_inline void                                             \
                                                                           ^
>> include/linux/seqlock.h:157:10: error: expected ';' after top level declarator
   seqcount_##lockname##_init(seqcount_##lockname##_t *s, locktype *lock)  \
            ^
            ;
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   SEQCOUNT_LOCKTYPE(raw_spinlock_t,       raw_spinlock,   false,  s->lock)
   ^
   include/linux/seqlock.h:177:29: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_ptr(seqcount_##lockname##_t *s)                 \
                               ^
   <scratch space>:103:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   include/linux/seqlock.h:183:37: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_preemptible(seqcount_##lockname##_t *s)         \
                                       ^
   <scratch space>:107:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:213:1: error: unknown type name 'seqcount_raw_spinlock_t'
   include/linux/seqlock.h:189:32: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   __seqcount_##lockname##_assert(seqcount_##lockname##_t *s)              \
                                  ^
   <scratch space>:111:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
>> include/linux/seqlock.h:751:17: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           unsigned ret = read_seqcount_begin(&sl->seqcount);
                          ^
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:184:1: note: expanded from here
   __seqcount_ptr
   ^
   include/linux/seqlock.h:751:17: note: did you mean '__seqcount_init'?
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:184:1: note: expanded from here
   __seqcount_ptr
   ^
   include/linux/seqlock.h:71:20: note: '__seqcount_init' declared here
   static inline void __seqcount_init(seqcount_t *s, const char *name,
                      ^
   include/linux/seqlock.h:751:17: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           unsigned ret = read_seqcount_begin(&sl->seqcount);
                          ^
   include/linux/seqlock.h:306:24: note: expanded from macro 'read_seqcount_begin'
           read_seqcount_t_begin(__seqcount_ptr(s))
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:186:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
   include/linux/seqlock.h:777:9: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           return read_seqcount_retry(&sl->seqcount, start);
                  ^
   include/linux/seqlock.h:401:24: note: expanded from macro 'read_seqcount_retry'
           read_seqcount_t_retry(__seqcount_ptr(s), start)
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:210:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:9:
   In file included from include/linux/crypto.h:20:
   In file included from include/linux/slab.h:15:
   In file included from include/linux/gfp.h:6:
   In file included from include/linux/mmzone.h:16:
   include/linux/seqlock.h:777:9: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:401:24: note: expanded from macro 'read_seqcount_retry'
           read_seqcount_t_retry(__seqcount_ptr(s), start)
                                 ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:212:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:10:
   In file included from include/linux/sched.h:20:
>> include/linux/hrtimer.h:163:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           seqcount_raw_spinlock_t seq;
           ^~~~~~~~~~~~~~~~~~~~~~~
           seqcount_spinlock_t
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
>> include/linux/rbtree_latch.h:148:2: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:23:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
>> include/linux/rbtree_latch.h:148:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:25:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:150:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^
   include/linux/seqlock.h:238:2: note: expanded from macro '__seqprop_case'
           seqcount_##lockname##_t: __seqcount_##lockname##_##prop((void *)(s))
           ^
   <scratch space>:51:1: note: expanded from here
   seqcount_raw_spinlock_t
   ^
   include/linux/seqlock.h:214:1: note: 'seqcount_spinlock_t' declared here
   SEQCOUNT_LOCKTYPE(spinlock_t,           spinlock,       false,  s->lock)
   ^
   include/linux/seqlock.h:174:3: note: expanded from macro 'SEQCOUNT_LOCKTYPE'
   } seqcount_##lockname##_t;                                              \
     ^
   <scratch space>:114:1: note: expanded from here
   seqcount_spinlock_t
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:175:2: error: implicit declaration of function '__seqcount_ptr' [-Werror,-Wimplicit-function-declaration]
           raw_write_seqcount_latch(&root->seq);
           ^
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:241:15: note: expanded from macro '__seqprop'
           seqcount_t:             __seqcount_##prop((void *)(s)),         \
                                   ^
   <scratch space>:75:1: note: expanded from here
   __seqcount_ptr
   ^
   In file included from arch/x86/kernel/asm-offsets.c:13:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:13:
   In file included from include/linux/cgroup.h:28:
   In file included from include/linux/cgroup-defs.h:22:
   In file included from include/linux/bpf-cgroup.h:5:
   In file included from include/linux/bpf.h:13:
   include/linux/rbtree_latch.h:175:2: error: unknown type name 'seqcount_raw_spinlock_t'; did you mean 'seqcount_spinlock_t'?
   include/linux/seqlock.h:696:29: note: expanded from macro 'raw_write_seqcount_latch'
           raw_write_seqcount_t_latch(__seqcount_ptr(s))
                                      ^
   include/linux/seqlock.h:248:28: note: expanded from macro '__seqcount_ptr'
   #define __seqcount_ptr(s)               __seqprop(s, ptr)
                                           ^
   include/linux/seqlock.h:242:2: note: expanded from macro '__seqprop'
           __seqprop_case((s),     raw_spinlock,   prop),                  \
           ^

# https://github.com/0day-ci/linux/commit/360da27b2632939e5188f48d211b8a39cfdb8cde
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Randy-Dunlap/seqlock-linux-seqlock-h-fix-multiple-kernel-doc-warnings/20200817-062836
git checkout 360da27b2632939e5188f48d211b8a39cfdb8cde
vim +/inline +156 include/linux/seqlock.h

   139	
   140	/**
   141	 * typedef seqcount_LOCKNAME_t - sequence counter with LOCKTYPE associated
   142	 * @seqcount:	The real sequence counter
   143	 * @lock:	Pointer to the associated spinlock
   144	 *
   145	 * A plain sequence counter with external writer synchronization by a
   146	 * spinlock. The spinlock is associated to the sequence count in the
   147	 * static initializer or init function. This enables lockdep to validate
   148	 * that the write side critical section is properly serialized.
   149	 */
   150	
   151	/*
   152	 * seqcount_LOCKNAME_init() - runtime initializer for seqcount_LOCKNAME_t
   153	 * @s:		Pointer to the seqcount_LOCKNAME_t instance
   154	 * @lock:	Pointer to the associated LOCKTYPE
   155	 */
 > 156	static __always_inline void						\
 > 157	seqcount_##lockname##_init(seqcount_##lockname##_t *s, locktype *lock)	\
   158	{									\
   159		seqcount_init(&s->seqcount);					\
   160		__SEQ_LOCK(s->lock = lock);					\
   161	}									\
   162	
   163	/*
   164	 * SEQCOUNT_LOCKTYPE() - Instantiate seqcount_LOCKNAME_t and helpers
   165	 * @locktype:		actual typename
   166	 * @lockname:		name
   167	 * @preemptible:	preemptibility of above locktype
   168	 * @lockmember:		argument for lockdep_assert_held()
   169	 */
   170	#define SEQCOUNT_LOCKTYPE(locktype, lockname, preemptible, lockmember)	\
   171	typedef struct seqcount_##lockname {					\
   172		seqcount_t		seqcount;				\
   173		__SEQ_LOCK(locktype	*lock);					\
   174	} seqcount_##lockname##_t;						\
   175										\
   176	static __always_inline seqcount_t *					\
   177	__seqcount_##lockname##_ptr(seqcount_##lockname##_t *s)			\
   178	{									\
   179		return &s->seqcount;						\
   180	}									\
   181										\
   182	static __always_inline bool						\
   183	__seqcount_##lockname##_preemptible(seqcount_##lockname##_t *s)		\
   184	{									\
   185		return preemptible;						\
   186	}									\
   187										\
   188	static __always_inline void						\
   189	__seqcount_##lockname##_assert(seqcount_##lockname##_t *s)		\
   190	{									\
   191		__SEQ_LOCK(lockdep_assert_held(lockmember));			\
   192	}
   193	
   194	/*
   195	 * __seqprop() for seqcount_t
   196	 */
   197	
   198	static inline seqcount_t *__seqcount_ptr(seqcount_t *s)
   199	{
   200		return s;
   201	}
   202	
   203	static inline bool __seqcount_preemptible(seqcount_t *s)
   204	{
   205		return false;
   206	}
   207	
   208	static inline void __seqcount_assert(seqcount_t *s)
   209	{
   210		lockdep_assert_preemption_disabled();
   211	}
   212	
 > 213	SEQCOUNT_LOCKTYPE(raw_spinlock_t,	raw_spinlock,	false,	s->lock)
   214	SEQCOUNT_LOCKTYPE(spinlock_t,		spinlock,	false,	s->lock)
   215	SEQCOUNT_LOCKTYPE(rwlock_t,		rwlock,		false,	s->lock)
   216	SEQCOUNT_LOCKTYPE(struct mutex,		mutex,		true,	s->lock)
   217	SEQCOUNT_LOCKTYPE(struct ww_mutex,	ww_mutex,	true,	&s->lock->base)
   218	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33031 bytes --]

  parent reply	other threads:[~2020-08-16 23:58 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-16 22:26 [PATCH] seqlock: <linux/seqlock.h>: fix multiple kernel-doc warnings Randy Dunlap
2020-08-16 23:26 ` kernel test robot
2020-08-16 23:26   ` kernel test robot
2020-08-16 23:31 ` kernel test robot
2020-08-16 23:31   ` kernel test robot
2020-08-16 23:58 ` kernel test robot [this message]
2020-08-16 23:58   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202008170748.Qwpursg2%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.