All of lore.kernel.org
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert@linux-m68k.org>
To: John Ogness <john.ogness@linutronix.de>
Cc: Petr Mladek <pmladek@suse.com>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	linux-serial@vger.kernel.org,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Linux-Renesas <linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH printk v3 40/40] tty: serial: sh-sci: use setup() callback for early console
Date: Tue, 8 Nov 2022 09:53:29 +0100	[thread overview]
Message-ID: <CAMuHMdXZnTaxbezvH=NBz7tbBgiXjj6H5YGv88tVHtYLFxKuag@mail.gmail.com> (raw)
In-Reply-To: <20221107141638.3790965-41-john.ogness@linutronix.de>

Hi John,

CC linux-sh (SH-specific code)
CC linux-renesas-soc (JFYI)

On Mon, Nov 7, 2022 at 3:20 PM John Ogness <john.ogness@linutronix.de> wrote:
> When setting up the early console, the setup() callback of the
> regular console is used. It is called manually before registering
> the early console instead of providing a setup() callback for the
> early console. This is probably because the early setup needs a
> different @options during the early stage.
>
> The issue here is that the setup() callback is called without the
> console_list_lock held and functions such as uart_set_options()
> expect that.
>
> Rather than manually calling the setup() function before registering,
> provide an early console setup() callback that will use the different
> early options. This ensures that the error checking, ordering, and
> locking context when setting up the early console are correct.
>
> Note that technically the current implementation works because it is
> only used in early boot. And since the early console setup is
> performed before registering, it cannot race with anything and thus
> does not need any locking. However, longterm maintenance is easier
> when drivers rely on the subsystem API rather than manually
> implementing steps that could cause breakage in the future.
>
> Signed-off-by: John Ogness <john.ogness@linutronix.de>

Thanks for your patch!

> --- a/drivers/tty/serial/sh-sci.c
> +++ b/drivers/tty/serial/sh-sci.c
> @@ -3054,15 +3054,26 @@ static struct console serial_console = {
>  };
>
>  #ifdef CONFIG_SUPERH
> +static char early_serial_buf[32];
> +
> +static int early_serial_console_setup(struct console *co, char *options)
> +{
> +       WARN_ON(options);
> +       /*
> +        * Use @early_serial_buf because @options will always be
> +        * NULL at this early stage.
> +        */
> +       return serial_console_setup(co, early_serial_buf);
> +}
> +
>  static struct console early_serial_console = {
>         .name           = "early_ttySC",
>         .write          = serial_console_write,
> +       .setup          = early_serial_console_setup,
>         .flags          = CON_PRINTBUFFER,
>         .index          = -1,
>  };
>
> -static char early_serial_buf[32];
> -
>  static int sci_probe_earlyprintk(struct platform_device *pdev)
>  {
>         const struct plat_sci_port *cfg = dev_get_platdata(&pdev->dev);
> @@ -3074,8 +3085,6 @@ static int sci_probe_earlyprintk(struct platform_device *pdev)
>
>         sci_init_single(pdev, &sci_ports[pdev->id], pdev->id, cfg, true);
>
> -       serial_console_setup(&early_serial_console, early_serial_buf);
> -
>         if (!strstr(early_serial_buf, "keep"))
>                 early_serial_console.flags |= CON_BOOT;
>
> --
> 2.30.2

LGTM, so
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

  reply	other threads:[~2022-11-08  8:53 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-07 14:15 [PATCH printk v3 00/40] reduce console_lock scope John Ogness
2022-11-07 14:15 ` John Ogness
2022-11-07 14:15 ` John Ogness
2022-11-07 14:15 ` John Ogness
2022-11-07 14:15 ` [PATCH printk v3 01/40] rcu: implement lockdep_rcu_enabled for !CONFIG_DEBUG_LOCK_ALLOC John Ogness
2022-11-07 18:01   ` Paul E. McKenney
2022-11-07 19:23     ` John Ogness
2022-11-08 19:27       ` Paul E. McKenney
2022-11-09 17:49         ` Paul E. McKenney
2022-11-08 10:29   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 02/40] serial: kgdboc: Lock console list in probe function John Ogness
2022-11-09  8:20   ` Daniel Thompson
2022-11-07 14:16 ` [PATCH printk v3 03/40] printk: Convert console_drivers list to hlist John Ogness
2022-11-07 14:16 ` [PATCH printk v3 04/40] printk: Prepare for SRCU console list protection John Ogness
2022-11-08 12:14   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 05/40] printk: fix setting first seq for consoles John Ogness
2022-11-08 12:20   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 06/40] um: kmsg_dump: only dump when no output console available John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-08 12:41   ` Petr Mladek
2022-11-08 12:41     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 07/40] console: introduce console_is_enabled() wrapper John Ogness
2022-11-08 16:18   ` Petr Mladek
2022-11-10 15:05     ` John Ogness
2022-11-11 13:32       ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 08/40] printk: use console_is_enabled() John Ogness
2022-11-08 17:40   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 09/40] um: kmsg_dump: " John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-09 14:52   ` Petr Mladek
2022-11-09 14:52     ` Petr Mladek
2022-11-09 14:56   ` Petr Mladek
2022-11-09 14:56     ` Petr Mladek
2022-11-09 14:57     ` Petr Mladek
2022-11-09 14:57       ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 10/40] kdb: kdb_io: " John Ogness
2022-11-09  8:22   ` Daniel Thompson
2022-11-09 14:59   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 11/40] um: kmsg_dumper: use srcu console list iterator John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-09 15:05   ` Petr Mladek
2022-11-09 15:05     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 12/40] tty: serial: kgdboc: document console_lock usage John Ogness
2022-11-09  8:23   ` Daniel Thompson
2022-11-09 15:19   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 13/40] tty: tty_io: " John Ogness
2022-11-09 15:20   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 14/40] proc: consoles: " John Ogness
2022-11-09 15:22   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 15/40] kdb: use srcu console list iterator John Ogness
2022-11-09  8:53   ` Daniel Thompson
2022-11-09  9:27     ` John Ogness
2022-11-09 15:27       ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 16/40] printk: console_flush_all: " John Ogness
2022-11-07 14:16 ` [PATCH printk v3 17/40] printk: console_unblank: " John Ogness
2022-11-07 14:16 ` [PATCH printk v3 18/40] printk: console_flush_on_panic: " John Ogness
2022-11-07 14:16 ` [PATCH printk v3 19/40] printk: console_device: " John Ogness
2022-11-09 15:58   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 20/40] printk: __pr_flush: " John Ogness
2022-11-07 14:16 ` [PATCH printk v3 21/40] printk: introduce console_list_lock John Ogness
2022-11-10 12:58   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 22/40] console: introduce console_is_registered() John Ogness
2022-11-10 13:00   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 23/40] serial_core: replace uart_console_enabled() with uart_console_registered() John Ogness
2022-11-08  8:46   ` Geert Uytterhoeven
2022-11-10 13:24     ` Petr Mladek
2022-11-10 13:46       ` John Ogness
2022-11-07 14:16 ` [PATCH printk v3 24/40] tty: nfcon: use console_is_registered() John Ogness
2022-11-08  8:39   ` Geert Uytterhoeven
2022-11-10 13:58   ` Petr Mladek
2022-11-10 14:19     ` John Ogness
2022-11-10 17:50       ` Eero Tamminen
2022-11-07 14:16 ` [PATCH printk v3 25/40] efi: earlycon: " John Ogness
2022-11-10 14:28   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 26/40] tty: hvc: " John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-10 14:52   ` Petr Mladek
2022-11-10 14:52     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 27/40] tty: serial: earlycon: " John Ogness
2022-11-10 15:00   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 28/40] tty: serial: pic32_uart: " John Ogness
2022-11-10 15:01   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 29/40] tty: serial: samsung_tty: " John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-10 15:01   ` Petr Mladek
2022-11-10 15:01     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 30/40] tty: serial: xilinx_uartps: " John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-10 15:04   ` Petr Mladek
2022-11-10 15:04     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 31/40] usb: early: xhci-dbc: " John Ogness
2022-11-10 15:05   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 32/40] netconsole: avoid CON_ENABLED misuse to track registration John Ogness
2022-11-10 15:17   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 33/40] printk, xen: fbfront: create/use safe function for forcing preferred John Ogness
2022-11-07 14:16   ` John Ogness
2022-11-10 15:34   ` Petr Mladek
2022-11-10 15:34     ` Petr Mladek
2022-11-10 16:03     ` John Ogness
2022-11-10 16:03       ` John Ogness
2022-11-10 17:26       ` Petr Mladek
2022-11-10 17:26         ` Petr Mladek
2022-11-10 22:37         ` John Ogness
2022-11-10 22:37           ` John Ogness
2022-11-11 10:48   ` Petr Mladek
2022-11-11 10:48     ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 34/40] tty: tty_io: use console_list_lock for list synchronization John Ogness
2022-11-07 14:16 ` [PATCH printk v3 35/40] proc: consoles: use console_list_lock for list iteration John Ogness
2022-11-07 14:16 ` [PATCH printk v3 36/40] tty: serial: kgdboc: use console_list_lock for list traversal John Ogness
2022-11-09  9:06   ` Daniel Thompson
2022-11-09  9:44     ` John Ogness
2022-11-10 18:00       ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 37/40] tty: serial: kgdboc: synchronize tty_find_polling_driver() and register_console() John Ogness
2022-11-10 15:13   ` Daniel Thompson
2022-11-10 18:03   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 38/40] tty: serial: kgdboc: use console_list_lock to trap exit John Ogness
2022-11-10 15:18   ` Daniel Thompson
2022-11-11  9:59   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 39/40] printk: relieve console_lock of list synchronization duties John Ogness
2022-11-07 16:30   ` John Ogness
2022-11-11 10:27     ` Petr Mladek
2022-11-11 13:06   ` Petr Mladek
2022-11-07 14:16 ` [PATCH printk v3 40/40] tty: serial: sh-sci: use setup() callback for early console John Ogness
2022-11-08  8:53   ` Geert Uytterhoeven [this message]
2022-11-11 17:15   ` Petr Mladek
2022-11-11 14:43 ` [PATCH printk v3 00/40] reduce console_lock scope Mathieu Desnoyers
2022-11-11 14:43   ` Mathieu Desnoyers
2022-11-11 14:43   ` Mathieu Desnoyers
2022-11-11 14:43   ` Mathieu Desnoyers

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='CAMuHMdXZnTaxbezvH=NBz7tbBgiXjj6H5YGv88tVHtYLFxKuag@mail.gmail.com' \
    --to=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.