summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch')
-rw-r--r--debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch b/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch
new file mode 100644
index 000000000..576cef248
--- /dev/null
+++ b/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch
@@ -0,0 +1,51 @@
+From 502b30371ea2dc6a5ba4ec401468053719944d93 Mon Sep 17 00:00:00 2001
+From: "Paul E. McKenney" <paulmck@linux.ibm.com>
+Date: Mon, 29 Oct 2018 11:53:01 +0100
+Subject: [PATCH 023/347] EXP rcu: Revert expedited GP parallelization
+ cleverness
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz
+
+(Commit 258ba8e089db23f760139266c232f01bad73f85c from linux-rcu)
+
+This commit reverts a series of commits starting with fcc635436501 ("rcu:
+Make expedited GPs handle CPU 0 being offline") and its successors, thus
+queueing each rcu_node structure's expedited grace-period initialization
+work on the first CPU of that rcu_node structure.
+
+Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/rcu/tree_exp.h | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h
+index 72770a551c24..ac6d6fdf5783 100644
+--- a/kernel/rcu/tree_exp.h
++++ b/kernel/rcu/tree_exp.h
+@@ -472,7 +472,6 @@ static void sync_rcu_exp_select_node_cpus(struct work_struct *wp)
+ static void sync_rcu_exp_select_cpus(struct rcu_state *rsp,
+ smp_call_func_t func)
+ {
+- int cpu;
+ struct rcu_node *rnp;
+
+ trace_rcu_exp_grace_period(rsp->name, rcu_exp_gp_seq_endval(rsp), TPS("reset"));
+@@ -494,13 +493,7 @@ static void sync_rcu_exp_select_cpus(struct rcu_state *rsp,
+ continue;
+ }
+ INIT_WORK(&rnp->rew.rew_work, sync_rcu_exp_select_node_cpus);
+- preempt_disable();
+- cpu = cpumask_next(rnp->grplo - 1, cpu_online_mask);
+- /* If all offline, queue the work on an unbound CPU. */
+- if (unlikely(cpu > rnp->grphi))
+- cpu = WORK_CPU_UNBOUND;
+- queue_work_on(cpu, rcu_par_gp_wq, &rnp->rew.rew_work);
+- preempt_enable();
++ queue_work_on(rnp->grplo, rcu_par_gp_wq, &rnp->rew.rew_work);
+ rnp->exp_need_flush = true;
+ }
+
+--
+2.36.1
+