Re: stable-rc/linux-3.18.y build: 184 builds: 3 failed, 181 passed, 3 errors (v3.18.86-23-g635374e30005)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 6 Dec 2017 13:47:38 -0800
"Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> wrote:

> On Wed, Dec 06, 2017 at 09:56:36PM +0100, Arnd Bergmann wrote:
> > On Wed, Dec 6, 2017 at 8:24 PM, kernelci.org bot <bot@xxxxxxxxxxxx> wrote:
> > >
> > > stable-rc/linux-3.18.y build: 184 builds: 3 failed, 181 passed, 3 errors (v3.18.86-23-g635374e30005)
> > > Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-3.18.y/kernel/v3.18.86-23-g635374e30005/
> > > Tree: stable-rc
> > > Branch: linux-3.18.y
> > > Git Describe: v3.18.86-23-g635374e30005
> > > Git Commit: 635374e300051ce71a548aff2c469fbda3910c21
> > > Git URL: http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > Built: 4 unique architectures
> > >
> > > Build Failures Detected:
> > >
> > > x86: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
> > > defconfig+CONFIG_LKDTM=y FAIL
> > > i386_defconfig FAIL
> > > x86_64_defconfig FAIL
> > >
> > > Errors Detected:
> > >
> > > x86: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
> > > defconfig+CONFIG_LKDTM=y 1 error
> > > i386_defconfig 1 error
> > > x86_64_defconfig 1 error
> > > Errors summary:
> > > 2 kprobes.c:(.text+0x91f42): undefined reference to `synchronize_rcu_tasks'
> > > 1 kprobes.c:(.text+0x80dc8): undefined reference to `synchronize_rcu_tasks'
> > 
> > Same as v4.9, caused by 98efb31592b4 ("kprobes: Use synchronize_rcu_tasks()
> >  for optprobe with CONFIG_PREEMPT=y").
> 
> Looks to me like they are both missing 7e42776d5ed1f ("rcu: Drive
> TASKS_RCU directly off of PREEMPT"), which is shown below.
> 
> Masami, how would you like to proceed?

I think the commit 98efb31592b4 is an improvement patch,
so do not need to pull on 3.18. Maybe 4.14 is easy to pull
because we just need below patch. but for 3.18, it needs
more depending patches, doesn't it?

Thank you,

> 
> 							Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
> commit 7e42776d5ed1fe9a941ed8876c5d15cd7cf5d89f
> Author: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> Date:   Thu May 25 08:05:00 2017 -0700
> 
>     rcu: Drive TASKS_RCU directly off of PREEMPT
>     
>     The actual use of TASKS_RCU is only when PREEMPT, otherwise RCU-sched
>     is used instead.  This commit therefore makes synchronize_rcu_tasks()
>     and call_rcu_tasks() available always, but mapped to synchronize_sched()
>     and call_rcu_sched(), respectively, when !PREEMPT.  This approach also
>     allows some #ifdefs to be removed from rcutorture.
>     
>     Reported-by: Ingo Molnar <mingo@xxxxxxxxxx>
>     Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
>     Reviewed-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
>     Acked-by: Ingo Molnar <mingo@xxxxxxxxxx>
> 
> diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
> index f816fc72b51e..c3f380befdd7 100644
> --- a/include/linux/rcupdate.h
> +++ b/include/linux/rcupdate.h
> @@ -58,8 +58,6 @@ void call_rcu(struct rcu_head *head, rcu_callback_t func);
>  void call_rcu_bh(struct rcu_head *head, rcu_callback_t func);
>  void call_rcu_sched(struct rcu_head *head, rcu_callback_t func);
>  void synchronize_sched(void);
> -void call_rcu_tasks(struct rcu_head *head, rcu_callback_t func);
> -void synchronize_rcu_tasks(void);
>  void rcu_barrier_tasks(void);
>  
>  #ifdef CONFIG_PREEMPT_RCU
> @@ -176,10 +174,14 @@ extern struct srcu_struct tasks_rcu_exit_srcu;
>  		rcu_all_qs(); \
>  		rcu_note_voluntary_context_switch_lite(t); \
>  	} while (0)
> +void call_rcu_tasks(struct rcu_head *head, rcu_callback_t func);
> +void synchronize_rcu_tasks(void);
>  #else /* #ifdef CONFIG_TASKS_RCU */
>  #define TASKS_RCU(x) do { } while (0)
>  #define rcu_note_voluntary_context_switch_lite(t)	do { } while (0)
>  #define rcu_note_voluntary_context_switch(t)		rcu_all_qs()
> +#define call_rcu_tasks call_rcu_sched
> +#define synchronize_rcu_tasks synchronize_sched
>  #endif /* #else #ifdef CONFIG_TASKS_RCU */
>  
>  /**
> diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig
> index be90c945063f..9210379c0353 100644
> --- a/kernel/rcu/Kconfig
> +++ b/kernel/rcu/Kconfig
> @@ -69,8 +69,7 @@ config TREE_SRCU
>  	  This option selects the full-fledged version of SRCU.
>  
>  config TASKS_RCU
> -	bool
> -	default n
> +	def_bool PREEMPT
>  	select SRCU
>  	help
>  	  This option enables a task-based RCU implementation that uses
> diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> index b8f7f8ce8575..b284c861a511 100644
> --- a/kernel/rcu/rcutorture.c
> +++ b/kernel/rcu/rcutorture.c
> @@ -696,8 +696,6 @@ static struct rcu_torture_ops sched_ops = {
>  	.name		= "sched"
>  };
>  
> -#ifdef CONFIG_TASKS_RCU
> -
>  /*
>   * Definitions for RCU-tasks torture testing.
>   */
> @@ -735,24 +733,11 @@ static struct rcu_torture_ops tasks_ops = {
>  	.name		= "tasks"
>  };
>  
> -#define RCUTORTURE_TASKS_OPS &tasks_ops,
> -
>  static bool __maybe_unused torturing_tasks(void)
>  {
>  	return cur_ops == &tasks_ops;
>  }
>  
> -#else /* #ifdef CONFIG_TASKS_RCU */
> -
> -#define RCUTORTURE_TASKS_OPS
> -
> -static bool __maybe_unused torturing_tasks(void)
> -{
> -	return false;
> -}
> -
> -#endif /* #else #ifdef CONFIG_TASKS_RCU */
> -
>  /*
>   * RCU torture priority-boost testing.  Runs one real-time thread per
>   * CPU for moderate bursts, repeatedly registering RCU callbacks and
> @@ -1749,7 +1734,7 @@ rcu_torture_init(void)
>  	int firsterr = 0;
>  	static struct rcu_torture_ops *torture_ops[] = {
>  		&rcu_ops, &rcu_bh_ops, &rcu_busted_ops, &srcu_ops, &srcud_ops,
> -		&sched_ops, RCUTORTURE_TASKS_OPS
> +		&sched_ops, &tasks_ops,
>  	};
>  
>  	if (!torture_init_begin(torture_type, verbose, &torture_runnable))
> diff --git a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
> index 9ad3f89c8dc7..af6fca03602f 100644
> --- a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
> +++ b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
> @@ -69,11 +69,11 @@ CONFIG_RCU_TORTURE_TEST_RUNNABLE
>  CONFIG_PREEMPT_RCU
>  CONFIG_TREE_RCU
>  CONFIG_TINY_RCU
> +CONFIG_TASKS_RCU
>  
>  	These are controlled by CONFIG_PREEMPT and/or CONFIG_SMP.
>  
>  CONFIG_SRCU
> -CONFIG_TASKS_RCU
>  
>  	Selected by CONFIG_RCU_TORTURE_TEST, so cannot disable.
>  
> 


-- 
Masami Hiramatsu <mhiramat@xxxxxxxxxx>



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]