The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Marcos Paulo de Souza <mpdesouza@suse.com>
To: Petr Mladek <pmladek@suse.com>, John Ogness <john.ogness@linutronix.de>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Chris Down <chris@chrisdown.name>,
	 linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 5/9] printk: Separate code for enabling console
Date: Tue, 05 May 2026 14:56:01 -0300	[thread overview]
Message-ID: <2a0aea8414c505058ef290d4530aae48475b11b8.camel@suse.com> (raw)
In-Reply-To: <20260423130015.85175-6-pmladek@suse.com>

On Thu, 2026-04-23 at 15:00 +0200, Petr Mladek wrote:
> There are several code paths which try to enable a newly registered
> console. Move the logic into a separate try_enable_console()
> function.
> 
> It simplifies a bit the long register_console() function definition.
> 
> Also followup patches are going to add even more code paths. And it
> will
> be easier to use "return" when it does not make sense to try other
> variants.
> 
> The patch does not change the existing behavior.
> 
> Signed-off-by: Petr Mladek <pmladek@suse.com>

Acked-by: Marcos Paulo de Souza <mpdesouza@suse.com>

> ---
>  kernel/printk/printk.c | 64 ++++++++++++++++++++++++----------------
> --
>  1 file changed, 36 insertions(+), 28 deletions(-)
> 
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 7a3bbb0cb794..2543c810efcb 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -4040,6 +4040,41 @@ static void try_enable_default_console(struct
> console *newcon)
>  		newcon->flags |= CON_CONSDEV;
>  }
>  
> +#define console_first()				\
> +	hlist_entry(console_list.first, struct console, node)
> +
> +static int try_enable_console(struct console *newcon)
> +{
> +	int err;
> +
> +	/*
> +	 * See if we want to enable this console driver by default.
> +	 *
> +	 * Nope when a console is preferred by the command line,
> device
> +	 * tree, or SPCR.
> +	 *
> +	 * The first real console with tty binding (driver) wins.
> More
> +	 * consoles might get enabled before the right one is found.
> +	 *
> +	 * Note that a console with tty binding will have
> CON_CONSDEV
> +	 * flag set and will be first in the list.
> +	 */
> +	if (preferred_dev_console < 0) {
> +		if (hlist_empty(&console_list) || !console_first()-
> >device ||
> +		    console_first()->flags & CON_BOOT) {
> +			try_enable_default_console(newcon);
> +		}
> +	}
> +
> +	/* See if this console matches one we selected on the
> command line */
> +	err = try_enable_preferred_console(newcon, true);
> +	if (err != -ENOENT)
> +		return err;
> +
> +	/* If not, try to match against the platform default(s) */
> +	return try_enable_preferred_console(newcon, false);
> +}
> +
>  /* Return the starting sequence number for a newly registered
> console. */
>  static u64 get_init_console_seq(struct console *newcon, bool
> bootcon_registered)
>  {
> @@ -4114,9 +4149,6 @@ static u64 get_init_console_seq(struct console
> *newcon, bool bootcon_registered)
>  	return init_seq;
>  }
>  
> -#define console_first()				\
> -	hlist_entry(console_list.first, struct console, node)
> -
>  static int unregister_console_locked(struct console *console);
>  
>  /*
> @@ -4178,31 +4210,7 @@ void register_console(struct console *newcon)
>  			goto unlock;
>  	}
>  
> -	/*
> -	 * See if we want to enable this console driver by default.
> -	 *
> -	 * Nope when a console is preferred by the command line,
> device
> -	 * tree, or SPCR.
> -	 *
> -	 * The first real console with tty binding (driver) wins.
> More
> -	 * consoles might get enabled before the right one is found.
> -	 *
> -	 * Note that a console with tty binding will have
> CON_CONSDEV
> -	 * flag set and will be first in the list.
> -	 */
> -	if (preferred_dev_console < 0) {
> -		if (hlist_empty(&console_list) || !console_first()-
> >device ||
> -		    console_first()->flags & CON_BOOT) {
> -			try_enable_default_console(newcon);
> -		}
> -	}
> -
> -	/* See if this console matches one we selected on the
> command line */
> -	err = try_enable_preferred_console(newcon, true);
> -
> -	/* If not, try to match against the platform default(s) */
> -	if (err == -ENOENT)
> -		err = try_enable_preferred_console(newcon, false);
> +	err = try_enable_console(newcon);
>  
>  	/* printk() messages are not printed to the Braille console.
> */
>  	if (err || newcon->flags & CON_BRL) {

  parent reply	other threads:[~2026-05-05 17:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260423130015.85175-1-pmladek@suse.com>
     [not found] ` <20260423130015.85175-4-pmladek@suse.com>
2026-05-05 17:47   ` [PATCH v2 3/9] printk: Separate code for adding/updating preferred console metadata Marcos Paulo de Souza
     [not found] ` <20260423130015.85175-6-pmladek@suse.com>
2026-05-05 17:56   ` Marcos Paulo de Souza [this message]
     [not found] ` <20260423130015.85175-2-pmladek@suse.com>
2026-05-08 14:22   ` [PATCH v2 1/9] printk: Rename struct console_cmdline to preferred_console John Ogness

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2a0aea8414c505058ef290d4530aae48475b11b8.camel@suse.com \
    --to=mpdesouza@suse.com \
    --cc=chris@chrisdown.name \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox