diff options
Diffstat (limited to 'debian/patches-rt/0037-serial-meson-Use-port-lock-wrappers.patch')
-rw-r--r-- | debian/patches-rt/0037-serial-meson-Use-port-lock-wrappers.patch | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/debian/patches-rt/0037-serial-meson-Use-port-lock-wrappers.patch b/debian/patches-rt/0037-serial-meson-Use-port-lock-wrappers.patch deleted file mode 100644 index d2efb460bc..0000000000 --- a/debian/patches-rt/0037-serial-meson-Use-port-lock-wrappers.patch +++ /dev/null @@ -1,168 +0,0 @@ -From: Thomas Gleixner <tglx@linutronix.de> -Date: Thu, 14 Sep 2023 20:43:54 +0206 -Subject: [PATCH 037/134] serial: meson: Use port lock wrappers -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patches-6.6.7-rt18.tar.xz - -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> -Acked-by: Neil Armstrong <neil.armstrong@linaro.org> -Signed-off-by: John Ogness <john.ogness@linutronix.de> -Link: https://lore.kernel.org/r/20230914183831.587273-38-john.ogness@linutronix.de -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - drivers/tty/serial/meson_uart.c | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) - ---- a/drivers/tty/serial/meson_uart.c -+++ b/drivers/tty/serial/meson_uart.c -@@ -129,14 +129,14 @@ static void meson_uart_shutdown(struct u - - free_irq(port->irq, port); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - val = readl(port->membase + AML_UART_CONTROL); - val &= ~AML_UART_RX_EN; - val &= ~(AML_UART_RX_INT_EN | AML_UART_TX_INT_EN); - writel(val, port->membase + AML_UART_CONTROL); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static void meson_uart_start_tx(struct uart_port *port) -@@ -238,7 +238,7 @@ static irqreturn_t meson_uart_interrupt( - { - struct uart_port *port = (struct uart_port *)dev_id; - -- spin_lock(&port->lock); -+ uart_port_lock(port); - - if (!(readl(port->membase + AML_UART_STATUS) & AML_UART_RX_EMPTY)) - meson_receive_chars(port); -@@ -248,7 +248,7 @@ static irqreturn_t meson_uart_interrupt( - meson_uart_start_tx(port); - } - -- spin_unlock(&port->lock); -+ uart_port_unlock(port); - - return IRQ_HANDLED; - } -@@ -284,7 +284,7 @@ static int meson_uart_startup(struct uar - u32 val; - int ret = 0; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - val = readl(port->membase + AML_UART_CONTROL); - val |= AML_UART_CLEAR_ERR; -@@ -301,7 +301,7 @@ static int meson_uart_startup(struct uar - 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); -+ uart_port_unlock_irqrestore(port, flags); - - ret = request_irq(port->irq, meson_uart_interrupt, 0, - port->name, port); -@@ -341,7 +341,7 @@ static void meson_uart_set_termios(struc - unsigned long flags; - u32 val; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - cflags = termios->c_cflag; - iflags = termios->c_iflag; -@@ -405,7 +405,7 @@ static void meson_uart_set_termios(struc - AML_UART_FRAME_ERR; - - uart_update_timeout(port, termios->c_cflag, baud); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static int meson_uart_verify_port(struct uart_port *port, -@@ -464,14 +464,14 @@ static int meson_uart_poll_get_char(stru - u32 c; - unsigned long flags; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - if (readl(port->membase + AML_UART_STATUS) & AML_UART_RX_EMPTY) - c = NO_POLL_CHAR; - else - c = readl(port->membase + AML_UART_RFIFO); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - return c; - } -@@ -482,7 +482,7 @@ static void meson_uart_poll_put_char(str - u32 reg; - int ret; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - /* Wait until FIFO is empty or timeout */ - ret = readl_poll_timeout_atomic(port->membase + AML_UART_STATUS, reg, -@@ -506,7 +506,7 @@ static void meson_uart_poll_put_char(str - dev_err(port->dev, "Timeout waiting for UART TX EMPTY\n"); - - out: -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - #endif /* CONFIG_CONSOLE_POLL */ -@@ -563,9 +563,9 @@ static void meson_serial_port_write(stru - if (port->sysrq) { - locked = 0; - } else if (oops_in_progress) { -- locked = spin_trylock(&port->lock); -+ locked = uart_port_trylock(port); - } else { -- spin_lock(&port->lock); -+ uart_port_lock(port); - locked = 1; - } - -@@ -577,7 +577,7 @@ static void meson_serial_port_write(stru - writel(val, port->membase + AML_UART_CONTROL); - - if (locked) -- spin_unlock(&port->lock); -+ uart_port_unlock(port); - local_irq_restore(flags); - } - |