From: John Ogness <john.ogness@linutronix.de> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "Jiri Slaby" <jirislaby@kernel.org>, linux-serial@vger.kernel.org, "Petr Mladek" <pmladek@suse.com>, "Thomas Gleixner" <tglx@linutronix.de>, linux-kernel@vger.kernel.org, "Maxime Coquelin" <mcoquelin.stm32@gmail.com>, "Alexandre Torgue" <alexandre.torgue@foss.st.com>, "Valentin Caron" <valentin.caron@foss.st.com>, "Marek Vasut" <marex@denx.de>, "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>, "Sebastian Andrzej Siewior" <bigeasy@linutronix.de>, "Lukas Wunner" <lukas@wunner.de>, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org Subject: [PATCH tty v1 64/74] serial: stm32: Use port lock wrappers Date: Thu, 14 Sep 2023 20:44:21 +0206 [thread overview] Message-ID: <20230914183831.587273-65-john.ogness@linutronix.de> (raw) In-Reply-To: <20230914183831.587273-1-john.ogness@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de> When a serial port is used for kernel console output, then all modifications to the UART registers which are done from other contexts, e.g. getty, termios, are interference points for the kernel console. So far this has been ignored and the printk output is based on the principle of hope. The rework of the console infrastructure which aims to support threaded and atomic consoles, requires to mark sections which modify the UART registers as unsafe. This allows the atomic write function to make informed decisions and eventually to restore operational state. It also allows to prevent the regular UART code from modifying UART registers while printk output is in progress. All modifications of UART registers are guarded by the UART port lock, which provides an obvious synchronization point with the console infrastructure. To avoid adding this functionality to all UART drivers, wrap the spin_[un]lock*() invocations for uart_port::lock into helper functions which just contain the spin_[un]lock*() invocations for now. In a subsequent step these helpers will gain the console synchronization mechanisms. Converted with coccinelle. No functional change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- drivers/tty/serial/stm32-usart.c | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c index 5e9cf0c48813..8c51ec9433d6 100644 --- a/drivers/tty/serial/stm32-usart.c +++ b/drivers/tty/serial/stm32-usart.c @@ -537,7 +537,7 @@ static void stm32_usart_rx_dma_complete(void *arg) unsigned int size; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq_irqrestore(port, flags); if (size) @@ -643,9 +643,9 @@ static void stm32_usart_tx_dma_complete(void *arg) stm32_usart_tx_dma_terminate(stm32port); /* Let's see if we have pending data to send */ - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_transmit_chars(port); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } static void stm32_usart_tx_interrupt_enable(struct uart_port *port) @@ -889,7 +889,7 @@ static irqreturn_t stm32_usart_interrupt(int irq, void *ptr) if (!stm32_port->throttled) { if (((sr & USART_SR_RXNE) && !stm32_usart_rx_dma_started(stm32_port)) || ((sr & USART_SR_ERR_MASK) && stm32_usart_rx_dma_started(stm32_port))) { - spin_lock(&port->lock); + uart_port_lock(port); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq(port); if (size) @@ -898,14 +898,14 @@ static irqreturn_t stm32_usart_interrupt(int irq, void *ptr) } if ((sr & USART_SR_TXE) && !(stm32_port->tx_ch)) { - spin_lock(&port->lock); + uart_port_lock(port); stm32_usart_transmit_chars(port); - spin_unlock(&port->lock); + uart_port_unlock(port); } /* Receiver timeout irq for DMA RX */ if (stm32_usart_rx_dma_started(stm32_port) && !stm32_port->throttled) { - spin_lock(&port->lock); + uart_port_lock(port); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq(port); if (size) @@ -993,7 +993,7 @@ static void stm32_usart_throttle(struct uart_port *port) const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* * Pause DMA transfer, so the RX data gets queued into the FIFO. @@ -1006,7 +1006,7 @@ static void stm32_usart_throttle(struct uart_port *port) stm32_usart_clr_bits(port, ofs->cr3, stm32_port->cr3_irq); stm32_port->throttled = true; - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } /* Unthrottle the remote, the input buffer can now accept data. */ @@ -1016,7 +1016,7 @@ static void stm32_usart_unthrottle(struct uart_port *port) const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_set_bits(port, ofs->cr1, stm32_port->cr1_irq); if (stm32_port->cr3_irq) stm32_usart_set_bits(port, ofs->cr3, stm32_port->cr3_irq); @@ -1030,7 +1030,7 @@ static void stm32_usart_unthrottle(struct uart_port *port) if (stm32_port->rx_ch) stm32_usart_rx_dma_start_or_resume(port); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } /* Receive stop */ @@ -1158,7 +1158,7 @@ static void stm32_usart_set_termios(struct uart_port *port, baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 8); - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); ret = readl_relaxed_poll_timeout_atomic(port->membase + ofs->isr, isr, @@ -1349,7 +1349,7 @@ static void stm32_usart_set_termios(struct uart_port *port, writel_relaxed(cr1, port->membase + ofs->cr1); stm32_usart_set_bits(port, ofs->cr1, BIT(cfg->uart_enable_bit)); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); /* Handle modem control interrupts */ if (UART_ENABLE_MS(port, termios->c_cflag)) @@ -1399,9 +1399,9 @@ static void stm32_usart_pm(struct uart_port *port, unsigned int state, pm_runtime_get_sync(port->dev); break; case UART_PM_STATE_OFF: - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_clr_bits(port, ofs->cr1, BIT(cfg->uart_enable_bit)); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); pm_runtime_put_sync(port->dev); break; } @@ -1884,9 +1884,9 @@ static void stm32_usart_console_write(struct console *co, const char *s, int locked = 1; if (oops_in_progress) - locked = spin_trylock_irqsave(&port->lock, flags); + locked = uart_port_trylock_irqsave(port, &flags); else - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* Save and disable interrupts, enable the transmitter */ old_cr1 = readl_relaxed(port->membase + ofs->cr1); @@ -1900,7 +1900,7 @@ static void stm32_usart_console_write(struct console *co, const char *s, writel_relaxed(old_cr1, port->membase + ofs->cr1); if (locked) - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } static int stm32_usart_console_setup(struct console *co, char *options) @@ -2035,7 +2035,7 @@ static int __maybe_unused stm32_usart_serial_en_wakeup(struct uart_port *port, * low-power mode. */ if (stm32_port->rx_ch) { - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* Poll data from DMA RX buffer if any */ if (!stm32_usart_rx_dma_pause(stm32_port)) size += stm32_usart_receive_chars(port, true); -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: John Ogness <john.ogness@linutronix.de> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "Jiri Slaby" <jirislaby@kernel.org>, linux-serial@vger.kernel.org, "Petr Mladek" <pmladek@suse.com>, "Thomas Gleixner" <tglx@linutronix.de>, linux-kernel@vger.kernel.org, "Maxime Coquelin" <mcoquelin.stm32@gmail.com>, "Alexandre Torgue" <alexandre.torgue@foss.st.com>, "Valentin Caron" <valentin.caron@foss.st.com>, "Marek Vasut" <marex@denx.de>, "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>, "Sebastian Andrzej Siewior" <bigeasy@linutronix.de>, "Lukas Wunner" <lukas@wunner.de>, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org Subject: [PATCH tty v1 64/74] serial: stm32: Use port lock wrappers Date: Thu, 14 Sep 2023 20:44:21 +0206 [thread overview] Message-ID: <20230914183831.587273-65-john.ogness@linutronix.de> (raw) In-Reply-To: <20230914183831.587273-1-john.ogness@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de> When a serial port is used for kernel console output, then all modifications to the UART registers which are done from other contexts, e.g. getty, termios, are interference points for the kernel console. So far this has been ignored and the printk output is based on the principle of hope. The rework of the console infrastructure which aims to support threaded and atomic consoles, requires to mark sections which modify the UART registers as unsafe. This allows the atomic write function to make informed decisions and eventually to restore operational state. It also allows to prevent the regular UART code from modifying UART registers while printk output is in progress. All modifications of UART registers are guarded by the UART port lock, which provides an obvious synchronization point with the console infrastructure. To avoid adding this functionality to all UART drivers, wrap the spin_[un]lock*() invocations for uart_port::lock into helper functions which just contain the spin_[un]lock*() invocations for now. In a subsequent step these helpers will gain the console synchronization mechanisms. Converted with coccinelle. No functional change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- drivers/tty/serial/stm32-usart.c | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c index 5e9cf0c48813..8c51ec9433d6 100644 --- a/drivers/tty/serial/stm32-usart.c +++ b/drivers/tty/serial/stm32-usart.c @@ -537,7 +537,7 @@ static void stm32_usart_rx_dma_complete(void *arg) unsigned int size; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq_irqrestore(port, flags); if (size) @@ -643,9 +643,9 @@ static void stm32_usart_tx_dma_complete(void *arg) stm32_usart_tx_dma_terminate(stm32port); /* Let's see if we have pending data to send */ - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_transmit_chars(port); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } static void stm32_usart_tx_interrupt_enable(struct uart_port *port) @@ -889,7 +889,7 @@ static irqreturn_t stm32_usart_interrupt(int irq, void *ptr) if (!stm32_port->throttled) { if (((sr & USART_SR_RXNE) && !stm32_usart_rx_dma_started(stm32_port)) || ((sr & USART_SR_ERR_MASK) && stm32_usart_rx_dma_started(stm32_port))) { - spin_lock(&port->lock); + uart_port_lock(port); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq(port); if (size) @@ -898,14 +898,14 @@ static irqreturn_t stm32_usart_interrupt(int irq, void *ptr) } if ((sr & USART_SR_TXE) && !(stm32_port->tx_ch)) { - spin_lock(&port->lock); + uart_port_lock(port); stm32_usart_transmit_chars(port); - spin_unlock(&port->lock); + uart_port_unlock(port); } /* Receiver timeout irq for DMA RX */ if (stm32_usart_rx_dma_started(stm32_port) && !stm32_port->throttled) { - spin_lock(&port->lock); + uart_port_lock(port); size = stm32_usart_receive_chars(port, false); uart_unlock_and_check_sysrq(port); if (size) @@ -993,7 +993,7 @@ static void stm32_usart_throttle(struct uart_port *port) const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* * Pause DMA transfer, so the RX data gets queued into the FIFO. @@ -1006,7 +1006,7 @@ static void stm32_usart_throttle(struct uart_port *port) stm32_usart_clr_bits(port, ofs->cr3, stm32_port->cr3_irq); stm32_port->throttled = true; - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } /* Unthrottle the remote, the input buffer can now accept data. */ @@ -1016,7 +1016,7 @@ static void stm32_usart_unthrottle(struct uart_port *port) const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; unsigned long flags; - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_set_bits(port, ofs->cr1, stm32_port->cr1_irq); if (stm32_port->cr3_irq) stm32_usart_set_bits(port, ofs->cr3, stm32_port->cr3_irq); @@ -1030,7 +1030,7 @@ static void stm32_usart_unthrottle(struct uart_port *port) if (stm32_port->rx_ch) stm32_usart_rx_dma_start_or_resume(port); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } /* Receive stop */ @@ -1158,7 +1158,7 @@ static void stm32_usart_set_termios(struct uart_port *port, baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 8); - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); ret = readl_relaxed_poll_timeout_atomic(port->membase + ofs->isr, isr, @@ -1349,7 +1349,7 @@ static void stm32_usart_set_termios(struct uart_port *port, writel_relaxed(cr1, port->membase + ofs->cr1); stm32_usart_set_bits(port, ofs->cr1, BIT(cfg->uart_enable_bit)); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); /* Handle modem control interrupts */ if (UART_ENABLE_MS(port, termios->c_cflag)) @@ -1399,9 +1399,9 @@ static void stm32_usart_pm(struct uart_port *port, unsigned int state, pm_runtime_get_sync(port->dev); break; case UART_PM_STATE_OFF: - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); stm32_usart_clr_bits(port, ofs->cr1, BIT(cfg->uart_enable_bit)); - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); pm_runtime_put_sync(port->dev); break; } @@ -1884,9 +1884,9 @@ static void stm32_usart_console_write(struct console *co, const char *s, int locked = 1; if (oops_in_progress) - locked = spin_trylock_irqsave(&port->lock, flags); + locked = uart_port_trylock_irqsave(port, &flags); else - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* Save and disable interrupts, enable the transmitter */ old_cr1 = readl_relaxed(port->membase + ofs->cr1); @@ -1900,7 +1900,7 @@ static void stm32_usart_console_write(struct console *co, const char *s, writel_relaxed(old_cr1, port->membase + ofs->cr1); if (locked) - spin_unlock_irqrestore(&port->lock, flags); + uart_port_unlock_irqrestore(port, flags); } static int stm32_usart_console_setup(struct console *co, char *options) @@ -2035,7 +2035,7 @@ static int __maybe_unused stm32_usart_serial_en_wakeup(struct uart_port *port, * low-power mode. */ if (stm32_port->rx_ch) { - spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* Poll data from DMA RX buffer if any */ if (!stm32_usart_rx_dma_pause(stm32_port)) size += stm32_usart_receive_chars(port, true); -- 2.39.2
next prev parent reply other threads:[~2023-09-14 18:39 UTC|newest] Thread overview: 162+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-09-14 18:37 [PATCH tty v1 00/74] serial: wrappers for uart port lock John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 01/74] serial: core: Provide port lock wrappers John Ogness 2023-09-15 9:25 ` Ilpo Järvinen 2023-09-19 14:24 ` Petr Mladek 2023-09-19 19:16 ` Greg Kroah-Hartman 2023-09-19 19:51 ` Thomas Gleixner 2023-09-20 7:58 ` Petr Mladek 2023-09-14 18:37 ` [PATCH tty v1 02/74] serial: core: Use " John Ogness 2023-09-15 9:26 ` Ilpo Järvinen 2023-09-14 18:37 ` [PATCH tty v1 03/74] serial: 21285: Use port " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 04/74] serial: 8250_aspeed_vuart: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 05/74] serial: 8250_bcm7271: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 06/74] serial: 8250: " John Ogness 2023-09-15 9:24 ` Ilpo Järvinen 2023-09-15 9:35 ` Ilpo Järvinen 2023-09-15 11:21 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 07/74] serial: 8250_dma: " John Ogness 2023-09-15 9:14 ` Ilpo Järvinen 2023-09-14 18:37 ` [PATCH tty v1 08/74] serial: 8250_dw: " John Ogness 2023-09-15 9:16 ` Ilpo Järvinen 2023-09-14 18:37 ` [PATCH tty v1 09/74] serial: 8250_exar: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 10/74] serial: 8250_fsl: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 11/74] serial: 8250_mtk: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-15 4:07 ` Chen-Yu Tsai 2023-09-15 4:07 ` Chen-Yu Tsai 2023-09-14 18:37 ` [PATCH tty v1 12/74] serial: 8250_omap: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 13/74] serial: 8250_pci1xxxx: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 14/74] serial: altera_jtaguart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 15/74] serial: altera_uart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 16/74] serial: amba-pl010: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 17/74] serial: amba-pl011: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 18/74] serial: apb: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 19/74] serial: ar933x: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 20/74] serial: arc_uart: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 21/74] serial: atmel: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 22/74] serial: bcm63xx-uart: " John Ogness 2023-09-14 21:52 ` Florian Fainelli 2023-09-14 18:37 ` [PATCH tty v1 23/74] serial: cpm_uart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 24/74] serial: digicolor: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-18 6:13 ` Baruch Siach 2023-09-18 6:13 ` Baruch Siach 2023-09-14 18:37 ` [PATCH tty v1 25/74] serial: dz: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 26/74] serial: linflexuart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 27/74] serial: fsl_lpuart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 28/74] serial: icom: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 29/74] serial: imx: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-15 20:21 ` Uwe Kleine-König 2023-09-15 20:21 ` Uwe Kleine-König 2023-09-16 19:45 ` John Ogness 2023-09-16 19:45 ` John Ogness 2023-09-17 12:11 ` Uwe Kleine-König 2023-09-17 12:11 ` Uwe Kleine-König 2023-09-14 18:37 ` [PATCH tty v1 30/74] serial: ip22zilog: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 31/74] serial: jsm: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 32/74] serial: liteuart: " John Ogness 2023-09-15 13:40 ` Gabriel L. Somlo 2023-09-14 18:37 ` [PATCH tty v1 33/74] serial: lpc32xx_hs: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 34/74] serial: ma35d1: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 35/74] serial: mcf: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 36/74] serial: men_z135_uart: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 37/74] serial: meson: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-15 6:56 ` Neil Armstrong 2023-09-15 6:56 ` Neil Armstrong 2023-09-15 6:56 ` Neil Armstrong 2023-09-14 18:37 ` [PATCH tty v1 38/74] serial: milbeaut_usio: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 39/74] serial: mpc52xx: " John Ogness 2023-09-14 18:37 ` [PATCH tty v1 40/74] serial: mps2-uart: " John Ogness 2023-09-14 18:37 ` John Ogness 2023-09-14 18:37 ` [PATCH tty v1 41/74] serial: msm: " John Ogness 2023-09-14 19:13 ` Bjorn Andersson 2023-09-14 18:37 ` [PATCH tty v1 42/74] serial: mvebu-uart: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 43/74] serial: omap: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 44/74] serial: owl: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 45/74] serial: pch: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 46/74] serial: pic32: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 47/74] serial: pmac_zilog: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 48/74] serial: pxa: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 49/74] serial: qcom-geni: " John Ogness 2023-09-14 19:16 ` Bjorn Andersson 2023-09-14 18:38 ` [PATCH tty v1 50/74] serial: rda: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 51/74] serial: rp2: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 52/74] serial: sa1100: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 53/74] serial: samsung_tty: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 54/74] serial: sb1250-duart: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 55/74] serial: sc16is7xx: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 56/74] serial: tegra: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 57/74] serial: core: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 58/74] serial: mctrl_gpio: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 59/74] serial: txx9: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 60/74] serial: sh-sci: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 61/74] serial: sifive: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 62/74] serial: sprd: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 63/74] serial: st-asc: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` John Ogness [this message] 2023-09-14 18:38 ` [PATCH tty v1 64/74] serial: stm32: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 65/74] serial: sunhv: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 66/74] serial: sunplus-uart: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 67/74] serial: sunsab: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 68/74] serial: sunsu: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 69/74] serial: sunzilog: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 70/74] serial: timbuart: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 71/74] serial: uartlite: " John Ogness 2023-09-14 18:38 ` [PATCH tty v1 72/74] serial: ucc_uart: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-15 15:06 ` Timur Tabi 2023-09-15 15:06 ` Timur Tabi 2023-09-14 18:38 ` [PATCH tty v1 73/74] serial: vt8500: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 18:38 ` [PATCH tty v1 74/74] serial: xilinx_uartps: " John Ogness 2023-09-14 18:38 ` John Ogness 2023-09-14 19:01 ` [PATCH tty v1 00/74] serial: wrappers for uart port lock Maciej W. Rozycki 2023-09-14 19:01 ` Maciej W. Rozycki 2023-09-14 19:01 ` Maciej W. Rozycki 2023-09-14 19:01 ` Maciej W. Rozycki 2023-09-15 12:04 ` Thomas Gleixner 2023-09-15 12:04 ` Thomas Gleixner 2023-09-15 12:04 ` Thomas Gleixner 2023-09-15 12:04 ` Thomas Gleixner 2023-09-15 17:23 ` Maciej W. Rozycki 2023-09-15 17:23 ` Maciej W. Rozycki 2023-09-15 17:23 ` Maciej W. Rozycki 2023-09-15 17:23 ` Maciej W. Rozycki 2023-09-16 19:24 ` John Ogness 2023-09-16 19:24 ` John Ogness 2023-09-16 19:24 ` John Ogness 2023-09-16 19:24 ` John Ogness 2023-09-15 9:12 ` Ilpo Järvinen 2023-09-15 9:12 ` Ilpo Järvinen 2023-09-15 9:12 ` Ilpo Järvinen 2023-09-15 9:12 ` Ilpo Järvinen 2023-09-16 19:42 ` John Ogness 2023-09-16 19:42 ` John Ogness 2023-09-16 19:42 ` John Ogness 2023-09-16 19:42 ` John Ogness 2023-09-18 8:23 ` John Ogness 2023-09-18 8:23 ` John Ogness 2023-09-18 8:23 ` John Ogness 2023-09-18 8:23 ` John Ogness 2023-09-18 8:26 ` Greg Kroah-Hartman 2023-09-18 8:26 ` Greg Kroah-Hartman 2023-09-18 8:26 ` Greg Kroah-Hartman 2023-09-18 8:26 ` Greg Kroah-Hartman
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=20230914183831.587273-65-john.ogness@linutronix.de \ --to=john.ogness@linutronix.de \ --cc=alexandre.torgue@foss.st.com \ --cc=bigeasy@linutronix.de \ --cc=gregkh@linuxfoundation.org \ --cc=ilpo.jarvinen@linux.intel.com \ --cc=jirislaby@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=linux-stm32@st-md-mailman.stormreply.com \ --cc=lukas@wunner.de \ --cc=marex@denx.de \ --cc=mcoquelin.stm32@gmail.com \ --cc=pmladek@suse.com \ --cc=tglx@linutronix.de \ --cc=valentin.caron@foss.st.com \ /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.