From: John Ogness <john.ogness@linutronix.de> To: Marek Szyprowski <m.szyprowski@samsung.com>, Petr Mladek <pmladek@suse.com> Cc: 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>, linux-amlogic@lists.infradead.org Subject: Re: [PATCH printk v5 1/1] printk: extend console_lock for per-console locking Date: Fri, 06 May 2022 00:39:12 +0206 [thread overview] Message-ID: <87zgjvd2zb.fsf@jogness.linutronix.de> (raw) In-Reply-To: <87a6bwapij.fsf@jogness.linutronix.de> Hi Marek, On 2022-05-05, John Ogness <john.ogness@linutronix.de> wrote: > I will go through and check if all access to AML_UART_CONTROL is > protected by port->lock. The startup() callback of the uart_ops is not called with the port locked. I'm having difficulties identifying if the startup() callback can occur after the console was already registered via meson_uart_init() and could be actively printing, but I see other serial drivers are protecting their registers in the startup() callback with the port->lock. Could you try booting the meson hardware with the following change? (And removing any previous debug changes I posted?) John diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c index 2bf1c57e0981..f551b8603817 100644 --- a/drivers/tty/serial/meson_uart.c +++ b/drivers/tty/serial/meson_uart.c @@ -267,9 +267,12 @@ static void meson_uart_reset(struct uart_port *port) static int meson_uart_startup(struct uart_port *port) { + unsigned long flags; u32 val; int ret = 0; + spin_lock_irqsave(&port->lock, flags); + val = readl(port->membase + AML_UART_CONTROL); val |= AML_UART_CLEAR_ERR; writel(val, port->membase + AML_UART_CONTROL); @@ -285,6 +288,8 @@ static int meson_uart_startup(struct uart_port *port) val = (AML_UART_RECV_IRQ(1) | AML_UART_XMIT_IRQ(port->fifosize / 2)); writel(val, port->membase + AML_UART_MISC); + spin_unlock_irqrestore(&port->lock, flags); + ret = request_irq(port->irq, meson_uart_interrupt, 0, port->name, port);
WARNING: multiple messages have this Message-ID (diff)
From: John Ogness <john.ogness@linutronix.de> To: Marek Szyprowski <m.szyprowski@samsung.com>, Petr Mladek <pmladek@suse.com> Cc: 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>, linux-amlogic@lists.infradead.org Subject: Re: [PATCH printk v5 1/1] printk: extend console_lock for per-console locking Date: Fri, 06 May 2022 00:39:12 +0206 [thread overview] Message-ID: <87zgjvd2zb.fsf@jogness.linutronix.de> (raw) In-Reply-To: <87a6bwapij.fsf@jogness.linutronix.de> Hi Marek, On 2022-05-05, John Ogness <john.ogness@linutronix.de> wrote: > I will go through and check if all access to AML_UART_CONTROL is > protected by port->lock. The startup() callback of the uart_ops is not called with the port locked. I'm having difficulties identifying if the startup() callback can occur after the console was already registered via meson_uart_init() and could be actively printing, but I see other serial drivers are protecting their registers in the startup() callback with the port->lock. Could you try booting the meson hardware with the following change? (And removing any previous debug changes I posted?) John diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c index 2bf1c57e0981..f551b8603817 100644 --- a/drivers/tty/serial/meson_uart.c +++ b/drivers/tty/serial/meson_uart.c @@ -267,9 +267,12 @@ static void meson_uart_reset(struct uart_port *port) static int meson_uart_startup(struct uart_port *port) { + unsigned long flags; u32 val; int ret = 0; + spin_lock_irqsave(&port->lock, flags); + val = readl(port->membase + AML_UART_CONTROL); val |= AML_UART_CLEAR_ERR; writel(val, port->membase + AML_UART_CONTROL); @@ -285,6 +288,8 @@ static int meson_uart_startup(struct uart_port *port) val = (AML_UART_RECV_IRQ(1) | AML_UART_XMIT_IRQ(port->fifosize / 2)); writel(val, port->membase + AML_UART_MISC); + spin_unlock_irqrestore(&port->lock, flags); + ret = request_irq(port->irq, meson_uart_interrupt, 0, port->name, port); _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2022-05-05 22:33 UTC|newest] Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-21 21:22 [PATCH printk v4 00/15] implement threaded console printing John Ogness 2022-04-21 21:22 ` [PATCH printk v4 01/15] printk: rename cpulock functions John Ogness 2022-04-21 21:22 ` [PATCH printk v4 02/15] printk: cpu sync always disable interrupts John Ogness 2022-04-21 21:22 ` [PATCH printk v4 03/15] printk: add missing memory barrier to wake_up_klogd() John Ogness 2022-04-21 21:22 ` [PATCH printk v4 04/15] printk: wake up all waiters John Ogness 2022-04-21 21:22 ` [PATCH printk v4 05/15] printk: wake waiters for safe and NMI contexts John Ogness 2022-04-21 21:22 ` [PATCH printk v4 06/15] printk: get caller_id/timestamp after migration disable John Ogness 2022-04-21 21:22 ` [PATCH printk v4 07/15] printk: call boot_delay_msec() in printk_delay() John Ogness 2022-04-21 21:22 ` [PATCH printk v4 08/15] printk: add con_printk() macro for console details John Ogness 2022-04-21 21:22 ` [PATCH printk v4 09/15] printk: refactor and rework printing logic John Ogness 2022-04-21 21:22 ` [PATCH printk v4 10/15] printk: move buffer definitions into console_emit_next_record() caller John Ogness 2022-04-21 21:22 ` [PATCH printk v4 11/15] printk: add pr_flush() John Ogness 2022-04-21 21:22 ` [PATCH printk v4 12/15] printk: add functions to prefer direct printing John Ogness 2022-04-21 21:22 ` [PATCH printk v4 13/15] printk: add kthread console printers John Ogness 2022-04-22 7:48 ` Petr Mladek 2022-04-21 21:22 ` [PATCH printk v4 14/15] printk: extend console_lock for proper kthread support John Ogness 2022-04-21 21:40 ` John Ogness 2022-04-22 9:21 ` Petr Mladek 2022-04-25 20:58 ` [PATCH printk v5 1/1] printk: extend console_lock for per-console locking John Ogness 2022-04-26 12:07 ` Petr Mladek 2022-04-26 13:16 ` Petr Mladek [not found] ` <CGME20220427070833eucas1p27a32ce7c41c0da26f05bd52155f0031c@eucas1p2.samsung.com> 2022-04-27 7:08 ` Marek Szyprowski 2022-04-27 7:08 ` Marek Szyprowski 2022-04-27 7:38 ` Petr Mladek 2022-04-27 7:38 ` Petr Mladek 2022-04-27 11:44 ` Marek Szyprowski 2022-04-27 11:44 ` Marek Szyprowski 2022-04-27 16:15 ` John Ogness 2022-04-27 16:15 ` John Ogness 2022-04-27 16:48 ` Petr Mladek 2022-04-27 16:48 ` Petr Mladek 2022-04-28 14:54 ` Petr Mladek 2022-04-28 14:54 ` Petr Mladek 2022-04-29 13:53 ` Marek Szyprowski 2022-04-29 13:53 ` Marek Szyprowski 2022-04-30 16:00 ` John Ogness 2022-04-30 16:00 ` John Ogness 2022-05-02 9:19 ` Marek Szyprowski 2022-05-02 9:19 ` Marek Szyprowski 2022-05-02 13:11 ` John Ogness 2022-05-02 13:11 ` John Ogness 2022-05-02 22:29 ` Marek Szyprowski 2022-05-02 22:29 ` Marek Szyprowski 2022-05-04 5:56 ` John Ogness 2022-05-04 5:56 ` John Ogness 2022-05-04 6:52 ` Marek Szyprowski 2022-05-04 6:52 ` Marek Szyprowski 2022-06-08 15:10 ` Geert Uytterhoeven 2022-06-08 15:10 ` Geert Uytterhoeven 2022-06-09 11:19 ` John Ogness 2022-06-09 11:19 ` John Ogness 2022-06-09 11:58 ` Jason A. Donenfeld 2022-06-09 11:58 ` Jason A. Donenfeld 2022-06-09 12:18 ` Dmitry Vyukov 2022-06-09 12:18 ` Dmitry Vyukov 2022-06-09 12:27 ` Jason A. Donenfeld 2022-06-09 12:27 ` Jason A. Donenfeld 2022-06-09 12:32 ` Dmitry Vyukov 2022-06-09 12:32 ` Dmitry Vyukov 2022-06-17 16:51 ` Sebastian Andrzej Siewior 2022-06-17 16:51 ` Sebastian Andrzej Siewior 2022-06-09 12:18 ` Jason A. Donenfeld 2022-06-09 12:18 ` Jason A. Donenfeld 2022-05-02 13:17 ` Petr Mladek 2022-05-02 13:17 ` Petr Mladek 2022-05-02 23:13 ` Marek Szyprowski 2022-05-02 23:13 ` Marek Szyprowski 2022-05-03 6:49 ` Petr Mladek 2022-05-03 6:49 ` Petr Mladek 2022-05-04 6:05 ` Marek Szyprowski 2022-05-04 6:05 ` Marek Szyprowski 2022-05-04 21:11 ` John Ogness 2022-05-04 21:11 ` John Ogness 2022-05-04 22:42 ` John Ogness 2022-05-04 22:42 ` John Ogness 2022-05-05 22:33 ` John Ogness [this message] 2022-05-05 22:33 ` John Ogness 2022-05-06 6:43 ` Marek Szyprowski 2022-05-06 6:43 ` Marek Szyprowski 2022-05-06 7:55 ` Neil Armstrong 2022-05-06 7:55 ` Neil Armstrong 2022-05-08 11:02 ` John Ogness 2022-05-08 11:02 ` John Ogness 2022-05-06 8:16 ` Petr Mladek 2022-05-06 8:16 ` Petr Mladek 2022-05-06 9:20 ` John Ogness 2022-05-06 9:20 ` John Ogness [not found] ` <CGME20220506112526eucas1p2a3688f87d3ed8331b99f2f876bf6c2f6@eucas1p2.samsung.com> 2022-05-06 11:25 ` Marek Szyprowski 2022-05-06 12:41 ` John Ogness 2022-05-06 13:04 ` Marek Szyprowski 2022-06-22 9:03 ` Geert Uytterhoeven 2022-06-22 9:03 ` Geert Uytterhoeven 2022-06-22 22:37 ` John Ogness 2022-06-22 22:37 ` John Ogness 2022-06-23 10:10 ` Geert Uytterhoeven 2022-06-23 10:10 ` Geert Uytterhoeven 2022-04-21 21:22 ` [PATCH printk v4 15/15] printk: remove @console_locked John Ogness 2022-04-22 9:39 ` [PATCH printk v4 00/15] implement threaded console printing Petr Mladek 2022-04-22 20:29 ` Petr Mladek
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=87zgjvd2zb.fsf@jogness.linutronix.de \ --to=john.ogness@linutronix.de \ --cc=gregkh@linuxfoundation.org \ --cc=linux-amlogic@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --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: linkBe 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.