tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 320eb81df4f6c1a1814fd02ebb4ba41eb80a3c7e commit: 88ae4291a83a03811076b01fcd0b59d296c0176d [1554/4667] rcu: Summarize expedited RCU CPU stall warnings during CSD-lock stalls config: x86_64-randconfig-013-20240814 (https://download.01.org/0day-ci/archive/20240815/202408150404.3k8APQJr-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-12) 11.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240815/202408150404.3k8APQJr-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202408150404.3k8APQJr-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): ld: vmlinux.o: in function `synchronize_rcu_expedited_stall': >> kernel/rcu/tree_exp.h:556: undefined reference to `csd_lock_is_stuck' ld: vmlinux.o: in function `check_cpu_stall': kernel/rcu/tree_stall.h:798: undefined reference to `csd_lock_is_stuck' vim +556 kernel/rcu/tree_exp.h 544 545 /* 546 * Print out an expedited RCU CPU stall warning message. 547 */ 548 static void synchronize_rcu_expedited_stall(unsigned long jiffies_start, unsigned long j) 549 { 550 int cpu; 551 unsigned long mask; 552 int ndetected; 553 struct rcu_node *rnp; 554 struct rcu_node *rnp_root = rcu_get_root(); 555 > 556 if (READ_ONCE(csd_lock_suppress_rcu_stall) && csd_lock_is_stuck()) { 557 pr_err("INFO: %s detected expedited stalls, but suppressed full report due to a stuck CSD-lock.\n", rcu_state.name); 558 return; 559 } 560 pr_err("INFO: %s detected expedited stalls on CPUs/tasks: {", rcu_state.name); 561 ndetected = 0; 562 rcu_for_each_leaf_node(rnp) { 563 ndetected += rcu_print_task_exp_stall(rnp); 564 for_each_leaf_node_possible_cpu(rnp, cpu) { 565 struct rcu_data *rdp; 566 567 mask = leaf_node_cpu_bit(rnp, cpu); 568 if (!(READ_ONCE(rnp->expmask) & mask)) 569 continue; 570 ndetected++; 571 rdp = per_cpu_ptr(&rcu_data, cpu); 572 pr_cont(" %d-%c%c%c%c", cpu, 573 "O."[!!cpu_online(cpu)], 574 "o."[!!(rdp->grpmask & rnp->expmaskinit)], 575 "N."[!!(rdp->grpmask & rnp->expmaskinitnext)], 576 "D."[!!data_race(rdp->cpu_no_qs.b.exp)]); 577 } 578 } 579 pr_cont(" } %lu jiffies s: %lu root: %#lx/%c\n", 580 j - jiffies_start, rcu_state.expedited_sequence, data_race(rnp_root->expmask), 581 ".T"[!!data_race(rnp_root->exp_tasks)]); 582 if (ndetected) { 583 pr_err("blocking rcu_node structures (internal RCU debug):"); 584 rcu_for_each_node_breadth_first(rnp) { 585 if (rnp == rnp_root) 586 continue; /* printed unconditionally */ 587 if (sync_rcu_exp_done_unlocked(rnp)) 588 continue; 589 pr_cont(" l=%u:%d-%d:%#lx/%c", 590 rnp->level, rnp->grplo, rnp->grphi, data_race(rnp->expmask), 591 ".T"[!!data_race(rnp->exp_tasks)]); 592 } 593 pr_cont("\n"); 594 } 595 rcu_for_each_leaf_node(rnp) { 596 for_each_leaf_node_possible_cpu(rnp, cpu) { 597 mask = leaf_node_cpu_bit(rnp, cpu); 598 if (!(READ_ONCE(rnp->expmask) & mask)) 599 continue; 600 preempt_disable(); // For smp_processor_id() in dump_cpu_task(). 601 dump_cpu_task(cpu); 602 preempt_enable(); 603 } 604 rcu_exp_print_detail_task_stall_rnp(rnp); 605 } 606 } 607 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki