summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch')
-rw-r--r--debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch b/debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch
new file mode 100644
index 0000000000..d6239d704b
--- /dev/null
+++ b/debian/patches-rt/0011-printk-nbcon-Add-callbacks-to-synchronize-with-drive.patch
@@ -0,0 +1,72 @@
+From: John Ogness <john.ogness@linutronix.de>
+Date: Mon, 18 Mar 2024 10:11:56 +0000
+Subject: [PATCH 11/48] printk: nbcon: Add callbacks to synchronize with driver
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.8/older/patches-6.8.2-rt11.tar.xz
+
+Console drivers typically must deal with access to the hardware
+via user input/output (such as an interactive login shell) and
+output of kernel messages via printk() calls.
+
+Follow-up commits require that the printk subsystem is able to
+synchronize with the driver. Require nbcon consoles to implement
+two new callbacks (device_lock(), device_unlock()) that will
+use whatever synchronization mechanism the driver is using for
+itself (for example, the port lock for uart serial consoles).
+
+Signed-off-by: John Ogness <john.ogness@linutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ include/linux/console.h | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+--- a/include/linux/console.h
++++ b/include/linux/console.h
+@@ -352,6 +352,48 @@ struct console {
+ */
+ void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt);
+
++ /**
++ * @device_lock:
++ *
++ * NBCON callback to begin synchronization with driver code.
++ *
++ * Console drivers typically must deal with access to the hardware
++ * via user input/output (such as an interactive login shell) and
++ * output of kernel messages via printk() calls. This callback is
++ * called by the printk-subsystem whenever it needs to synchronize
++ * with hardware access by the driver. It should be implemented to
++ * use whatever synchronization mechanism the driver is using for
++ * itself (for example, the port lock for uart serial consoles).
++ *
++ * This callback is always called from task context. It may use any
++ * synchronization method required by the driver. BUT this callback
++ * MUST also disable migration. The console driver may be using a
++ * synchronization mechanism that already takes care of this (such as
++ * spinlocks). Otherwise this function must explicitly call
++ * migrate_disable().
++ *
++ * The flags argument is provided as a convenience to the driver. It
++ * will be passed again to device_unlock(). It can be ignored if the
++ * driver does not need it.
++ */
++ void (*device_lock)(struct console *con, unsigned long *flags);
++
++ /**
++ * @device_unlock:
++ *
++ * NBCON callback to finish synchronization with driver code.
++ *
++ * It is the counterpart to device_lock().
++ *
++ * This callback is always called from task context. It must
++ * appropriately re-enable migration (depending on how device_lock()
++ * disabled migration).
++ *
++ * The flags argument is the value of the same variable that was
++ * passed to device_lock().
++ */
++ void (*device_unlock)(struct console *con, unsigned long flags);
++
+ atomic_t __private nbcon_state;
+ atomic_long_t __private nbcon_seq;
+ struct printk_buffers *pbufs;