Subject: Re: linux-next: build failure after merge of the rdma tree

From: Jason Gunthorpe <[email-masked]>
Date: Mon, 8 Jul 2019 14:09:02 +0000

On Mon, Jul 08, 2019 at 01:03:51PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> After merging the rdma tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
> 
> In file included from include/asm-generic/percpu.h:7,
>                  from arch/x86/include/asm/percpu.h:544,
>                  from arch/x86/include/asm/preempt.h:6,
>                  from include/linux/preempt.h:78,
>                  from include/linux/spinlock.h:51,
>                  from include/linux/seqlock.h:36,
>                  from include/linux/time.h:6,
>                  from include/linux/ktime.h:24,
>                  from include/linux/timer.h:6,
>                  from include/linux/netdevice.h:24,
>                  from drivers/infiniband/sw/siw/siw_main.c:8:
> include/linux/percpu-defs.h:92:33: warning: '__pcpu_unique_use_cnt' initialized and declared 'extern'
>   extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name;  \
>                                  ^~~~~~~~~~~~~~
> include/linux/percpu-defs.h:115:2: note: in expansion of macro 'DEFINE_PER_CPU_SECTION'
>   DEFINE_PER_CPU_SECTION(type, name, "")
>   ^~~~~~~~~~~~~~~~~~~~~~
> drivers/infiniband/sw/siw/siw_main.c:129:8: note: in expansion of macro 'DEFINE_PER_CPU'
>  static DEFINE_PER_CPU(atomic_t, use_cnt = ATOMIC_INIT(0));
>         ^~~~~~~~~~~~~~
> include/linux/percpu-defs.h:93:26: error: redefinition of '__pcpu_unique_use_cnt'
>   __PCPU_DUMMY_ATTRS char __pcpu_unique_##name;   \
>                           ^~~~~~~~~~~~~~
> include/linux/percpu-defs.h:115:2: note: in expansion of macro 'DEFINE_PER_CPU_SECTION'
>   DEFINE_PER_CPU_SECTION(type, name, "")
>   ^~~~~~~~~~~~~~~~~~~~~~
> drivers/infiniband/sw/siw/siw_main.c:129:8: note: in expansion of macro 'DEFINE_PER_CPU'
>  static DEFINE_PER_CPU(atomic_t, use_cnt = ATOMIC_INIT(0));

Bernard, 

This looks like the wrong way to use DEFINE_PER_CPU these days. I'm
not sure why my compiles don't hit it, or why 0-day didn't say
something

Looking at the other atomic_t PER_CPU users they just rely on
automatic zero initialization, so this should just be:

  static DEFINE_PER_CPU(atomic_t, use_cnt);

?

Please confirm ASAP.

Jason