On Sun, Jul 05, 2020 at 11:28:56AM +0100, Marc Zyngier wrote: > On 2020-07-05 11:07, Andy Shevchenko wrote: > > On Sun, Jul 5, 2020 at 12:32 PM Marc Zyngier <maz@xxxxxxxxxx> wrote: > > > > > > The meson UART driver triggers a lockdep splat at boot time, due > > > to the new expectation that the driver has to initialize the > > > per-port spinlock itself. > > > > > > It remains unclear why a double initialization of the port > > > spinlock is a desirable outcome, but in the meantime let's > > > fix the splat. > > > > > > > Thanks! > > > > Can you test patch from [1] if it helps and doesn't break anything in > > your case? > > > > [1]: > > https://lore.kernel.org/linux-serial/20200217114016.49856-1-andriy.shevchenko@xxxxxxxxxxxxxxx/T/#m9255e2a7474b160e66c7060fca5323ca3df49cfd > > On its own, this patch doesn't seem to cure the issue (and it > adds a compile-time warning due to unused flags). Ah, sorry, I didn't compile it. And after second though I think we simple need to initialise spin lock there. Can you try below (compile-tested only): >From ed4c882e7dc3fdfcea706ada0678c060c36163b3 Mon Sep 17 00:00:00 2001 From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Date: Sat, 4 Jul 2020 19:30:39 +0300 Subject: [PATCH 1/1] serial: core: Initialise spin lock before use in uart_configure_port() In case of the port to be used as a console we must initialise a spin lock before use. Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> --- drivers/tty/serial/serial_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 3cc183acf7ba..a81b4900eb60 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2371,6 +2371,13 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state, /* Power up port for set_mctrl() */ uart_change_pm(state, UART_PM_STATE_ON); + /* + * If this driver supports console, and it hasn't been + * successfully registered yet, initialise spin lock for it. + */ + if (port->cons && !(port->cons->flags & CON_ENABLED)) + spin_lock_init(&port->lock); + /* * Ensure that the modem control lines are de-activated. * keep the DTR setting that is set in uart_set_options() -- 2.27.0 > Or did you mean to test it in complement of my patch? No, the idea to avoid "fixing" driver as you rightfully noticed a double init issue. -- With Best Regards, Andy Shevchenko