j = jiffies;
                rcu_stall_notifier_call_chain(RCU_STALL_NOTIFY_EXP, (void *)(j - jiffies_start));
                trace_rcu_stall_warning(rcu_state.name, TPS("ExpeditedStall"));
-               pr_err("INFO: %s detected expedited stalls on CPUs/tasks: {",
-                      rcu_state.name);
-               ndetected = 0;
-               rcu_for_each_leaf_node(rnp) {
-                       ndetected += rcu_print_task_exp_stall(rnp);
-                       for_each_leaf_node_possible_cpu(rnp, cpu) {
-                               struct rcu_data *rdp;
- 
-                               mask = leaf_node_cpu_bit(rnp, cpu);
-                               if (!(READ_ONCE(rnp->expmask) & mask))
-                                       continue;
-                               ndetected++;
-                               rdp = per_cpu_ptr(&rcu_data, cpu);
-                               pr_cont(" %d-%c%c%c%c", cpu,
-                                       "O."[!!cpu_online(cpu)],
-                                       "o."[!!(rdp->grpmask & rnp->expmaskinit)],
-                                       "N."[!!(rdp->grpmask & rnp->expmaskinitnext)],
-                                       "D."[!!data_race(rdp->cpu_no_qs.b.exp)]);
-                       }
-               }
-               pr_cont(" } %lu jiffies s: %lu root: %#lx/%c\n",
-                       j - jiffies_start, rcu_state.expedited_sequence,
-                       data_race(rnp_root->expmask),
-                       ".T"[!!data_race(rnp_root->exp_tasks)]);
-               if (ndetected) {
-                       pr_err("blocking rcu_node structures (internal RCU debug):");
-                       rcu_for_each_node_breadth_first(rnp) {
-                               if (rnp == rnp_root)
-                                       continue; /* printed unconditionally */
-                               if (sync_rcu_exp_done_unlocked(rnp))
-                                       continue;
-                               pr_cont(" l=%u:%d-%d:%#lx/%c",
-                                       rnp->level, rnp->grplo, rnp->grphi,
-                                       data_race(rnp->expmask),
-                                       ".T"[!!data_race(rnp->exp_tasks)]);
-                       }
-                       pr_cont("\n");
-               }
-               rcu_for_each_leaf_node(rnp) {
-                       for_each_leaf_node_possible_cpu(rnp, cpu) {
-                               mask = leaf_node_cpu_bit(rnp, cpu);
-                               if (!(READ_ONCE(rnp->expmask) & mask))
-                                       continue;
-                               preempt_disable(); // For smp_processor_id() in dump_cpu_task().
-                               dump_cpu_task(cpu);
-                               preempt_enable();
-                       }
-                       rcu_exp_print_detail_task_stall_rnp(rnp);
-               }
+               synchronize_rcu_expedited_stall(jiffies_start, j);
                jiffies_stall = 3 * rcu_exp_jiffies_till_stall_check() + 3;
 +
 +              nbcon_cpu_emergency_exit();
 +
                panic_on_rcu_stall();
        }
  }