[rcu:dev 38/125] kernel/rcu/tree_plugin.h:785:14: error: implicit declaration of function 'rcu_is_cpu_rrupt_from_idle'; did you mean 'rcu_prepare_for_idle'?

From: kbuild test robot
Date: Tue Jul 10 2018 - 17:26:46 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
head: c155a9e10fd45235f39043c9280d0e0cea89b880
commit: d0498815d6a3cda16e1c56857674938acd7cab6e [38/125] rcu: Define RCU-sched API in terms of RCU for Tree RCU PREEMPT builds
config: x86_64-randconfig-x007-201827 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
git checkout d0498815d6a3cda16e1c56857674938acd7cab6e
# save the attached .config to linux build tree
make ARCH=x86_64

Note: the rcu/dev HEAD c155a9e10fd45235f39043c9280d0e0cea89b880 builds fine.
It only hurts bisectibility.

All error/warnings (new ones prefixed by >>):

In file included from include/linux/kernel.h:10:0,
from kernel/rcu/tree.c:34:
kernel/rcu/tree_plugin.h: In function 'rcu_flavor_check_callbacks':
>> kernel/rcu/tree_plugin.h:785:14: error: implicit declaration of function 'rcu_is_cpu_rrupt_from_idle'; did you mean 'rcu_prepare_for_idle'? [-Werror=implicit-function-declaration]
if (user || rcu_is_cpu_rrupt_from_idle()) {
^
include/linux/compiler.h:58:30: note: in definition of macro '__trace_if'
if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
^~~~
>> kernel/rcu/tree_plugin.h:785:2: note: in expansion of macro 'if'
if (user || rcu_is_cpu_rrupt_from_idle()) {
^~
cc1: some warnings being treated as errors

vim +785 kernel/rcu/tree_plugin.h

772
773 /*
774 * Check for a quiescent state from the current CPU. When a task blocks,
775 * the task is recorded in the corresponding CPU's rcu_node structure,
776 * which is checked elsewhere.
777 *
778 * Caller must disable hard irqs.
779 */
780 static void rcu_flavor_check_callbacks(int user)
781 {
782 struct rcu_state *rsp = &rcu_state;
783 struct task_struct *t = current;
784
> 785 if (user || rcu_is_cpu_rrupt_from_idle()) {
786 rcu_note_voluntary_context_switch(current);
787 }
788 if (t->rcu_read_lock_nesting > 0 ||
789 (preempt_count() & (PREEMPT_MASK | SOFTIRQ_MASK))) {
790 /* No QS, force context switch if deferred. */
791 if (rcu_preempt_need_deferred_qs(t))
792 resched_cpu(smp_processor_id());
793 } else if (rcu_preempt_need_deferred_qs(t)) {
794 rcu_preempt_deferred_qs(t); /* Report deferred QS. */
795 return;
796 } else if (!t->rcu_read_lock_nesting) {
797 rcu_qs(); /* Report immediate QS. */
798 return;
799 }
800
801 /* If GP is oldish, ask for help from rcu_read_unlock_special(). */
802 if (t->rcu_read_lock_nesting > 0 &&
803 __this_cpu_read(rcu_data_p->core_needs_qs) &&
804 __this_cpu_read(rcu_data_p->cpu_no_qs.b.norm) &&
805 !t->rcu_read_unlock_special.b.need_qs &&
806 time_after(jiffies, rsp->gp_start + HZ))
807 t->rcu_read_unlock_special.b.need_qs = true;
808 }
809

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip