On 2025-09-30, Marcos Paulo de Souza <[email protected]> wrote: > The helper will be used on KDB code in the next commits. > > Reviewed-by: Petr Mladek <[email protected]> > Signed-off-by: Marcos Paulo de Souza <[email protected]> > --- > include/linux/console.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ > kernel/printk/internal.h | 44 -------------------------------------------- > 2 files changed, 44 insertions(+), 44 deletions(-) > > diff --git a/include/linux/console.h b/include/linux/console.h > index > 8f10d0a85bb4536e4b0dda4e8ccbdf87978bbb4a..67af483574727c00eea1d5a1eacc994755c92607 > 100644 > --- a/include/linux/console.h > +++ b/include/linux/console.h > @@ -605,6 +605,48 @@ extern bool nbcon_can_proceed(struct nbcon_write_context > *wctxt); > extern bool nbcon_enter_unsafe(struct nbcon_write_context *wctxt); > extern bool nbcon_exit_unsafe(struct nbcon_write_context *wctxt); > extern void nbcon_reacquire_nobuf(struct nbcon_write_context *wctxt); > + > +/* > + * Check if the given console is currently capable and allowed to print > + * records. Note that this function does not consider the current context, > + * which can also play a role in deciding if @con can be used to print > + * records. > + */ > +static inline bool console_is_usable(struct console *con, short flags, bool > use_atomic) > +{ > + if (!(flags & CON_ENABLED)) > + return false; > + > + if ((flags & CON_SUSPENDED)) > + return false; > + > + if (flags & CON_NBCON) { > + /* The write_atomic() callback is optional. */ > + if (use_atomic && !con->write_atomic) > + return false; > + > + /* > + * For the !use_atomic case, @printk_kthreads_running is not > + * checked because the write_thread() callback is also used > + * via the legacy loop when the printer threads are not > + * available. > + */ > + } else { > + if (!con->write) > + return false; > + } > + > + /* > + * Console drivers may assume that per-cpu resources have been > + * allocated. So unless they're explicitly marked as being able to > + * cope (CON_ANYTIME) don't call them until this CPU is officially up. > + */ > + if (!cpu_online(raw_smp_processor_id()) && !(flags & CON_ANYTIME)) > + return false; > + > + return true; > +} > + > #else > static inline void nbcon_cpu_emergency_enter(void) { } > static inline void nbcon_cpu_emergency_exit(void) { } > @@ -612,6 +654,8 @@ static inline bool nbcon_can_proceed(struct > nbcon_write_context *wctxt) { return > static inline bool nbcon_enter_unsafe(struct nbcon_write_context *wctxt) { > return false; } > static inline bool nbcon_exit_unsafe(struct nbcon_write_context *wctxt) { > return false; } > static inline void nbcon_reacquire_nobuf(struct nbcon_write_context *wctxt) > { } > +static inline bool console_is_usable(struct console *con, short flags, > + bool use_atomic) { return false; } > #endif > > extern int console_set_on_cmdline; > diff --git a/kernel/printk/internal.h b/kernel/printk/internal.h > index > f72bbfa266d6c9bbc533661c40386aa5f0df6c8f..7238da161ff9814fe8a22e4836624e50ee5b71d3 > 100644 > --- a/kernel/printk/internal.h > +++ b/kernel/printk/internal.h > @@ -112,47 +112,6 @@ bool nbcon_kthread_create(struct console *con); > void nbcon_kthread_stop(struct console *con); > void nbcon_kthreads_wake(void); > > -/* > - * Check if the given console is currently capable and allowed to print > - * records. Note that this function does not consider the current context, > - * which can also play a role in deciding if @con can be used to print > - * records. > - */ > -static inline bool console_is_usable(struct console *con, short flags, bool > use_atomic) > -{ > - if (!(flags & CON_ENABLED)) > - return false; > - > - if ((flags & CON_SUSPENDED)) > - return false; > - > - if (flags & CON_NBCON) { > - /* The write_atomic() callback is optional. */ > - if (use_atomic && !con->write_atomic) > - return false; > - > - /* > - * For the !use_atomic case, @printk_kthreads_running is not > - * checked because the write_thread() callback is also used > - * via the legacy loop when the printer threads are not > - * available. > - */ > - } else { > - if (!con->write) > - return false; > - } > - > - /* > - * Console drivers may assume that per-cpu resources have been > - * allocated. So unless they're explicitly marked as being able to > - * cope (CON_ANYTIME) don't call them until this CPU is officially up. > - */ > - if (!cpu_online(raw_smp_processor_id()) && !(flags & CON_ANYTIME)) > - return false; > - > - return true; > -} > - > /** > * nbcon_kthread_wake - Wake up a console printing thread > * @con: Console to operate on > @@ -204,9 +163,6 @@ static inline bool nbcon_legacy_emit_next_record(struct > console *con, bool *hand > static inline void nbcon_kthread_wake(struct console *con) { } > static inline void nbcon_kthreads_wake(void) { } > > -static inline bool console_is_usable(struct console *con, short flags, > - bool use_atomic) { return false; } > - > #endif /* CONFIG_PRINTK */ > > extern bool have_boot_console;
This also needs the required includes moved over as well. smp.h is probably more appropriate than the higher level percpu.h: diff --git a/include/linux/console.h b/include/linux/console.h index b34c5a0b86303..9406342b27db4 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -19,6 +19,7 @@ #include <linux/irq_work.h> #include <linux/rculist.h> #include <linux/rcuwait.h> +#include <linux/smp.h> #include <linux/types.h> #include <linux/vesa.h> diff --git a/kernel/printk/internal.h b/kernel/printk/internal.h index 077927ed56c5f..7203b7b969c06 100644 --- a/kernel/printk/internal.h +++ b/kernel/printk/internal.h @@ -3,7 +3,6 @@ * internal.h - printk internal definitions */ #include <linux/console.h> -#include <linux/percpu.h> #include <linux/types.h> #if defined(CONFIG_PRINTK) && defined(CONFIG_SYSCTL) On a side note, we are missing <linux/rcuwait.h> in kernel/printk/internal.h. It currently relies on console.h as a proxy. But I guess that is out of scope for this series. John _______________________________________________ Kgdb-bugreport mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
