[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202003050249.qz9t2Xfp%lkp@intel.com>
Date: Thu, 5 Mar 2020 02:08:52 +0800
From: kbuild test robot <lkp@...el.com>
To: "Paul E. McKenney" <paulmck@...nel.org>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [rcu:dev.2020.02.29a 43/43] kernel/rcu/tasks.h:212:2: note: in
expansion of macro 'if'
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2020.02.29a
head: 61f7110d6b78f4c84ea5d5480185740840889af7
commit: 61f7110d6b78f4c84ea5d5480185740840889af7 [43/43] rcu-tasks: Add an RCU-tasks rude variant
config: riscv-randconfig-a001-20200304 (attached as .config)
compiler: riscv32-linux-gcc (GCC) 7.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 61f7110d6b78f4c84ea5d5480185740840889af7
# save the attached .config to linux build tree
GCC_VERSION=7.5.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/kernel.h:11:0,
from kernel/rcu/update.c:21:
kernel/rcu/tasks.h: In function 'check_holdout_task':
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:213:7: error: 'struct task_struct' has no member named 'rcu_tasks_nvcsw'
t->rcu_tasks_nvcsw != READ_ONCE(t->nvcsw) ||
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
kernel/rcu/tasks.h:216:28: error: 'struct task_struct' has no member named 'rcu_tasks_idle_cpu'
!is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
^
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:213:7: error: 'struct task_struct' has no member named 'rcu_tasks_nvcsw'
t->rcu_tasks_nvcsw != READ_ONCE(t->nvcsw) ||
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
kernel/rcu/tasks.h:216:28: error: 'struct task_struct' has no member named 'rcu_tasks_idle_cpu'
!is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
^
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:212:18: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE'
#define READ_ONCE(x) __READ_ONCE(x, 1)
^~~~~~~~~~~
kernel/rcu/tasks.h:212:7: note: in expansion of macro 'READ_ONCE'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~~~~~~~~
kernel/rcu/tasks.h:213:7: error: 'struct task_struct' has no member named 'rcu_tasks_nvcsw'
t->rcu_tasks_nvcsw != READ_ONCE(t->nvcsw) ||
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
>> kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
kernel/rcu/tasks.h:216:28: error: 'struct task_struct' has no member named 'rcu_tasks_idle_cpu'
!is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
^
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
(cond) ? \
^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~
kernel/rcu/tasks.h:212:2: note: in expansion of macro 'if'
if (!READ_ONCE(t->rcu_tasks_holdout) ||
^~
In file included from include/linux/kernel.h:11:0,
from kernel/rcu/update.c:21:
kernel/rcu/tasks.h:217:15: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, false);
^
include/linux/compiler.h:310:17: note: in definition of macro 'WRITE_ONCE'
union { typeof(x) __val; char __c[1]; } __u = \
^
kernel/rcu/tasks.h:217:15: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, false);
^
include/linux/compiler.h:311:30: note: in definition of macro 'WRITE_ONCE'
{ .__val = (__force typeof(x)) (val) }; \
^
kernel/rcu/tasks.h:217:15: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, false);
^
include/linux/compiler.h:312:22: note: in definition of macro 'WRITE_ONCE'
__write_once_size(&(x), __u.__c, sizeof(x)); \
^
kernel/rcu/tasks.h:217:15: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, false);
^
include/linux/compiler.h:312:42: note: in definition of macro 'WRITE_ONCE'
__write_once_size(&(x), __u.__c, sizeof(x)); \
^
In file included from kernel/rcu/update.c:562:0:
kernel/rcu/tasks.h:218:19: error: 'struct task_struct' has no member named 'rcu_tasks_holdout_list'
list_del_init(&t->rcu_tasks_holdout_list);
^~
In file included from include/linux/kernel.h:15:0,
from kernel/rcu/update.c:21:
kernel/rcu/tasks.h:233:5: error: 'struct task_struct' has no member named 'rcu_tasks_nvcsw'
t->rcu_tasks_nvcsw, t->nvcsw, t->rcu_tasks_holdout,
^
include/linux/printk.h:300:35: note: in definition of macro 'pr_alert'
printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
kernel/rcu/tasks.h:233:35: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
t->rcu_tasks_nvcsw, t->nvcsw, t->rcu_tasks_holdout,
^
include/linux/printk.h:300:35: note: in definition of macro 'pr_alert'
printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
kernel/rcu/tasks.h:234:5: error: 'struct task_struct' has no member named 'rcu_tasks_idle_cpu'
t->rcu_tasks_idle_cpu, cpu);
^
include/linux/printk.h:300:35: note: in definition of macro 'pr_alert'
printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
In file included from kernel/rcu/update.c:562:0:
kernel/rcu/tasks.h: At top level:
kernel/rcu/tasks.h:239:38: warning: 'struct rcu_tasks' declared inside parameter list will not be visible outside of this definition or declaration
static void rcu_tasks_wait_gp(struct rcu_tasks *rtp)
^~~~~~~~~
kernel/rcu/tasks.h: In function 'rcu_tasks_wait_gp':
kernel/rcu/tasks.h:271:5: error: 'struct task_struct' has no member named 'rcu_tasks_nvcsw'
t->rcu_tasks_nvcsw = READ_ONCE(t->nvcsw);
^~
In file included from include/linux/kernel.h:11:0,
from kernel/rcu/update.c:21:
kernel/rcu/tasks.h:272:16: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, true);
^
include/linux/compiler.h:310:17: note: in definition of macro 'WRITE_ONCE'
union { typeof(x) __val; char __c[1]; } __u = \
^
kernel/rcu/tasks.h:272:16: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, true);
^
include/linux/compiler.h:311:30: note: in definition of macro 'WRITE_ONCE'
{ .__val = (__force typeof(x)) (val) }; \
^
kernel/rcu/tasks.h:272:16: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, true);
^
include/linux/compiler.h:312:22: note: in definition of macro 'WRITE_ONCE'
__write_once_size(&(x), __u.__c, sizeof(x)); \
^
kernel/rcu/tasks.h:272:16: error: 'struct task_struct' has no member named 'rcu_tasks_holdout'
WRITE_ONCE(t->rcu_tasks_holdout, true);
^
include/linux/compiler.h:312:42: note: in definition of macro 'WRITE_ONCE'
__write_once_size(&(x), __u.__c, sizeof(x)); \
^
In file included from kernel/rcu/update.c:562:0:
vim +/if +212 kernel/rcu/tasks.h
6b80543d90000c Paul E. McKenney 2020-03-02 205
6b80543d90000c Paul E. McKenney 2020-03-02 206 /* See if tasks are still holding out, complain if so. */
6b80543d90000c Paul E. McKenney 2020-03-02 207 static void check_holdout_task(struct task_struct *t,
6b80543d90000c Paul E. McKenney 2020-03-02 208 bool needreport, bool *firstreport)
6b80543d90000c Paul E. McKenney 2020-03-02 209 {
6b80543d90000c Paul E. McKenney 2020-03-02 210 int cpu;
6b80543d90000c Paul E. McKenney 2020-03-02 211
6b80543d90000c Paul E. McKenney 2020-03-02 @212 if (!READ_ONCE(t->rcu_tasks_holdout) ||
6b80543d90000c Paul E. McKenney 2020-03-02 213 t->rcu_tasks_nvcsw != READ_ONCE(t->nvcsw) ||
6b80543d90000c Paul E. McKenney 2020-03-02 214 !READ_ONCE(t->on_rq) ||
6b80543d90000c Paul E. McKenney 2020-03-02 215 (IS_ENABLED(CONFIG_NO_HZ_FULL) &&
6b80543d90000c Paul E. McKenney 2020-03-02 216 !is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
6b80543d90000c Paul E. McKenney 2020-03-02 217 WRITE_ONCE(t->rcu_tasks_holdout, false);
6b80543d90000c Paul E. McKenney 2020-03-02 218 list_del_init(&t->rcu_tasks_holdout_list);
6b80543d90000c Paul E. McKenney 2020-03-02 219 put_task_struct(t);
6b80543d90000c Paul E. McKenney 2020-03-02 220 return;
6b80543d90000c Paul E. McKenney 2020-03-02 221 }
6b80543d90000c Paul E. McKenney 2020-03-02 222 rcu_request_urgent_qs_task(t);
6b80543d90000c Paul E. McKenney 2020-03-02 223 if (!needreport)
6b80543d90000c Paul E. McKenney 2020-03-02 224 return;
6b80543d90000c Paul E. McKenney 2020-03-02 225 if (*firstreport) {
6b80543d90000c Paul E. McKenney 2020-03-02 226 pr_err("INFO: rcu_tasks detected stalls on tasks:\n");
6b80543d90000c Paul E. McKenney 2020-03-02 227 *firstreport = false;
6b80543d90000c Paul E. McKenney 2020-03-02 228 }
6b80543d90000c Paul E. McKenney 2020-03-02 229 cpu = task_cpu(t);
6b80543d90000c Paul E. McKenney 2020-03-02 230 pr_alert("%p: %c%c nvcsw: %lu/%lu holdout: %d idle_cpu: %d/%d\n",
6b80543d90000c Paul E. McKenney 2020-03-02 231 t, ".I"[is_idle_task(t)],
6b80543d90000c Paul E. McKenney 2020-03-02 232 "N."[cpu < 0 || !tick_nohz_full_cpu(cpu)],
6b80543d90000c Paul E. McKenney 2020-03-02 233 t->rcu_tasks_nvcsw, t->nvcsw, t->rcu_tasks_holdout,
6b80543d90000c Paul E. McKenney 2020-03-02 234 t->rcu_tasks_idle_cpu, cpu);
6b80543d90000c Paul E. McKenney 2020-03-02 235 sched_show_task(t);
6b80543d90000c Paul E. McKenney 2020-03-02 236 }
6b80543d90000c Paul E. McKenney 2020-03-02 237
:::::: The code at line 212 was first introduced by commit
:::::: 6b80543d90000c684123b05f075ac1433d99fa85 tasks-rcu: Move Tasks RCU to its own file
:::::: TO: Paul E. McKenney <paulmck@...nel.org>
:::::: CC: Paul E. McKenney <paulmck@...nel.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (27666 bytes)
Powered by blists - more mailing lists