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

From: Jason Gunthorpe
Date: Mon Jul 08 2019 - 10:09:08 EST


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