summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2020-11-23 10:20:06 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2020-11-23 10:20:06 +0100
commitdc7298bb367dda18f5c4d0d9a89ccf8a75c17fdd (patch)
treeb8c3dd2115db13cdc5fd24abc68a69353be69ee1
parent877c13127a8d91c7b6f423cb6c6209f84e8275ec (diff)
downloadlinux-rt-dc7298bb367dda18f5c4d0d9a89ccf8a75c17fdd.tar.gz
[ANNOUNCE] v5.10-rc5-rt9v5.10-rc5-rt9-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/rcu-Don-t-invoke-try_invoke_on_locked_down_task-with.patch97
-rw-r--r--patches/series3
3 files changed, 1 insertions, 101 deletions
diff --git a/patches/localversion.patch b/patches/localversion.patch
index 68c7b973cc48..02952cda4bfa 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
-+-rt8
++-rt9
diff --git a/patches/rcu-Don-t-invoke-try_invoke_on_locked_down_task-with.patch b/patches/rcu-Don-t-invoke-try_invoke_on_locked_down_task-with.patch
deleted file mode 100644
index 6b74a5d3d357..000000000000
--- a/patches/rcu-Don-t-invoke-try_invoke_on_locked_down_task-with.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From: "Paul E. McKenney" <paulmck@kernel.org>
-Date: Thu, 24 Sep 2020 15:11:55 -0700
-Subject: [PATCH] rcu: Don't invoke try_invoke_on_locked_down_task() with
- irqs disabled
-
-The try_invoke_on_locked_down_task() function requires that
-interrupts be enabled, but it is called with interrupts disabled from
-rcu_print_task_stall(), resulting in an "IRQs not enabled as expected"
-diagnostic. This commit therefore updates rcu_print_task_stall()
-to accumulate a list of the first few tasks while holding the current
-leaf rcu_node structure's ->lock, then releases that lock and only then
-uses try_invoke_on_locked_down_task() to attempt to obtain per-task
-detailed information. Of course, as soon as ->lock is released, the
-task might exit, so the get_task_struct() function is used to prevent
-the task structure from going away in the meantime.
-
-Link: https://lore.kernel.org/lkml/000000000000903d5805ab908fc4@google.com/
-Reported-by: syzbot+cb3b69ae80afd6535b0e@syzkaller.appspotmail.com
-Reported-by: syzbot+f04854e1c5c9e913cc27@syzkaller.appspotmail.com
-Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
----
- kernel/rcu/tree_stall.h | 22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
-
---- a/kernel/rcu/tree_stall.h
-+++ b/kernel/rcu/tree_stall.h
-@@ -249,13 +249,16 @@ static bool check_slow_task(struct task_
-
- /*
- * Scan the current list of tasks blocked within RCU read-side critical
-- * sections, printing out the tid of each.
-+ * sections, printing out the tid of each of the first few of them.
- */
--static int rcu_print_task_stall(struct rcu_node *rnp)
-+static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags)
-+ __releases(rnp->lock)
- {
-+ int i = 0;
- int ndetected = 0;
- struct rcu_stall_chk_rdr rscr;
- struct task_struct *t;
-+ struct task_struct *ts[8];
-
- if (!rcu_preempt_blocked_readers_cgp(rnp))
- return 0;
-@@ -264,6 +267,14 @@ static int rcu_print_task_stall(struct r
- t = list_entry(rnp->gp_tasks->prev,
- struct task_struct, rcu_node_entry);
- list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry) {
-+ get_task_struct(t);
-+ ts[i++] = t;
-+ if (i >= ARRAY_SIZE(ts))
-+ break;
-+ }
-+ raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
-+ for (i--; i; i--) {
-+ t = ts[i];
- if (!try_invoke_on_locked_down_task(t, check_slow_task, &rscr))
- pr_cont(" P%d", t->pid);
- else
-@@ -273,6 +284,7 @@ static int rcu_print_task_stall(struct r
- ".q"[rscr.rs.b.need_qs],
- ".e"[rscr.rs.b.exp_hint],
- ".l"[rscr.on_blkd_list]);
-+ put_task_struct(t);
- ndetected++;
- }
- pr_cont("\n");
-@@ -293,8 +305,9 @@ static void rcu_print_detail_task_stall_
- * Because preemptible RCU does not exist, we never have to check for
- * tasks blocked within RCU read-side critical sections.
- */
--static int rcu_print_task_stall(struct rcu_node *rnp)
-+static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags)
- {
-+ raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
- return 0;
- }
- #endif /* #else #ifdef CONFIG_PREEMPT_RCU */
-@@ -472,7 +485,6 @@ static void print_other_cpu_stall(unsign
- pr_err("INFO: %s detected stalls on CPUs/tasks:\n", rcu_state.name);
- rcu_for_each_leaf_node(rnp) {
- raw_spin_lock_irqsave_rcu_node(rnp, flags);
-- ndetected += rcu_print_task_stall(rnp);
- if (rnp->qsmask != 0) {
- for_each_leaf_node_possible_cpu(rnp, cpu)
- if (rnp->qsmask & leaf_node_cpu_bit(rnp, cpu)) {
-@@ -480,7 +492,7 @@ static void print_other_cpu_stall(unsign
- ndetected++;
- }
- }
-- raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
-+ ndetected += rcu_print_task_stall(rnp, flags); // Releases rnp->lock.
- }
-
- for_each_possible_cpu(cpu)
diff --git a/patches/series b/patches/series
index a262bc152abf..b4463711602b 100644
--- a/patches/series
+++ b/patches/series
@@ -77,9 +77,6 @@ mm-highmem-Take-kmap_high_get-properly-into-account.patch
#
highmem-Don-t-disable-preemption-on-RT-in-kmap_atomi.patch
-# 8a26c219cafe66431da3350da1687a50f635f3c2
-rcu-Don-t-invoke-try_invoke_on_locked_down_task-with.patch
-
############################################################
# POSTED
############################################################