Messages in this thread | | | Subject | Re: [PATCH] locking/lockdep: Dump state of percpu_rwsem upon hung up. | From | Tetsuo Handa <> | Date | Sat, 7 Jul 2018 23:09:12 +0900 |
| |
Hello.
Thanks for doing build test, but I don't understand what is wrong. As far as I can see, "struct percpu_rw_semaphore" contains "struct rw_semaphore" and "struct rw_semaphore" contains "atomic_long_t count". Then, why trying to read using atomic_long_read(&sem->rw_sem.count) causes
note: expected 'const atomic_long_t * {aka const struct <anonymous> *}' but argument is of type '__s32 * {aka int *}'
warning? Is mips using different type?
struct percpu_rw_semaphore { struct rcu_sync rss; unsigned int __percpu *read_count; struct rw_semaphore rw_sem; /* slowpath */ struct rcuwait writer; /* blocked writer */ int readers_block; };
/* All arch specific implementations share the same struct */ struct rw_semaphore { atomic_long_t count; struct list_head wait_list; raw_spinlock_t wait_lock; #ifdef CONFIG_RWSEM_SPIN_ON_OWNER struct optimistic_spin_queue osq; /* spinner MCS lock */ /* * Write owner. Used as a speculative check to see * if the owner is running on the cpu. */ struct task_struct *owner; #endif #ifdef CONFIG_DEBUG_LOCK_ALLOC struct lockdep_map dep_map; #endif };
On 2018/07/07 20:31, kbuild test robot wrote: > Hi Tetsuo, > > I love your patch! Yet something to improve: > > [auto build test ERROR on next-20180706] > [also build test ERROR on v4.18-rc3] > [cannot apply to tip/auto-latest tip/sched/core linus/master v4.18-rc3 v4.18-rc2 v4.18-rc1] > [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/Tetsuo-Handa/locking-lockdep-Dump-state-of-percpu_rwsem-upon-hung-up/20180707-143406 > config: mips-allmodconfig (attached as .config) > compiler: mips-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=mips > > All error/warnings (new ones prefixed by >>): > > In file included from include/linux/kernel.h:14:0, > from include/asm-generic/bug.h:18, > from arch/mips/include/asm/bug.h:42, > from include/linux/bug.h:5, > from include/linux/mmdebug.h:5, > from include/linux/mm.h:9, > from kernel/hung_task.c:8: > kernel/hung_task.c: In function 'dump_percpu_rwsem_state': >>> kernel/hung_task.c:95:20: error: passing argument 1 of 'atomic_long_read' from incompatible pointer type [-Werror=incompatible-pointer-types] > atomic_long_read(&sem->rw_sem.count)); > ^ > include/linux/printk.h:311:34: note: in definition of macro 'pr_info' > printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) > ^~~~~~~~~~~ > In file included from include/linux/atomic.h:1309:0, > from arch/mips/include/asm/processor.h:14, > from arch/mips/include/asm/thread_info.h:16, > from include/linux/thread_info.h:38, > from include/asm-generic/preempt.h:5, > from ./arch/mips/include/generated/asm/preempt.h:1, > from include/linux/preempt.h:81, > from include/linux/spinlock.h:51, > from include/linux/mmzone.h:8, > from include/linux/gfp.h:6, > from include/linux/mm.h:10, > from kernel/hung_task.c:8: > include/asm-generic/atomic-long.h:41:20: note: expected 'const atomic_long_t * {aka const struct <anonymous> *}' but argument is of type '__s32 * {aka int *}' > static inline long atomic_long_read##mo(const atomic_long_t *l) \ > ^ >>> include/asm-generic/atomic-long.h:47:1: note: in expansion of macro 'ATOMIC_LONG_READ_OP' > ATOMIC_LONG_READ_OP() > ^~~~~~~~~~~~~~~~~~~ > cc1: some warnings being treated as errors
| |