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

From: "Rafael J. Wysocki" <[email-masked]>
Date: Wed, 31 Jul 2019 12:27:01 +0200

On Wednesday, July 31, 2019 7:34:19 AM CEST Stephen Rothwell wrote:
> 
> --Sig_/RVaztRR.13XAL2aXFk8lo/g
> Content-Type: text/plain; charset=US-ASCII
> Content-Transfer-Encoding: quoted-printable
> 
> Hi all,
> 
> After merging the pm tree, today's linux-next build (x86_64 allnoconfig)
> failed like this:
> 
> x86_64-linux-gnu-ld: kernel/sched/core.o: in function `cpuidle_poll_time':
> core.c:(.text+0x230): multiple definition of `cpuidle_poll_time'; arch/x86/=
> kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/loadavg.o: in function `cpuidle_poll_time=
> ':
> loadavg.c:(.text+0x0): multiple definition of `cpuidle_poll_time'; arch/x86=
> /kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/clock.o: in function `cpuidle_poll_time':
> clock.c:(.text+0x0): multiple definition of `cpuidle_poll_time'; arch/x86/k=
> ernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/cputime.o: in function `cpuidle_poll_time=
> ':
> cputime.c:(.text+0x0): multiple definition of `cpuidle_poll_time'; arch/x86=
> /kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/idle.o: in function `cpuidle_poll_time':
> idle.c:(.text+0xd0): multiple definition of `cpuidle_poll_time'; arch/x86/k=
> ernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/fair.o: in function `cpuidle_poll_time':
> fair.c:(.text+0xb20): multiple definition of `cpuidle_poll_time'; arch/x86/=
> kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/rt.o: in function `cpuidle_poll_time':
> rt.c:(.text+0x790): multiple definition of `cpuidle_poll_time'; arch/x86/ke=
> rnel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/deadline.o: in function `cpuidle_poll_tim=
> e':
> deadline.c:(.text+0xce0): multiple definition of `cpuidle_poll_time'; arch/=
> x86/kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/wait.o: in function `cpuidle_poll_time':
> wait.c:(.text+0x1d0): multiple definition of `cpuidle_poll_time'; arch/x86/=
> kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/wait_bit.o: in function `cpuidle_poll_tim=
> e':
> wait_bit.c:(.text+0x50): multiple definition of `cpuidle_poll_time'; arch/x=
> 86/kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/swait.o: in function `cpuidle_poll_time':
> swait.c:(.text+0x30): multiple definition of `cpuidle_poll_time'; arch/x86/=
> kernel/process.o:process.c:(.text+0xc0): first defined here
> x86_64-linux-gnu-ld: kernel/sched/completion.o: in function `cpuidle_poll_t=
> ime':
> completion.c:(.text+0x0): multiple definition of `cpuidle_poll_time'; arch/=
> x86/kernel/process.o:process.c:(.text+0xc0): first defined here
> 
> Caused by commit
> 
>   259231a04561 ("cpuidle: add poll_limit_ns to cpuidle_device structure")
> 
> I have added the following patch for today:
>

I've applied this patch to my pm-cpuidle branch, thanks Stephen!

> From: Stephen Rothwell <[email-masked]>
> Date: Wed, 31 Jul 2019 15:29:52 +1000
> Subject: [PATCH] cpuidle: header file stubs must be "static inline"
> 
> An x86_64 allmodconfig build produces these errors:
> 
> x86_64-linux-gnu-ld: kernel/sched/core.o: in function `cpuidle_poll_time':
> core.c:(.text+0x230): multiple definition of `cpuidle_poll_time'; arch/x86/=
> kernel/process.o:process.c:(.text+0xc0): first defined here
> 
> (and more)
> 
> Fixes: 259231a04561 ("cpuidle: add poll_limit_ns to cpuidle_device structur=
> e")
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
>  include/linux/cpuidle.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
> index ba535a1a47d5..1a9f54eb3aa1 100644
> --- a/include/linux/cpuidle.h
> +++ b/include/linux/cpuidle.h
> @@ -170,7 +170,7 @@ static inline int cpuidle_enter(struct cpuidle_driver *=
> drv,
>  				struct cpuidle_device *dev, int index)
>  {return -ENODEV; }
>  static inline void cpuidle_reflect(struct cpuidle_device *dev, int index) =
> { }
> -extern u64 cpuidle_poll_time(struct cpuidle_driver *drv,
> +static inline u64 cpuidle_poll_time(struct cpuidle_driver *drv,
>  			     struct cpuidle_device *dev)
>  {return 0; }
>  static inline int cpuidle_register_driver(struct cpuidle_driver *drv)
> --=20
> 2.20.1
> 
> --=20
> Cheers,
> Stephen Rothwell
> 
> --Sig_/RVaztRR.13XAL2aXFk8lo/g
> Content-Type: application/pgp-signature
> Content-Description: OpenPGP digital signature
> 
> 
> --Sig_/RVaztRR.13XAL2aXFk8lo/g--
>