summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch')
-rw-r--r--debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch b/debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch
new file mode 100644
index 000000000..73b0fe77f
--- /dev/null
+++ b/debian/patches-rt/0008-printk-nbcon-Remove-return-value-for-write_atomic.patch
@@ -0,0 +1,68 @@
+From: John Ogness <john.ogness@linutronix.de>
+Date: Fri, 20 Oct 2023 09:52:59 +0000
+Subject: [PATCH 08/48] printk: nbcon: Remove return value for write_atomic()
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.8/older/patches-6.8.2-rt11.tar.xz
+
+The return value of write_atomic() does not provide any useful
+information. On the contrary, it makes things more complicated
+for the caller to appropriately deal with the information.
+
+Change write_atomic() to not have a return value. If the
+message did not get printed due to loss of ownership, the
+caller will notice this on its own. If ownership was not lost,
+it will be assumed that the driver successfully printed the
+message and the sequence number for that console will be
+incremented.
+
+Signed-off-by: John Ogness <john.ogness@linutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ include/linux/console.h | 2 +-
+ kernel/printk/nbcon.c | 15 +++++++--------
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+--- a/include/linux/console.h
++++ b/include/linux/console.h
+@@ -327,7 +327,7 @@ struct console {
+ struct hlist_node node;
+
+ /* nbcon console specific members */
+- bool (*write_atomic)(struct console *con,
++ void (*write_atomic)(struct console *con,
+ struct nbcon_write_context *wctxt);
+ atomic_t __private nbcon_state;
+ atomic_long_t __private nbcon_seq;
+--- a/kernel/printk/nbcon.c
++++ b/kernel/printk/nbcon.c
+@@ -849,7 +849,6 @@ static bool nbcon_emit_next_record(struc
+ unsigned long con_dropped;
+ struct nbcon_state cur;
+ unsigned long dropped;
+- bool done;
+
+ /*
+ * The printk buffers are filled within an unsafe section. This
+@@ -889,16 +888,16 @@ static bool nbcon_emit_next_record(struc
+ wctxt->unsafe_takeover = cur.unsafe_takeover;
+
+ if (con->write_atomic) {
+- done = con->write_atomic(con, wctxt);
++ con->write_atomic(con, wctxt);
+ } else {
+- nbcon_context_release(ctxt);
++ /*
++ * This function should never be called for legacy consoles.
++ * Handle it as if ownership was lost and try to continue.
++ */
+ WARN_ON_ONCE(1);
+- done = false;
+- }
+-
+- /* If not done, the emit was aborted. */
+- if (!done)
++ nbcon_context_release(ctxt);
+ return false;
++ }
+
+ /*
+ * Since any dropped message was successfully output, reset the