diff options
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.patch | 72 |
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; |