Re: [rcu:dev.2019.03.20b 59/83] kernel/rcu/tree_plugin.h:612:8: error: 'rcu_softirq_enabled' undeclared; did you mean 'trace_softirqs_enabled'?

From: Paul E. McKenney
Date: Sun Mar 24 2019 - 19:44:59 EST


On Sat, Mar 23, 2019 at 10:16:23AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2019.03.20b
> head: 6d4434b4b4df791620743178e1419de882b44c7b
> commit: d0f41d341df0520e900cac03de05bbbd11abdcd9 [59/83] rcu: Enable elimination of Tree-RCU softirq processing
> config: i386-randconfig-x002-201911 (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> git checkout d0f41d341df0520e900cac03de05bbbd11abdcd9
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: the rcu/dev.2019.03.20b HEAD 6d4434b4b4df791620743178e1419de882b44c7b builds fine.
> It only hurts bisectibility.
>
> All errors (new ones prefixed by >>):
>
> In file included from kernel/rcu/tree.c:3489:0:
> kernel/rcu/tree_plugin.h: In function 'rcu_read_unlock_special':
> >> kernel/rcu/tree_plugin.h:612:8: error: 'rcu_softirq_enabled' undeclared (first use in this function); did you mean 'trace_softirqs_enabled'?
> if (rcu_softirq_enabled)
> ^~~~~~~~~~~~~~~~~~~
> trace_softirqs_enabled
> kernel/rcu/tree_plugin.h:612:8: note: each undeclared identifier is reported only once for each function it appears in

This commit has been superseced by 132e805a28dc, which I believe has fixed
this. (Famous last words!)

Thanx, Paul

> vim +612 kernel/rcu/tree_plugin.h
>
> 588
> 589 /*
> 590 * Handle special cases during rcu_read_unlock(), such as needing to
> 591 * notify RCU core processing or task having blocked during the RCU
> 592 * read-side critical section.
> 593 */
> 594 static void rcu_read_unlock_special(struct task_struct *t)
> 595 {
> 596 unsigned long flags;
> 597 bool preempt_bh_were_disabled =
> 598 !!(preempt_count() & (PREEMPT_MASK | SOFTIRQ_MASK));
> 599 bool irqs_were_disabled;
> 600
> 601 /* NMI handlers cannot block and cannot safely manipulate state. */
> 602 if (in_nmi())
> 603 return;
> 604
> 605 local_irq_save(flags);
> 606 irqs_were_disabled = irqs_disabled_flags(flags);
> 607 if (preempt_bh_were_disabled || irqs_were_disabled) {
> 608 WRITE_ONCE(t->rcu_read_unlock_special.b.exp_hint, false);
> 609 /* Need to defer quiescent state until everything is enabled. */
> 610 if (irqs_were_disabled) {
> 611 /* Enabling irqs does not reschedule, so... */
> > 612 if (rcu_softirq_enabled)
> 613 raise_softirq_irqoff(RCU_SOFTIRQ);
> 614 else
> 615 invoke_rcu_core();
> 616 } else {
> 617 /* Enabling BH or preempt does reschedule, so... */
> 618 set_tsk_need_resched(current);
> 619 set_preempt_need_resched();
> 620 }
> 621 local_irq_restore(flags);
> 622 return;
> 623 }
> 624 WRITE_ONCE(t->rcu_read_unlock_special.b.exp_hint, false);
> 625 rcu_preempt_deferred_qs_irqrestore(t, flags);
> 626 }
> 627
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation