tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git 
dev
head:   0028a1e4fdbb4263539595da08979d59954d4873
commit: 0028a1e4fdbb4263539595da08979d59954d4873 [110/110] rcu: Apply RCU-bh 
QSes to RCU-sched and RCU-preempt when safe
config: x86_64-randconfig-i0-201825 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        git checkout 0028a1e4fdbb4263539595da08979d59954d4873
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   kernel/softirq.o: In function `__do_softirq':
>> kernel/softirq.c:298: undefined reference to `rcu_softirq_qs'

vim +298 kernel/softirq.c

   240  
   241  asmlinkage __visible void __softirq_entry __do_softirq(void)
   242  {
   243          unsigned long end = jiffies + MAX_SOFTIRQ_TIME;
   244          unsigned long old_flags = current->flags;
   245          int max_restart = MAX_SOFTIRQ_RESTART;
   246          struct softirq_action *h;
   247          bool in_hardirq;
   248          __u32 pending;
   249          int softirq_bit;
   250  
   251          /*
   252           * Mask out PF_MEMALLOC s current task context is borrowed for 
the
   253           * softirq. A softirq handled such as network RX might set 
PF_MEMALLOC
   254           * again if the socket is related to swap
   255           */
   256          current->flags &= ~PF_MEMALLOC;
   257  
   258          pending = local_softirq_pending();
   259          account_irq_enter_time(current);
   260  
   261          __local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET);
   262          in_hardirq = lockdep_softirq_start();
   263  
   264  restart:
   265          /* Reset the pending bitmask before enabling irqs */
   266          set_softirq_pending(0);
   267  
   268          local_irq_enable();
   269  
   270          h = softirq_vec;
   271  
   272          while ((softirq_bit = ffs(pending))) {
   273                  unsigned int vec_nr;
   274                  int prev_count;
   275  
   276                  h += softirq_bit - 1;
   277  
   278                  vec_nr = h - softirq_vec;
   279                  prev_count = preempt_count();
   280  
   281                  kstat_incr_softirqs_this_cpu(vec_nr);
   282  
   283                  trace_softirq_entry(vec_nr);
   284                  h->action(h);
   285                  trace_softirq_exit(vec_nr);
   286                  if (unlikely(prev_count != preempt_count())) {
   287                          pr_err("huh, entered softirq %u %s %p with 
preempt_count %08x, exited with %08x?\n",
   288                                 vec_nr, softirq_to_name[vec_nr], 
h->action,
   289                                 prev_count, preempt_count());
   290                          preempt_count_set(prev_count);
   291                  }
   292                  h++;
   293                  pending >>= softirq_bit;
   294          }
   295  
   296          rcu_bh_qs();
   297          if (__this_cpu_read(ksoftirqd) == current)
 > 298                  rcu_softirq_qs();
   299          local_irq_disable();
   300  
   301          pending = local_softirq_pending();
   302          if (pending) {
   303                  if (time_before(jiffies, end) && !need_resched() &&
   304                      --max_restart)
   305                          goto restart;
   306  
   307                  wakeup_softirqd();
   308          }
   309  
   310          lockdep_softirq_end(in_hardirq);
   311          account_irq_exit_time(current);
   312          __local_bh_enable(SOFTIRQ_OFFSET);
   313          WARN_ON_ONCE(in_interrupt());
   314          current_restore_flags(old_flags, PF_MEMALLOC);
   315  }
   316  

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

Attachment: .config.gz
Description: application/gzip

Reply via email to