diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-08-07 13:11:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-08-07 13:11:49 +0000 |
commit | f25552c1068a054f2d99afd67a671d5991bf19c1 (patch) | |
tree | d70de5c7262ad572f8323fc4184b8a10522e81ec /debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch | |
parent | Merging upstream version 6.9.7. (diff) | |
download | linux-f25552c1068a054f2d99afd67a671d5991bf19c1.tar.xz linux-f25552c1068a054f2d99afd67a671d5991bf19c1.zip |
Merging debian version 6.9.7-1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch')
-rw-r--r-- | debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch b/debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch new file mode 100644 index 0000000000..7d6a606df3 --- /dev/null +++ b/debian/patches-rt/0005-printk-nbcon-Add-detailed-doc-for-write_atomic.patch @@ -0,0 +1,72 @@ +From: John Ogness <john.ogness@linutronix.de> +Date: Wed, 7 Feb 2024 18:38:14 +0000 +Subject: [PATCH 05/46] printk: nbcon: Add detailed doc for write_atomic() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.9/older/patches-6.9-rt5.tar.xz + +The write_atomic() callback has special requirements and is +allowed to use special helper functions. Provide detailed +documentation of the callback so that a developer has a +chance of implementing it correctly. + +Signed-off-by: John Ogness <john.ogness@linutronix.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +--- + include/linux/console.h | 33 +++++++++++++++++++++++++++++---- + 1 file changed, 29 insertions(+), 4 deletions(-) + +--- a/include/linux/console.h ++++ b/include/linux/console.h +@@ -303,7 +303,7 @@ struct nbcon_write_context { + /** + * struct console - The console descriptor structure + * @name: The name of the console driver +- * @write: Write callback to output messages (Optional) ++ * @write: Legacy write callback to output messages (Optional) + * @read: Read callback for console input (Optional) + * @device: The underlying TTY device driver (Optional) + * @unblank: Callback to unblank the console (Optional) +@@ -320,7 +320,6 @@ struct nbcon_write_context { + * @data: Driver private data + * @node: hlist node for the console list + * +- * @write_atomic: Write callback for atomic context + * @nbcon_state: State for nbcon consoles + * @nbcon_seq: Sequence number of the next record for nbcon to print + * @pbufs: Pointer to nbcon private buffer +@@ -345,8 +344,34 @@ struct console { + struct hlist_node node; + + /* nbcon console specific members */ +- void (*write_atomic)(struct console *con, +- struct nbcon_write_context *wctxt); ++ ++ /** ++ * @write_atomic: ++ * ++ * NBCON callback to write out text in any context. ++ * ++ * This callback is called with the console already acquired. However, ++ * a higher priority context is allowed to take it over by default. ++ * ++ * The callback must call nbcon_enter_unsafe() and nbcon_exit_unsafe() ++ * around any code where the takeover is not safe, for example, when ++ * manipulating the serial port registers. ++ * ++ * nbcon_enter_unsafe() will fail if the context has lost the console ++ * ownership in the meantime. In this case, the callback is no longer ++ * allowed to go forward. It must back out immediately and carefully. ++ * The buffer content is also no longer trusted since it no longer ++ * belongs to the context. ++ * ++ * The callback should allow the takeover whenever it is safe. It ++ * increases the chance to see messages when the system is in trouble. ++ * ++ * The callback can be called from any context (including NMI). ++ * Therefore it must avoid usage of any locking and instead rely ++ * on the console ownership for synchronization. ++ */ ++ void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt); ++ + atomic_t __private nbcon_state; + atomic_long_t __private nbcon_seq; + struct printk_buffers *pbufs; |