* [rcu:rcu/next 59/91] tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu'
@ 2017-04-23 5:31 kbuild test robot
2017-04-23 16:22 ` Paul E. McKenney
0 siblings, 1 reply; 3+ messages in thread
From: kbuild test robot @ 2017-04-23 5:31 UTC (permalink / raw)
To: Paul E. McKenney; +Cc: kbuild-all, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1199 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next
head: 87c458e6304c6a1b37bf856e88c70fc37f08851f
commit: da915ad5cf25b5f5d358dd3670c3378d8ae8c03e [59/91] srcu: Parallelize callback handling
config: tile-allnoconfig (attached as .config)
compiler: tilegx-linux-gcc (GCC) 4.6.2
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout da915ad5cf25b5f5d358dd3670c3378d8ae8c03e
# save the attached .config to linux build tree
make.cross ARCH=tile
All errors (new ones prefixed by >>):
kernel/rcu/tree.o: In function `srcu_online_cpu':
>> tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu'
kernel/rcu/srcutree.o:srcutree.c:(.text+0x2120): first defined here
kernel/rcu/tree.o: In function `srcu_offline_cpu':
>> tree.c:(.text+0x4250): multiple definition of `srcu_offline_cpu'
kernel/rcu/srcutree.o:srcutree.c:(.text+0x2160): first defined here
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 4284 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [rcu:rcu/next 59/91] tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' 2017-04-23 5:31 [rcu:rcu/next 59/91] tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' kbuild test robot @ 2017-04-23 16:22 ` Paul E. McKenney 2017-04-24 8:10 ` [tip:core/rcu] srcu: Fix Kconfig botch when SRCU not selected tip-bot for Paul E. McKenney 0 siblings, 1 reply; 3+ messages in thread From: Paul E. McKenney @ 2017-04-23 16:22 UTC (permalink / raw) To: kbuild test robot; +Cc: kbuild-all, linux-kernel, mingo On Sun, Apr 23, 2017 at 01:31:21PM +0800, kbuild test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next > head: 87c458e6304c6a1b37bf856e88c70fc37f08851f > commit: da915ad5cf25b5f5d358dd3670c3378d8ae8c03e [59/91] srcu: Parallelize callback handling > config: tile-allnoconfig (attached as .config) > compiler: tilegx-linux-gcc (GCC) 4.6.2 > reproduce: > wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > git checkout da915ad5cf25b5f5d358dd3670c3378d8ae8c03e > # save the attached .config to linux build tree > make.cross ARCH=tile > > All errors (new ones prefixed by >>): > > kernel/rcu/tree.o: In function `srcu_online_cpu': > >> tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' > kernel/rcu/srcutree.o:srcutree.c:(.text+0x2120): first defined here > kernel/rcu/tree.o: In function `srcu_offline_cpu': > >> tree.c:(.text+0x4250): multiple definition of `srcu_offline_cpu' > kernel/rcu/srcutree.o:srcutree.c:(.text+0x2160): first defined here (Adding Ingo on CC because he also saw this in -tip.) Hmmm... The attached .config has CONFIG_TREE_SRCU=y but no sign of CONFIG_SRCU, which would definitely result in what you are seeing. Taking a look at tile's Kconfig files in current mainline finds me only a "select SRCU", which should not be a problem. OK, time to look at the SRCU code in init/Kconfig: config TINY_SRCU bool default y if TINY_RCU && !CLASSIC_SRCU help This option selects the single-CPU non-preemptible version of SRCU. config TREE_SRCU bool default y if !TINY_RCU && !CLASSIC_SRCU help This option selects the full-fledged version of SRCU. And this says that if CONFIG_CLASSIC_SRCU is not selected, you get exactly what the tile guys got. I didn't see this because I am always running rcutorture, which always selects CONFIG_SRCU. Sigh!!! Does the following patch help? Thanx, Paul ------------------------------------------------------------------------ commit 78672b6811bde47aacb0f8bcb128c0107a088849 Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Date: Sun Apr 23 09:13:44 2017 -0700 srcu: Fix Kconfig botch when SRCU not selected If the CONFIG_SRCU option is not selected, for example, when building tile allnoconfig, the following build errors appear: kernel/rcu/tree.o: In function `srcu_online_cpu': tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' kernel/rcu/srcutree.o:srcutree.c:(.text+0x2120): first defined here kernel/rcu/tree.o: In function `srcu_offline_cpu': tree.c:(.text+0x4250): multiple definition of `srcu_offline_cpu' kernel/rcu/srcutree.o:srcutree.c:(.text+0x2160): first defined here The corresponding .config file shows CONFIG_TREE_SRCU=y, but no sign of CONFIG_SRCU, which fatally confuses SRCU's #ifdefs, resulting in the above errors. The reason this occurs is the folowing line in init/Kconfig's definition for TREE_SRCU: default y if !TINY_RCU && !CLASSIC_SRCU If CONFIG_CLASSIC_SRCU=n, as it will be in for allnoconfig, and if CONFIG_SMP=y, then we will get CONFIG_TREE_SRCU=y but no CONFIG_SRCU, as seen in the .config file, and which will result in the above errors. This error did not show up during rcutorture testing because rcutorture forces CONFIG_SRCU=y, as it must to prevent build errors in rcutorture.c. This commit therefore conditions TREE_SRCU (and TINY_SRCU, while it is at it) with SRCU, like this: default y if SRCU && !TINY_RCU && !CLASSIC_SRCU Reported-by: kbuild test robot <fengguang.wu@intel.com> Reported-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> diff --git a/init/Kconfig b/init/Kconfig index 4119a44e4157..fe72c12e06a5 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -545,13 +545,13 @@ config CLASSIC_SRCU config TINY_SRCU bool - default y if TINY_RCU && !CLASSIC_SRCU + default y if SRCU && TINY_RCU && !CLASSIC_SRCU help This option selects the single-CPU non-preemptible version of SRCU. config TREE_SRCU bool - default y if !TINY_RCU && !CLASSIC_SRCU + default y if SRCU && !TINY_RCU && !CLASSIC_SRCU help This option selects the full-fledged version of SRCU. ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [tip:core/rcu] srcu: Fix Kconfig botch when SRCU not selected 2017-04-23 16:22 ` Paul E. McKenney @ 2017-04-24 8:10 ` tip-bot for Paul E. McKenney 0 siblings, 0 replies; 3+ messages in thread From: tip-bot for Paul E. McKenney @ 2017-04-24 8:10 UTC (permalink / raw) To: linux-tip-commits; +Cc: fengguang.wu, tglx, linux-kernel, hpa, paulmck, mingo Commit-ID: 677df9d4615a2db6774cd0e8951bf7404b858b3b Gitweb: http://git.kernel.org/tip/677df9d4615a2db6774cd0e8951bf7404b858b3b Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> AuthorDate: Sun, 23 Apr 2017 09:22:05 -0700 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Mon, 24 Apr 2017 08:14:48 +0200 srcu: Fix Kconfig botch when SRCU not selected If the CONFIG_SRCU option is not selected, for example, when building arch/tile allnoconfig, the following build errors appear: kernel/rcu/tree.o: In function `srcu_online_cpu': tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' kernel/rcu/srcutree.o:srcutree.c:(.text+0x2120): first defined here kernel/rcu/tree.o: In function `srcu_offline_cpu': tree.c:(.text+0x4250): multiple definition of `srcu_offline_cpu' kernel/rcu/srcutree.o:srcutree.c:(.text+0x2160): first defined here The corresponding .config file shows CONFIG_TREE_SRCU=y, but no sign of CONFIG_SRCU, which fatally confuses SRCU's #ifdefs, resulting in the above errors. The reason this occurs is the folowing line in init/Kconfig's definition for TREE_SRCU: default y if !TINY_RCU && !CLASSIC_SRCU If CONFIG_CLASSIC_SRCU=n, as it will be in for allnoconfig, and if CONFIG_SMP=y, then we will get CONFIG_TREE_SRCU=y but no CONFIG_SRCU, as seen in the .config file, and which will result in the above errors. This error did not show up during rcutorture testing because rcutorture forces CONFIG_SRCU=y, as it must to prevent build errors in rcutorture.c. This commit therefore conditions TREE_SRCU (and TINY_SRCU, while it is at it) with SRCU, like this: default y if SRCU && !TINY_RCU && !CLASSIC_SRCU Reported-by: kbuild test robot <fengguang.wu@intel.com> Reported-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Link: http://lkml.kernel.org/r/20170423162205.GP3956@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- init/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index 4119a44..fe72c12 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -545,13 +545,13 @@ config CLASSIC_SRCU config TINY_SRCU bool - default y if TINY_RCU && !CLASSIC_SRCU + default y if SRCU && TINY_RCU && !CLASSIC_SRCU help This option selects the single-CPU non-preemptible version of SRCU. config TREE_SRCU bool - default y if !TINY_RCU && !CLASSIC_SRCU + default y if SRCU && !TINY_RCU && !CLASSIC_SRCU help This option selects the full-fledged version of SRCU. ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-04-24 8:11 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-04-23 5:31 [rcu:rcu/next 59/91] tree.c:(.text+0x4248): multiple definition of `srcu_online_cpu' kbuild test robot 2017-04-23 16:22 ` Paul E. McKenney 2017-04-24 8:10 ` [tip:core/rcu] srcu: Fix Kconfig botch when SRCU not selected tip-bot for Paul E. McKenney
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.