diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2021-07-07 22:23:55 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2021-07-07 22:39:49 +0200 |
commit | c8eff2bb1abeaf5d911fd8a66aed24a549f639c4 (patch) | |
tree | fcd29fe7e619bd1533fd6a3a1fbffc13fbe709f6 /patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch | |
parent | c6725e2f14b523bba0f8fe4472a07aaf8681ad75 (diff) | |
download | linux-rt-c8eff2bb1abeaf5d911fd8a66aed24a549f639c4.tar.gz |
[ANNOUNCE] v5.13-rt1
Dear RT folks!
I'm pleased to announce the v5.13-rt1 patch set.
Changes since v5.12-rc3-rt3:
- Fast forward to v5.13
- Rework of the locking core bits
- Rework of large parts of the mm bits. Thanks to Mel Gorman and
Vlastimil Babka for picking this up and polishing it with -mm
wizardry.
- The latest respin of the printk overhaul from John Ogness
- Patch queue reordered
Known issues
- config dependent build fails on ARM (also in plain v5.13)
- netconsole triggers WARN.
You can get this release via the git tree at:
git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git v5.13-rt1
The RT patch against v5.13 can be found here:
https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.13/patch-5.13-rt1.patch.xz
The split quilt queue is available at:
https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.13/patches-5.13-rt1.tar.xz
Thanks,
tglx
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch')
-rw-r--r-- | patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch b/patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch deleted file mode 100644 index 07fe704f05dd..000000000000 --- a/patches/0019-tick-sched-Prevent-false-positive-softirq-pending-wa.patch +++ /dev/null @@ -1,73 +0,0 @@ -From: Thomas Gleixner <tglx@linutronix.de> -Date: Fri, 4 Dec 2020 18:01:56 +0100 -Subject: [PATCH 19/20] tick/sched: Prevent false positive softirq pending - warnings on RT - -On RT a task which has soft interrupts disabled can block on a lock and -schedule out to idle while soft interrupts are pending. This triggers the -warning in the NOHZ idle code which complains about going idle with pending -soft interrupts. But as the task is blocked soft interrupt processing is -temporarily blocked as well which means that such a warning is a false -positive. - -To prevent that check the per CPU state which indicates that a scheduled -out task has soft interrupts disabled. - -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Reviewed-by: Frederic Weisbecker <frederic@kernel.org> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - include/linux/bottom_half.h | 6 ++++++ - kernel/softirq.c | 15 +++++++++++++++ - kernel/time/tick-sched.c | 2 +- - 3 files changed, 22 insertions(+), 1 deletion(-) - ---- a/include/linux/bottom_half.h -+++ b/include/linux/bottom_half.h -@@ -32,4 +32,10 @@ static inline void local_bh_enable(void) - __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); - } - -+#ifdef CONFIG_PREEMPT_RT -+extern bool local_bh_blocked(void); -+#else -+static inline bool local_bh_blocked(void) { return false; } -+#endif -+ - #endif /* _LINUX_BH_H */ ---- a/kernel/softirq.c -+++ b/kernel/softirq.c -@@ -141,6 +141,21 @@ static DEFINE_PER_CPU(struct softirq_ctr - .lock = INIT_LOCAL_LOCK(softirq_ctrl.lock), - }; - -+/** -+ * local_bh_blocked() - Check for idle whether BH processing is blocked -+ * -+ * Returns false if the per CPU softirq::cnt is 0 otherwise true. -+ * -+ * This is invoked from the idle task to guard against false positive -+ * softirq pending warnings, which would happen when the task which holds -+ * softirq_ctrl::lock was the only running task on the CPU and blocks on -+ * some other lock. -+ */ -+bool local_bh_blocked(void) -+{ -+ return __this_cpu_read(softirq_ctrl.cnt) != 0; -+} -+ - void __local_bh_disable_ip(unsigned long ip, unsigned int cnt) - { - unsigned long flags; ---- a/kernel/time/tick-sched.c -+++ b/kernel/time/tick-sched.c -@@ -973,7 +973,7 @@ static bool can_stop_idle_tick(int cpu, - if (unlikely(local_softirq_pending())) { - static int ratelimit; - -- if (ratelimit < 10 && -+ if (ratelimit < 10 && !local_bh_blocked() && - (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { - pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n", - (unsigned int) local_softirq_pending()); |