Message ID | 20220717143801.189865-1-qiang1.zhang@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | rcu-tasks: Make RCU Tasks Trace checking for userspace execution | expand |
Hi Zqiang, Thank you for the patch! Yet something to improve: [auto build test ERROR on paulmck-rcu/dev] [also build test ERROR on linus/master v5.19-rc6 next-20220715] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Zqiang/rcu-tasks-Make-RCU-Tasks-Trace-checking-for-userspace-execution/20220717-223556 base: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev config: hexagon-randconfig-r041-20220717 (https://download.01.org/0day-ci/archive/20220718/202207180246.5cKJdGrg-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 45067f8fbf61284839c739807c2da2e2505661eb) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/d078656cad783fefa6506b05e7dfd1ce43f23eb0 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Zqiang/rcu-tasks-Make-RCU-Tasks-Trace-checking-for-userspace-execution/20220717-223556 git checkout d078656cad783fefa6506b05e7dfd1ce43f23eb0 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from kernel/rcu/tree.c:4638: >> kernel/rcu/tree_plugin.h:979:3: error: call to undeclared function 'rcu_tasks_trace_qs'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] rcu_tasks_trace_qs(current); ^ 1 error generated. vim +/rcu_tasks_trace_qs +979 kernel/rcu/tree_plugin.h 959 960 /* 961 * Check to see if this CPU is in a non-context-switch quiescent state, 962 * namely user mode and idle loop. 963 */ 964 static void rcu_flavor_sched_clock_irq(int user) 965 { 966 if (user || rcu_is_cpu_rrupt_from_idle()) { 967 968 /* 969 * Get here if this CPU took its interrupt from user 970 * mode or from the idle loop, and if this is not a 971 * nested interrupt. In this case, the CPU is in 972 * a quiescent state, so note it. 973 * 974 * No memory barrier is required here because rcu_qs() 975 * references only CPU-local variables that other CPUs 976 * neither access nor modify, at least not while the 977 * corresponding CPU is online. 978 */ > 979 rcu_tasks_trace_qs(current); 980 rcu_qs(); 981 } 982 } 983
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 4152816dd29f..764cc4db4134 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -976,7 +976,7 @@ static void rcu_flavor_sched_clock_irq(int user) * neither access nor modify, at least not while the * corresponding CPU is online. */ - + rcu_tasks_trace_qs(current); rcu_qs(); } }
For RCU tasks trace, the userspace execution is also a valid quiescent state, if the task is in userspace, the ->trc_reader_nesting should be zero and if the ->trc_reader_special.b.need_qs is not set, set the tasks ->trc_reader_special.b.need_qs is TRC_NEED_QS_CHECKED, this cause grace-period kthread remove it from holdout list if it remains here. This commit add rcu_tasks_trace_qs() to rcu_flavor_sched_clock_irq() when the kernel built with no PREEMPT_RCU. Signed-off-by: Zqiang <qiang1.zhang@intel.com> --- kernel/rcu/tree_plugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)