From 3f344081f58ad99644ce30bf2aca6f6125499c20 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 3 May 2018 04:52:17 -0700 Subject: [PATCH] drop rcu patch --- ...cu-specific-workqueues-with-rescuers.patch | 111 ------------------ queue-4.14/series | 1 - ...cu-specific-workqueues-with-rescuers.patch | 111 ------------------ queue-4.16/series | 1 - 4 files changed, 224 deletions(-) delete mode 100644 queue-4.14/rcu-create-rcu-specific-workqueues-with-rescuers.patch delete mode 100644 queue-4.16/rcu-create-rcu-specific-workqueues-with-rescuers.patch diff --git a/queue-4.14/rcu-create-rcu-specific-workqueues-with-rescuers.patch b/queue-4.14/rcu-create-rcu-specific-workqueues-with-rescuers.patch deleted file mode 100644 index 149d492d208..00000000000 --- a/queue-4.14/rcu-create-rcu-specific-workqueues-with-rescuers.patch +++ /dev/null @@ -1,111 +0,0 @@ -From foo@baz Wed May 2 08:55:24 PDT 2018 -From: "Paul E. McKenney" -Date: Mon, 8 Jan 2018 14:35:52 -0800 -Subject: rcu: Create RCU-specific workqueues with rescuers - -From: "Paul E. McKenney" - -[ Upstream commit ad7c946b35ad455417fdd4bc0e17deda4011841b ] - -RCU's expedited grace periods can participate in out-of-memory deadlocks -due to all available system_wq kthreads being blocked and there not being -memory available to create more. This commit prevents such deadlocks -by allocating an RCU-specific workqueue_struct at early boot time, and -providing it with a rescuer to ensure forward progress. This uses the -shiny new init_rescuer() function provided by Tejun (but indirectly). - -This commit also causes SRCU to use this new RCU-specific -workqueue_struct. Note that SRCU's use of workqueues never blocks them -waiting for readers, so this should be safe from a forward-progress -viewpoint. Note that this moves SRCU from system_power_efficient_wq -to a normal workqueue. In the unlikely event that this results in -measurable degradation, a separate power-efficient workqueue will be -creates for SRCU. - -Reported-by: Prateek Sood -Reported-by: Tejun Heo -Signed-off-by: Paul E. McKenney -Acked-by: Tejun Heo -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - kernel/rcu/rcu.h | 1 + - kernel/rcu/srcutree.c | 8 +++----- - kernel/rcu/tree.c | 6 ++++++ - kernel/rcu/tree_exp.h | 2 +- - 4 files changed, 11 insertions(+), 6 deletions(-) - ---- a/kernel/rcu/rcu.h -+++ b/kernel/rcu/rcu.h -@@ -474,6 +474,7 @@ void show_rcu_gp_kthreads(void); - void rcu_force_quiescent_state(void); - void rcu_bh_force_quiescent_state(void); - void rcu_sched_force_quiescent_state(void); -+extern struct workqueue_struct *rcu_gp_wq; - #endif /* #else #ifdef CONFIG_TINY_RCU */ - - #ifdef CONFIG_RCU_NOCB_CPU ---- a/kernel/rcu/srcutree.c -+++ b/kernel/rcu/srcutree.c -@@ -465,8 +465,7 @@ static bool srcu_queue_delayed_work_on(i - */ - static void srcu_schedule_cbs_sdp(struct srcu_data *sdp, unsigned long delay) - { -- srcu_queue_delayed_work_on(sdp->cpu, system_power_efficient_wq, -- &sdp->work, delay); -+ srcu_queue_delayed_work_on(sdp->cpu, rcu_gp_wq, &sdp->work, delay); - } - - /* -@@ -664,8 +663,7 @@ static void srcu_funnel_gp_start(struct - rcu_seq_state(sp->srcu_gp_seq) == SRCU_STATE_IDLE) { - WARN_ON_ONCE(ULONG_CMP_GE(sp->srcu_gp_seq, sp->srcu_gp_seq_needed)); - srcu_gp_start(sp); -- queue_delayed_work(system_power_efficient_wq, &sp->work, -- srcu_get_delay(sp)); -+ queue_delayed_work(rcu_gp_wq, &sp->work, srcu_get_delay(sp)); - } - raw_spin_unlock_irqrestore_rcu_node(sp, flags); - } -@@ -1198,7 +1196,7 @@ static void srcu_reschedule(struct srcu_ - raw_spin_unlock_irq_rcu_node(sp); - - if (pushgp) -- queue_delayed_work(system_power_efficient_wq, &sp->work, delay); -+ queue_delayed_work(rcu_gp_wq, &sp->work, delay); - } - - /* ---- a/kernel/rcu/tree.c -+++ b/kernel/rcu/tree.c -@@ -4176,6 +4176,8 @@ static void __init rcu_dump_rcu_node_tre - pr_cont("\n"); - } - -+struct workqueue_struct *rcu_gp_wq; -+ - void __init rcu_init(void) - { - int cpu; -@@ -4203,6 +4205,10 @@ void __init rcu_init(void) - if (IS_ENABLED(CONFIG_TREE_SRCU)) - srcu_online_cpu(cpu); - } -+ -+ /* Create workqueue for expedited GPs and for Tree SRCU. */ -+ rcu_gp_wq = alloc_workqueue("rcu_gp", WQ_MEM_RECLAIM, 0); -+ WARN_ON(!rcu_gp_wq); - } - - #include "tree_exp.h" ---- a/kernel/rcu/tree_exp.h -+++ b/kernel/rcu/tree_exp.h -@@ -606,7 +606,7 @@ static void _synchronize_rcu_expedited(s - rew.rew_rsp = rsp; - rew.rew_s = s; - INIT_WORK_ONSTACK(&rew.rew_work, wait_rcu_exp_gp); -- schedule_work(&rew.rew_work); -+ queue_work(rcu_gp_wq, &rew.rew_work); - } - - /* Wait for expedited grace period to complete. */ diff --git a/queue-4.14/series b/queue-4.14/series index 97b99ab7fc6..013cf9978b9 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -576,4 +576,3 @@ asoc-samsung-i2s-ensure-the-rclk-rate-is-properly-determined.patch bluetooth-btusb-add-device-id-for-rtl8822be.patch kdb-make-mdr-command-repeat.patch xhci-show-what-usb-release-number-the-xhc-supports-from-protocol-capablity.patch -rcu-create-rcu-specific-workqueues-with-rescuers.patch diff --git a/queue-4.16/rcu-create-rcu-specific-workqueues-with-rescuers.patch b/queue-4.16/rcu-create-rcu-specific-workqueues-with-rescuers.patch deleted file mode 100644 index 8be1c977d45..00000000000 --- a/queue-4.16/rcu-create-rcu-specific-workqueues-with-rescuers.patch +++ /dev/null @@ -1,111 +0,0 @@ -From foo@baz Wed May 2 08:55:03 PDT 2018 -From: "Paul E. McKenney" -Date: Mon, 8 Jan 2018 14:35:52 -0800 -Subject: rcu: Create RCU-specific workqueues with rescuers - -From: "Paul E. McKenney" - -[ Upstream commit ad7c946b35ad455417fdd4bc0e17deda4011841b ] - -RCU's expedited grace periods can participate in out-of-memory deadlocks -due to all available system_wq kthreads being blocked and there not being -memory available to create more. This commit prevents such deadlocks -by allocating an RCU-specific workqueue_struct at early boot time, and -providing it with a rescuer to ensure forward progress. This uses the -shiny new init_rescuer() function provided by Tejun (but indirectly). - -This commit also causes SRCU to use this new RCU-specific -workqueue_struct. Note that SRCU's use of workqueues never blocks them -waiting for readers, so this should be safe from a forward-progress -viewpoint. Note that this moves SRCU from system_power_efficient_wq -to a normal workqueue. In the unlikely event that this results in -measurable degradation, a separate power-efficient workqueue will be -creates for SRCU. - -Reported-by: Prateek Sood -Reported-by: Tejun Heo -Signed-off-by: Paul E. McKenney -Acked-by: Tejun Heo -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - kernel/rcu/rcu.h | 1 + - kernel/rcu/srcutree.c | 8 +++----- - kernel/rcu/tree.c | 6 ++++++ - kernel/rcu/tree_exp.h | 2 +- - 4 files changed, 11 insertions(+), 6 deletions(-) - ---- a/kernel/rcu/rcu.h -+++ b/kernel/rcu/rcu.h -@@ -470,6 +470,7 @@ void show_rcu_gp_kthreads(void); - void rcu_force_quiescent_state(void); - void rcu_bh_force_quiescent_state(void); - void rcu_sched_force_quiescent_state(void); -+extern struct workqueue_struct *rcu_gp_wq; - #endif /* #else #ifdef CONFIG_TINY_RCU */ - - #ifdef CONFIG_RCU_NOCB_CPU ---- a/kernel/rcu/srcutree.c -+++ b/kernel/rcu/srcutree.c -@@ -492,8 +492,7 @@ static bool srcu_queue_delayed_work_on(i - */ - static void srcu_schedule_cbs_sdp(struct srcu_data *sdp, unsigned long delay) - { -- srcu_queue_delayed_work_on(sdp->cpu, system_power_efficient_wq, -- &sdp->work, delay); -+ srcu_queue_delayed_work_on(sdp->cpu, rcu_gp_wq, &sdp->work, delay); - } - - /* -@@ -691,8 +690,7 @@ static void srcu_funnel_gp_start(struct - rcu_seq_state(sp->srcu_gp_seq) == SRCU_STATE_IDLE) { - WARN_ON_ONCE(ULONG_CMP_GE(sp->srcu_gp_seq, sp->srcu_gp_seq_needed)); - srcu_gp_start(sp); -- queue_delayed_work(system_power_efficient_wq, &sp->work, -- srcu_get_delay(sp)); -+ queue_delayed_work(rcu_gp_wq, &sp->work, srcu_get_delay(sp)); - } - spin_unlock_irqrestore_rcu_node(sp, flags); - } -@@ -1225,7 +1223,7 @@ static void srcu_reschedule(struct srcu_ - spin_unlock_irq_rcu_node(sp); - - if (pushgp) -- queue_delayed_work(system_power_efficient_wq, &sp->work, delay); -+ queue_delayed_work(rcu_gp_wq, &sp->work, delay); - } - - /* ---- a/kernel/rcu/tree.c -+++ b/kernel/rcu/tree.c -@@ -4193,6 +4193,8 @@ static void __init rcu_dump_rcu_node_tre - pr_cont("\n"); - } - -+struct workqueue_struct *rcu_gp_wq; -+ - void __init rcu_init(void) - { - int cpu; -@@ -4219,6 +4221,10 @@ void __init rcu_init(void) - rcu_cpu_starting(cpu); - rcutree_online_cpu(cpu); - } -+ -+ /* Create workqueue for expedited GPs and for Tree SRCU. */ -+ rcu_gp_wq = alloc_workqueue("rcu_gp", WQ_MEM_RECLAIM, 0); -+ WARN_ON(!rcu_gp_wq); - } - - #include "tree_exp.h" ---- a/kernel/rcu/tree_exp.h -+++ b/kernel/rcu/tree_exp.h -@@ -606,7 +606,7 @@ static void _synchronize_rcu_expedited(s - rew.rew_rsp = rsp; - rew.rew_s = s; - INIT_WORK_ONSTACK(&rew.rew_work, wait_rcu_exp_gp); -- schedule_work(&rew.rew_work); -+ queue_work(rcu_gp_wq, &rew.rew_work); - } - - /* Wait for expedited grace period to complete. */ diff --git a/queue-4.16/series b/queue-4.16/series index 9520ff3da5a..c2cb1a30ddb 100644 --- a/queue-4.16/series +++ b/queue-4.16/series @@ -327,4 +327,3 @@ bluetooth-btusb-add-device-id-for-rtl8822be.patch bluetooth-btusb-add-support-for-intel-bluetooth-device-22560.patch kdb-make-mdr-command-repeat.patch xhci-show-what-usb-release-number-the-xhc-supports-from-protocol-capablity.patch -rcu-create-rcu-specific-workqueues-with-rescuers.patch -- 2.47.3