diff options
Diffstat (limited to 'debian/patches-rt/0011-nbcon-Provide-functions-for-drivers-to-acquire-conso.patch')
-rw-r--r-- | debian/patches-rt/0011-nbcon-Provide-functions-for-drivers-to-acquire-conso.patch | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/debian/patches-rt/0011-nbcon-Provide-functions-for-drivers-to-acquire-conso.patch b/debian/patches-rt/0011-nbcon-Provide-functions-for-drivers-to-acquire-conso.patch deleted file mode 100644 index 06cc991bff..0000000000 --- a/debian/patches-rt/0011-nbcon-Provide-functions-for-drivers-to-acquire-conso.patch +++ /dev/null @@ -1,160 +0,0 @@ -From: John Ogness <john.ogness@linutronix.de> -Date: Wed, 17 Apr 2024 12:42:46 +0000 -Subject: [PATCH 11/46] nbcon: Provide functions for drivers to acquire console - for non-printing -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.9/older/patches-6.9-rt5.tar.xz - -Provide functions nbcon_driver_try_acquire() and -nbcon_driver_release() to allow drivers to acquire the nbcon -console and mark it unsafe for handover/takeover. - -These functions are to be used by nbcon drivers when performing -non-printing activities that should be synchronized with their -atomic_write() callback. - -Signed-off-by: John Ogness <john.ogness@linutronix.de> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - include/linux/console.h | 2 + - include/linux/printk.h | 14 ++++++++++++ - kernel/printk/nbcon.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 70 insertions(+), 1 deletion(-) - ---- a/include/linux/console.h -+++ b/include/linux/console.h -@@ -322,6 +322,7 @@ struct nbcon_write_context { - * - * @nbcon_state: State for nbcon consoles - * @nbcon_seq: Sequence number of the next record for nbcon to print -+ * @nbcon_driver_ctxt: Context available for driver non-printing operations - * @pbufs: Pointer to nbcon private buffer - */ - struct console { -@@ -417,6 +418,7 @@ struct console { - - atomic_t __private nbcon_state; - atomic_long_t __private nbcon_seq; -+ struct nbcon_context __private nbcon_driver_ctxt; - struct printk_buffers *pbufs; - }; - ---- a/include/linux/printk.h -+++ b/include/linux/printk.h -@@ -9,6 +9,8 @@ - #include <linux/ratelimit_types.h> - #include <linux/once_lite.h> - -+struct console; -+ - extern const char linux_banner[]; - extern const char linux_proc_banner[]; - -@@ -193,6 +195,8 @@ void show_regs_print_info(const char *lo - extern asmlinkage void dump_stack_lvl(const char *log_lvl) __cold; - extern asmlinkage void dump_stack(void) __cold; - void printk_trigger_flush(void); -+extern bool nbcon_driver_try_acquire(struct console *con); -+extern void nbcon_driver_release(struct console *con); - #else - static inline __printf(1, 0) - int vprintk(const char *s, va_list args) -@@ -272,6 +276,16 @@ static inline void dump_stack(void) - static inline void printk_trigger_flush(void) - { - } -+ -+static inline bool nbcon_driver_try_acquire(struct console *con) -+{ -+ return false; -+} -+ -+static inline void nbcon_driver_release(struct console *con) -+{ -+} -+ - #endif - - bool this_cpu_in_panic(void); ---- a/kernel/printk/nbcon.c -+++ b/kernel/printk/nbcon.c -@@ -5,7 +5,9 @@ - #include <linux/kernel.h> - #include <linux/console.h> - #include <linux/delay.h> -+#include <linux/export.h> - #include <linux/slab.h> -+#include <linux/string.h> - #include "internal.h" - /* - * Printk console printing implementation for consoles which does not depend -@@ -528,6 +530,7 @@ static struct printk_buffers panic_nbcon - * nbcon_context_try_acquire - Try to acquire nbcon console - * @ctxt: The context of the caller - * -+ * Context: Under @ctxt->con->device_lock() or local_irq_save(). - * Return: True if the console was acquired. False otherwise. - * - * If the caller allowed an unsafe hostile takeover, on success the -@@ -535,7 +538,6 @@ static struct printk_buffers panic_nbcon - * in an unsafe state. Otherwise, on success the caller may assume - * the console is not in an unsafe state. - */ --__maybe_unused - static bool nbcon_context_try_acquire(struct nbcon_context *ctxt) - { - unsigned int cpu = smp_processor_id(); -@@ -989,3 +991,54 @@ void nbcon_free(struct console *con) - - con->pbufs = NULL; - } -+ -+/** -+ * nbcon_driver_try_acquire - Try to acquire nbcon console and enter unsafe -+ * section -+ * @con: The nbcon console to acquire -+ * -+ * Context: Under the locking mechanism implemented in -+ * @con->device_lock() including disabling migration. -+ * -+ * Console drivers will usually use their own internal synchronization -+ * mechasism to synchronize between console printing and non-printing -+ * activities (such as setting baud rates). However, nbcon console drivers -+ * supporting atomic consoles may also want to mark unsafe sections when -+ * performing non-printing activities in order to synchronize against their -+ * atomic_write() callback. -+ * -+ * This function acquires the nbcon console using priority NBCON_PRIO_NORMAL -+ * and marks it unsafe for handover/takeover. -+ */ -+bool nbcon_driver_try_acquire(struct console *con) -+{ -+ struct nbcon_context *ctxt = &ACCESS_PRIVATE(con, nbcon_driver_ctxt); -+ -+ cant_migrate(); -+ -+ memset(ctxt, 0, sizeof(*ctxt)); -+ ctxt->console = con; -+ ctxt->prio = NBCON_PRIO_NORMAL; -+ -+ if (!nbcon_context_try_acquire(ctxt)) -+ return false; -+ -+ if (!nbcon_context_enter_unsafe(ctxt)) -+ return false; -+ -+ return true; -+} -+EXPORT_SYMBOL_GPL(nbcon_driver_try_acquire); -+ -+/** -+ * nbcon_driver_release - Exit unsafe section and release the nbcon console -+ * @con: The nbcon console acquired in nbcon_driver_try_acquire() -+ */ -+void nbcon_driver_release(struct console *con) -+{ -+ struct nbcon_context *ctxt = &ACCESS_PRIVATE(con, nbcon_driver_ctxt); -+ -+ if (nbcon_context_exit_unsafe(ctxt)) -+ nbcon_context_release(ctxt); -+} -+EXPORT_SYMBOL_GPL(nbcon_driver_release); |