Re: [PATCH] locking/ww_mutex: add ww_mutex_is_owned_by function v4

From: kbuild test robot
Date: Tue Feb 20 2018 - 14:15:17 EST


Hi Christian,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.16-rc2 next-20180220]
[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/Christian-K-nig/locking-ww_mutex-add-ww_mutex_is_owned_by-function-v4/20180221-021317
config: microblaze-mmu_defconfig (attached as .config)
compiler: microblaze-linux-gcc (GCC) 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
make.cross ARCH=microblaze

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

In file included from kernel/locking/mutex.c:21:0:
include/linux/ww_mutex.h: In function 'ww_mutex_is_owned_by':
include/linux/ww_mutex.h:380:0: error: unterminated argument list invoking macro "likely"
#endif

include/linux/ww_mutex.h:377:3: error: 'likely' undeclared (first use in this function)
likely(READ_ONCE(lock->ctx) == NULL;
^~~~~~
include/linux/ww_mutex.h:377:3: note: each undeclared identifier is reported only once for each function it appears in
In file included from include/linux/thread_info.h:13:0,
from include/asm-generic/preempt.h:5,
from ./arch/microblaze/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:81,
from include/linux/rcupdate.h:40,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/linux/restart_block.h:11:1: error: expected ';' before 'struct'
struct timespec;
^~~~~~
include/linux/restart_block.h:12:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
struct compat_timespec;
^~~~~~
In file included from include/linux/thread_info.h:38:0,
from include/asm-generic/preempt.h:5,
from ./arch/microblaze/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:81,
from include/linux/rcupdate.h:40,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
>> arch/microblaze/include/asm/thread_info.h:90:35: error: invalid storage class for function 'current_thread_info'
static inline struct thread_info *current_thread_info(void)
^~~~~~~~~~~~~~~~~~~
In file included from include/asm-generic/preempt.h:5:0,
from ./arch/microblaze/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:81,
from include/linux/rcupdate.h:40,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/linux/thread_info.h:57:20: error: invalid storage class for function 'set_ti_thread_flag'
static inline void set_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:62:20: error: invalid storage class for function 'clear_ti_thread_flag'
static inline void clear_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:67:19: error: invalid storage class for function 'test_and_set_ti_thread_flag'
static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:72:19: error: invalid storage class for function 'test_and_clear_ti_thread_flag'
static inline int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:77:19: error: invalid storage class for function 'test_ti_thread_flag'
static inline int test_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:96:19: error: invalid storage class for function 'arch_within_stack_frames'
static inline int arch_within_stack_frames(const void * const stack,
^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thread_info.h:115:20: error: invalid storage class for function 'check_object_size'
static inline void check_object_size(const void *ptr, unsigned long n,
^~~~~~~~~~~~~~~~~
include/linux/thread_info.h:125:20: error: invalid storage class for function 'copy_overflow'
static inline void copy_overflow(int size, unsigned long count)
^~~~~~~~~~~~~
include/linux/thread_info.h:131:1: error: invalid storage class for function 'check_copy_size'
check_copy_size(const void *addr, size_t bytes, bool is_source)
^~~~~~~~~~~~~~~
include/linux/thread_info.h:148:20: error: invalid storage class for function 'arch_setup_new_exec'
static inline void arch_setup_new_exec(void) { }
^~~~~~~~~~~~~~~~~~~
In file included from ./arch/microblaze/include/generated/asm/preempt.h:1:0,
from include/linux/preempt.h:81,
from include/linux/rcupdate.h:40,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/asm-generic/preempt.h:9:28: error: invalid storage class for function 'preempt_count'
static __always_inline int preempt_count(void)
^~~~~~~~~~~~~
include/asm-generic/preempt.h:14:38: error: invalid storage class for function 'preempt_count_ptr'
static __always_inline volatile int *preempt_count_ptr(void)
^~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:19:29: error: invalid storage class for function 'preempt_count_set'
static __always_inline void preempt_count_set(int pc)
^~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:35:29: error: invalid storage class for function 'set_preempt_need_resched'
static __always_inline void set_preempt_need_resched(void)
^~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:39:29: error: invalid storage class for function 'clear_preempt_need_resched'
static __always_inline void clear_preempt_need_resched(void)
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:43:29: error: invalid storage class for function 'test_preempt_need_resched'
static __always_inline bool test_preempt_need_resched(void)
^~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:52:29: error: invalid storage class for function '__preempt_count_add'
static __always_inline void __preempt_count_add(int val)
^~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:57:29: error: invalid storage class for function '__preempt_count_sub'
static __always_inline void __preempt_count_sub(int val)
^~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:62:29: error: invalid storage class for function '__preempt_count_dec_and_test'
static __always_inline bool __preempt_count_dec_and_test(void)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/preempt.h:75:29: error: invalid storage class for function 'should_resched'
static __always_inline bool should_resched(int preempt_offset)
^~~~~~~~~~~~~~
In file included from include/linux/rcupdate.h:41:0,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/linux/bottom_half.h:10:29: error: invalid storage class for function '__local_bh_disable_ip'
static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt)
^~~~~~~~~~~~~~~~~~~~~
include/linux/bottom_half.h:17:20: error: invalid storage class for function 'local_bh_disable'
static inline void local_bh_disable(void)
^~~~~~~~~~~~~~~~
include/linux/bottom_half.h:25:20: error: invalid storage class for function 'local_bh_enable_ip'
static inline void local_bh_enable_ip(unsigned long ip)
^~~~~~~~~~~~~~~~~~
include/linux/bottom_half.h:30:20: error: invalid storage class for function 'local_bh_enable'
static inline void local_bh_enable(void)
^~~~~~~~~~~~~~~
In file included from include/linux/bitmap.h:9:0,
from include/linux/cpumask.h:12,
from include/linux/rcupdate.h:44,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/linux/string.h:71:34: error: invalid storage class for function 'strstrip'
static inline __must_check char *strstrip(char *str)
^~~~~~~~
--
^~~~~~~~~~~~~
include/linux/cpumask.h:637:19: error: invalid storage class for function 'cpulist_parse'
static inline int cpulist_parse(const char *buf, struct cpumask *dstp)
^~~~~~~~~~~~~
include/linux/cpumask.h:645:28: error: invalid storage class for function 'cpumask_size'
static inline unsigned int cpumask_size(void)
^~~~~~~~~~~~
include/linux/cpumask.h:715:20: error: invalid storage class for function 'alloc_cpumask_var'
static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
^~~~~~~~~~~~~~~~~
include/linux/cpumask.h:720:20: error: invalid storage class for function 'alloc_cpumask_var_node'
static inline bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags,
^~~~~~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:726:20: error: invalid storage class for function 'zalloc_cpumask_var'
static inline bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
^~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:732:20: error: invalid storage class for function 'zalloc_cpumask_var_node'
static inline bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags,
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:739:20: error: invalid storage class for function 'alloc_bootmem_cpumask_var'
static inline void alloc_bootmem_cpumask_var(cpumask_var_t *mask)
^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:743:20: error: invalid storage class for function 'free_cpumask_var'
static inline void free_cpumask_var(cpumask_var_t mask)
^~~~~~~~~~~~~~~~
include/linux/cpumask.h:747:20: error: invalid storage class for function 'free_bootmem_cpumask_var'
static inline void free_bootmem_cpumask_var(cpumask_var_t mask)
^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:751:20: error: invalid storage class for function 'cpumask_available'
static inline bool cpumask_available(cpumask_var_t mask)
^~~~~~~~~~~~~~~~~
include/linux/cpumask.h:774:20: error: invalid storage class for function 'reset_cpu_possible_mask'
static inline void reset_cpu_possible_mask(void)
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/cpumask.h:780:1: error: invalid storage class for function 'set_cpu_possible'
set_cpu_possible(unsigned int cpu, bool possible)
^~~~~~~~~~~~~~~~
include/linux/cpumask.h:789:1: error: invalid storage class for function 'set_cpu_present'
set_cpu_present(unsigned int cpu, bool present)
^~~~~~~~~~~~~~~
include/linux/cpumask.h:798:1: error: invalid storage class for function 'set_cpu_online'
set_cpu_online(unsigned int cpu, bool online)
^~~~~~~~~~~~~~
include/linux/cpumask.h:807:1: error: invalid storage class for function 'set_cpu_active'
set_cpu_active(unsigned int cpu, bool active)
^~~~~~~~~~~~~~
include/linux/cpumask.h:830:19: error: invalid storage class for function '__check_is_bitmap'
static inline int __check_is_bitmap(const unsigned long *bitmap)
^~~~~~~~~~~~~~~~~
include/linux/cpumask.h:845:37: error: invalid storage class for function 'get_cpu_mask'
static inline const struct cpumask *get_cpu_mask(unsigned int cpu)
^~~~~~~~~~~~
include/linux/cpumask.h:880:1: error: invalid storage class for function 'cpumap_print_to_pagebuf'
cpumap_print_to_pagebuf(bool list, char *buf, const struct cpumask *mask)
^~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/rculist.h:11:0,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
include/linux/rcupdate.h:80:20: error: invalid storage class for function '__rcu_read_lock'
static inline void __rcu_read_lock(void)
^~~~~~~~~~~~~~~
include/linux/rcupdate.h:86:20: error: invalid storage class for function '__rcu_read_unlock'
static inline void __rcu_read_unlock(void)
^~~~~~~~~~~~~~~~~
include/linux/rcupdate.h:92:20: error: invalid storage class for function 'synchronize_rcu'
static inline void synchronize_rcu(void)
^~~~~~~~~~~~~~~
include/linux/rcupdate.h:97:19: error: invalid storage class for function 'rcu_preempt_depth'
static inline int rcu_preempt_depth(void)
^~~~~~~~~~~~~~~~~
include/linux/rcupdate.h:118:20: error: invalid storage class for function 'rcu_sysrq_start'
static inline void rcu_sysrq_start(void) { }
^~~~~~~~~~~~~~~
include/linux/rcupdate.h:119:20: error: invalid storage class for function 'rcu_sysrq_end'
static inline void rcu_sysrq_end(void) { }
^~~~~~~~~~~~~
include/linux/rcupdate.h:126:20: error: invalid storage class for function 'rcu_user_enter'
static inline void rcu_user_enter(void) { }
^~~~~~~~~~~~~~
include/linux/rcupdate.h:127:20: error: invalid storage class for function 'rcu_user_exit'
static inline void rcu_user_exit(void) { }
^~~~~~~~~~~~~
include/linux/rcupdate.h:133:20: error: invalid storage class for function 'rcu_init_nohz'
static inline void rcu_init_nohz(void) { }
^~~~~~~~~~~~~
include/linux/rcupdate.h:186:20: error: invalid storage class for function 'exit_tasks_rcu_start'
static inline void exit_tasks_rcu_start(void) { }
^~~~~~~~~~~~~~~~~~~~
include/linux/rcupdate.h:187:20: error: invalid storage class for function 'exit_tasks_rcu_finish'
static inline void exit_tasks_rcu_finish(void) { }
^~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/spinlock.h:90:0,
from include/linux/seqlock.h:36,
from include/linux/time.h:6,
from include/linux/ktime.h:24,
from include/linux/rcutiny.h:28,
from include/linux/rcupdate.h:211,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
>> include/linux/spinlock_up.h:29:20: error: invalid storage class for function 'arch_spin_lock'
static inline void arch_spin_lock(arch_spinlock_t *lock)
^~~~~~~~~~~~~~
>> include/linux/spinlock_up.h:35:19: error: invalid storage class for function 'arch_spin_trylock'
static inline int arch_spin_trylock(arch_spinlock_t *lock)
^~~~~~~~~~~~~~~~~
>> include/linux/spinlock_up.h:45:20: error: invalid storage class for function 'arch_spin_unlock'
static inline void arch_spin_unlock(arch_spinlock_t *lock)
^~~~~~~~~~~~~~~~
In file included from include/linux/spinlock.h:288:0,
from include/linux/seqlock.h:36,
from include/linux/time.h:6,
from include/linux/ktime.h:24,
from include/linux/rcutiny.h:28,
from include/linux/rcupdate.h:211,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
>> include/linux/spinlock_api_smp.h:86:19: error: invalid storage class for function '__raw_spin_trylock'
static inline int __raw_spin_trylock(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:104:29: error: invalid storage class for function '__raw_spin_lock_irqsave'
static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:124:20: error: invalid storage class for function '__raw_spin_lock_irq'
static inline void __raw_spin_lock_irq(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:132:20: error: invalid storage class for function '__raw_spin_lock_bh'
static inline void __raw_spin_lock_bh(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:139:20: error: invalid storage class for function '__raw_spin_lock'
static inline void __raw_spin_lock(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:148:20: error: invalid storage class for function '__raw_spin_unlock'
static inline void __raw_spin_unlock(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:155:20: error: invalid storage class for function '__raw_spin_unlock_irqrestore'
static inline void __raw_spin_unlock_irqrestore(raw_spinlock_t *lock,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:164:20: error: invalid storage class for function '__raw_spin_unlock_irq'
static inline void __raw_spin_unlock_irq(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:172:20: error: invalid storage class for function '__raw_spin_unlock_bh'
static inline void __raw_spin_unlock_bh(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_smp.h:179:19: error: invalid storage class for function '__raw_spin_trylock_bh'
static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock)
^~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/spinlock_api_smp.h:190:0,
from include/linux/spinlock.h:288,
from include/linux/seqlock.h:36,
from include/linux/time.h:6,
from include/linux/ktime.h:24,
from include/linux/rcutiny.h:28,
from include/linux/rcupdate.h:211,
from include/linux/rculist.h:11,
from include/linux/sched/signal.h:5,
from kernel/locking/mutex.c:22:
>> include/linux/rwlock_api_smp.h:117:19: error: invalid storage class for function '__raw_read_trylock'
static inline int __raw_read_trylock(rwlock_t *lock)
^~~~~~~~~~~~~~~~~~
>> include/linux/rwlock_api_smp.h:128:19: error: invalid storage class for function '__raw_write_trylock'
static inline int __raw_write_trylock(rwlock_t *lock)
^~~~~~~~~~~~~~~~~~~
>> include/linux/rwlock_api_smp.h:146:20: error: invalid storage class for function '__raw_read_lock'
static inline void __raw_read_lock(rwlock_t *lock)
^~~~~~~~~~~~~~~
>> include/linux/rwlock_api_smp.h:153:29: error: invalid storage class for function '__raw_read_lock_irqsave'
static inline unsigned long __raw_read_lock_irqsave(rwlock_t *lock)
^~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/rwlock_api_smp.h:165:20: error: invalid storage class for function '__raw_read_lock_irq'
static inline void __raw_read_lock_irq(rwlock_t *lock)
^~~~~~~~~~~~~~~~~~~
>> include/linux/rwlock_api_smp.h:173:20: error: invalid storage class for function '__raw_read_lock_bh'
static inline void __raw_read_lock_bh(rwlock_t *lock)
^~~~~~~~~~~~~~~~~~
..

vim +/current_thread_info +90 arch/microblaze/include/asm/thread_info.h

4684dade Michal Simek 2009-03-27 88
4684dade Michal Simek 2009-03-27 89 /* how to get the thread information struct from C */
4684dade Michal Simek 2009-03-27 @90 static inline struct thread_info *current_thread_info(void)
4684dade Michal Simek 2009-03-27 91 {
4684dade Michal Simek 2009-03-27 92 register unsigned long sp asm("r1");
4684dade Michal Simek 2009-03-27 93
4684dade Michal Simek 2009-03-27 94 return (struct thread_info *)(sp & ~(THREAD_SIZE-1));
4684dade Michal Simek 2009-03-27 95 }
4684dade Michal Simek 2009-03-27 96

:::::: The code at line 90 was first introduced by commit
:::::: 4684dadec6ca3f310b0d9ff1860ca6b6f11ffd2d microblaze_v8: string.h thread_info.h

:::::: TO: Michal Simek <monstr@xxxxxxxxx>
:::::: CC: Michal Simek <monstr@xxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip