summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 21:00:54 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 21:01:03 +0000
commit62db400e83102695233497884d16a19c7e34fcd4 (patch)
tree62d1c1a2105118357e772c53c56478baf87bf946 /debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch
parentMerging upstream version 6.9.2. (diff)
downloadlinux-62db400e83102695233497884d16a19c7e34fcd4.tar.xz
linux-62db400e83102695233497884d16a19c7e34fcd4.zip
Merging debian version 6.9.2-1~exp1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch')
-rw-r--r--debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch86
1 files changed, 0 insertions, 86 deletions
diff --git a/debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch b/debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch
deleted file mode 100644
index 510b3c080..000000000
--- a/debian/patches-rt/0048-printk-Avoid-false-positive-lockdep-report-for-legac.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From: John Ogness <john.ogness@linutronix.de>
-Date: Mon, 11 Dec 2023 09:34:16 +0000
-Subject: [PATCH 48/48] printk: Avoid false positive lockdep report for legacy
- printing
-Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.8/older/patches-6.8.2-rt11.tar.xz
-
-Legacy console printing from printk() caller context may invoke
-the console driver from atomic context. This leads to a lockdep
-splat because the console driver will acquire a sleeping lock
-and the caller may already hold a spinning lock. This is noticed
-by lockdep on !PREEMPT_RT configurations because it will lead to
-a problem on PREEMPT_RT.
-
-However, on PREEMPT_RT the printing path from atomic context is
-always avoided and the console driver is always invoked from a
-dedicated thread. Thus the lockdep splat on !PREEMPT_RT is a
-false positive.
-
-For !PREEMPT_RT override the lock-context before invoking the
-console driver to avoid the false positive.
-
-Do not override the lock-context for PREEMPT_RT in order to
-allow lockdep to catch any real locking context issues related
-to the write callback usage.
-
-Signed-off-by: John Ogness <john.ogness@linutronix.de>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
----
- kernel/printk/printk.c | 31 ++++++++++++++++++++++++++++++-
- 1 file changed, 30 insertions(+), 1 deletion(-)
-
---- a/kernel/printk/printk.c
-+++ b/kernel/printk/printk.c
-@@ -2985,6 +2985,33 @@ bool printk_get_next_message(struct prin
- }
-
- /*
-+ * Legacy console printing from printk() caller context does not respect
-+ * raw_spinlock/spinlock nesting. For !PREEMPT_RT the lockdep warning is a
-+ * false positive. For PREEMPT_RT the false positive condition does not
-+ * occur.
-+ *
-+ * This map is used to establish LD_WAIT_SLEEP context for the console write
-+ * callbacks when legacy printing to avoid false positive lockdep complaints,
-+ * thus allowing lockdep to continue to function for real issues.
-+ */
-+#ifdef CONFIG_PREEMPT_RT
-+static inline void printk_legacy_lock_map_acquire_try(void) { }
-+static inline void printk_legacy_lock_map_release(void) { }
-+#else
-+static DEFINE_WAIT_OVERRIDE_MAP(printk_legacy_map, LD_WAIT_SLEEP);
-+
-+static inline void printk_legacy_lock_map_acquire_try(void)
-+{
-+ lock_map_acquire_try(&printk_legacy_map);
-+}
-+
-+static inline void printk_legacy_lock_map_release(void)
-+{
-+ lock_map_release(&printk_legacy_map);
-+}
-+#endif /* CONFIG_PREEMPT_RT */
-+
-+/*
- * Used as the printk buffers for non-panic, serialized console printing.
- * This is for legacy (!CON_NBCON) as well as all boot (CON_BOOT) consoles.
- * Its usage requires the console_lock held.
-@@ -3039,7 +3066,7 @@ static bool console_emit_next_record(str
- /*
- * With forced threading this function is either in a thread
- * or panic context. So there is no need for concern about
-- * printk reentrance or handovers.
-+ * printk reentrance, handovers, or lockdep complaints.
- */
-
- con->write(con, outbuf, pmsg.outbuf_len);
-@@ -3061,7 +3088,9 @@ static bool console_emit_next_record(str
- /* Do not trace print latency. */
- stop_critical_timings();
-
-+ printk_legacy_lock_map_acquire_try();
- con->write(con, outbuf, pmsg.outbuf_len);
-+ printk_legacy_lock_map_release();
-
- start_critical_timings();
-