Re: [rcu:rcu/next 91/92] include/linux/srcutiny.h:96:2: note: in expansion of macro 'pr_alert'

From: Paul E. McKenney
Date: Wed May 24 2017 - 16:24:45 EST


On Thu, May 25, 2017 at 02:56:41AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next
> head: 71328ca7428fb7f5dfc146ee59ad9736df623cf3
> commit: 54ffb22bd8416ef9188dbe005b52ee5a1b5f6e5e [91/92] rcutorture: Move SRCU status printing to SRCU implementations
> config: blackfin-allmodconfig (attached as .config)
> compiler: bfin-uclinux-gcc (GCC) 6.2.0
> reproduce:
> wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout 54ffb22bd8416ef9188dbe005b52ee5a1b5f6e5e
> # save the attached .config to linux build tree
> make.cross ARCH=blackfin
>
> All error/warnings (new ones prefixed by >>):
>
> include/linux/srcutiny.h: In function 'srcu_torture_stats_print':
> >> arch/blackfin/kernel/module.c:7:40: error: 'mod' undeclared (first use in this function)
> #define pr_fmt(fmt) "module %s: " fmt, mod->name
> ^
> include/linux/printk.h:297:20: note: in expansion of macro 'pr_fmt'
> printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
> ^~~~~~
> >> include/linux/srcutiny.h:96:2: note: in expansion of macro 'pr_alert'
> pr_alert("%s%s Tiny SRCU per-CPU(idx=%d): (%hd,%hd)\n",
> ^~~~~~~~
> arch/blackfin/kernel/module.c:7:40: note: each undeclared identifier is reported only once for each function it appears in
> #define pr_fmt(fmt) "module %s: " fmt, mod->name
> ^
> include/linux/printk.h:297:20: note: in expansion of macro 'pr_fmt'
> printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
> ^~~~~~
> >> include/linux/srcutiny.h:96:2: note: in expansion of macro 'pr_alert'
> pr_alert("%s%s Tiny SRCU per-CPU(idx=%d): (%hd,%hd)\n",
> ^~~~~~~~

I confess, I don't see what is wrong with my pr_alert(). It instead
looks to me like Blackfin has a problem with pr_fmt().

Or am I missing something here?

Thanx, Paul

> vim +/pr_alert +96 include/linux/srcutiny.h
>
> 80 {
> 81 synchronize_srcu(sp);
> 82 }
> 83
> 84 static inline void srcu_barrier(struct srcu_struct *sp)
> 85 {
> 86 synchronize_srcu(sp);
> 87 }
> 88
> 89 /* Defined here to avoid size increase for non-torture kernels. */
> 90 static inline void srcu_torture_stats_print(struct srcu_struct *sp,
> 91 char *tt, char *tf)
> 92 {
> 93 int idx;
> 94
> 95 idx = READ_ONCE(sp->srcu_idx) & 0x1;
> > 96 pr_alert("%s%s Tiny SRCU per-CPU(idx=%d): (%hd,%hd)\n",
> 97 tt, tf, idx,
> 98 READ_ONCE(sp->srcu_lock_nesting[!idx]),
> 99 READ_ONCE(sp->srcu_lock_nesting[idx]));
> 100 }
> 101
> 102 #endif
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation