summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch')
-rw-r--r--debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch365
1 files changed, 0 insertions, 365 deletions
diff --git a/debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch b/debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch
deleted file mode 100644
index 33c270382..000000000
--- a/debian/patches-rt/0057-serial-core-Use-port-lock-wrappers.patch
+++ /dev/null
@@ -1,365 +0,0 @@
-From: Thomas Gleixner <tglx@linutronix.de>
-Date: Thu, 14 Sep 2023 20:44:14 +0206
-Subject: [PATCH 057/134] serial: core: 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>
-Signed-off-by: John Ogness <john.ogness@linutronix.de>
-Link: https://lore.kernel.org/r/20230914183831.587273-58-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/serial_core.c | 92 +++++++++++++++++++--------------------
- drivers/tty/serial/serial_port.c | 4 -
- 2 files changed, 48 insertions(+), 48 deletions(-)
-
---- a/drivers/tty/serial/serial_core.c
-+++ b/drivers/tty/serial/serial_core.c
-@@ -79,7 +79,7 @@
- ({ \
- struct uart_port *__uport = uart_port_ref(state); \
- if (__uport) \
-- spin_lock_irqsave(&__uport->lock, flags); \
-+ uart_port_lock_irqsave(__uport, &flags); \
- __uport; \
- })
-
-@@ -87,7 +87,7 @@
- ({ \
- struct uart_port *__uport = uport; \
- if (__uport) { \
-- spin_unlock_irqrestore(&__uport->lock, flags); \
-+ uart_port_unlock_irqrestore(__uport, flags); \
- uart_port_deref(__uport); \
- } \
- })
-@@ -179,12 +179,12 @@
- unsigned long flags;
- unsigned int old;
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- old = port->mctrl;
- port->mctrl = (old & ~clear) | set;
- if (old != port->mctrl && !(port->rs485.flags & SER_RS485_ENABLED))
- port->ops->set_mctrl(port, port->mctrl);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
- }
-
- #define uart_set_mctrl(port, set) uart_update_mctrl(port, set, 0)
-@@ -219,7 +219,7 @@
- /*
- * Set modem status enables based on termios cflag
- */
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- if (termios->c_cflag & CRTSCTS)
- uport->status |= UPSTAT_CTS_ENABLE;
- else
-@@ -240,7 +240,7 @@
- else
- __uart_start(state);
- }
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- }
-
- /*
-@@ -702,11 +702,11 @@
- if (port->ops->send_xchar)
- port->ops->send_xchar(port, ch);
- else {
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- port->x_char = ch;
- if (ch)
- port->ops->start_tx(port);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
- }
- uart_port_deref(port);
- }
-@@ -1085,9 +1085,9 @@
-
- if (!tty_io_error(tty)) {
- result = uport->mctrl;
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- result |= uport->ops->get_mctrl(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- }
- out:
- mutex_unlock(&port->mutex);
-@@ -1223,16 +1223,16 @@
- uport = uart_port_ref(state);
- if (!uport)
- return -EIO;
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- memcpy(&cprev, &uport->icount, sizeof(struct uart_icount));
- uart_enable_ms(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
-
- add_wait_queue(&port->delta_msr_wait, &wait);
- for (;;) {
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- memcpy(&cnow, &uport->icount, sizeof(struct uart_icount));
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
-
- set_current_state(TASK_INTERRUPTIBLE);
-
-@@ -1277,9 +1277,9 @@
- uport = uart_port_ref(state);
- if (!uport)
- return -EIO;
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- memcpy(&cnow, &uport->icount, sizeof(struct uart_icount));
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- uart_port_deref(uport);
-
- icount->cts = cnow.cts;
-@@ -1432,9 +1432,9 @@
- uart_set_rs485_termination(port, rs485);
- uart_set_rs485_rx_during_tx(port, rs485);
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- ret = port->rs485_config(port, NULL, rs485);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
- if (ret) {
- memset(rs485, 0, sizeof(*rs485));
- /* unset GPIOs */
-@@ -1451,9 +1451,9 @@
- unsigned long flags;
- struct serial_rs485 aux;
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- aux = port->rs485;
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
-
- if (copy_to_user(rs485, &aux, sizeof(aux)))
- return -EFAULT;
-@@ -1481,7 +1481,7 @@
- uart_set_rs485_termination(port, &rs485);
- uart_set_rs485_rx_during_tx(port, &rs485);
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- ret = port->rs485_config(port, &tty->termios, &rs485);
- if (!ret) {
- port->rs485 = rs485;
-@@ -1490,7 +1490,7 @@
- if (!(rs485.flags & SER_RS485_ENABLED))
- port->ops->set_mctrl(port, port->mctrl);
- }
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
- if (ret) {
- /* restore old GPIO settings */
- gpiod_set_value_cansleep(port->rs485_term_gpio,
-@@ -1515,9 +1515,9 @@
- if (!port->iso7816_config)
- return -ENOTTY;
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- aux = port->iso7816;
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
-
- if (copy_to_user(iso7816, &aux, sizeof(aux)))
- return -EFAULT;
-@@ -1546,9 +1546,9 @@
- if (iso7816.reserved[i])
- return -EINVAL;
-
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- ret = port->iso7816_config(port, &iso7816);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
- if (ret)
- return ret;
-
-@@ -1765,9 +1765,9 @@
- if (WARN(!uport, "detached port still initialized!\n"))
- return;
-
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- uport->ops->stop_rx(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
-
- uart_port_shutdown(port);
-
-@@ -1781,10 +1781,10 @@
- /*
- * Free the transmit buffer.
- */
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- buf = state->xmit.buf;
- state->xmit.buf = NULL;
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
-
- free_page((unsigned long)buf);
-
-@@ -1927,10 +1927,10 @@
- */
- if (WARN_ON(!uport))
- return true;
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- uart_enable_ms(uport);
- mctrl = uport->ops->get_mctrl(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- uart_port_deref(uport);
-
- return mctrl & TIOCM_CAR;
-@@ -2047,9 +2047,9 @@
- pm_state = state->pm_state;
- if (pm_state != UART_PM_STATE_ON)
- uart_change_pm(state, UART_PM_STATE_ON);
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- status = uport->ops->get_mctrl(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- if (pm_state != UART_PM_STATE_ON)
- uart_change_pm(state, pm_state);
-
-@@ -2388,9 +2388,9 @@
- */
- if (!console_suspend_enabled && uart_console(uport)) {
- if (uport->ops->start_rx) {
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- uport->ops->stop_rx(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- }
- goto unlock;
- }
-@@ -2405,7 +2405,7 @@
- tty_port_set_suspended(port, true);
- tty_port_set_initialized(port, false);
-
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- ops->stop_tx(uport);
- if (!(uport->rs485.flags & SER_RS485_ENABLED))
- ops->set_mctrl(uport, 0);
-@@ -2413,7 +2413,7 @@
- mctrl = uport->mctrl;
- uport->mctrl = 0;
- ops->stop_rx(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
-
- /*
- * Wait for the transmitter to empty.
-@@ -2485,9 +2485,9 @@
- uart_change_pm(state, UART_PM_STATE_ON);
- uport->ops->set_termios(uport, &termios, NULL);
- if (!console_suspend_enabled && uport->ops->start_rx) {
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- uport->ops->start_rx(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- }
- if (console_suspend_enabled)
- console_start(uport->cons);
-@@ -2498,10 +2498,10 @@
- int ret;
-
- uart_change_pm(state, UART_PM_STATE_ON);
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- if (!(uport->rs485.flags & SER_RS485_ENABLED))
- ops->set_mctrl(uport, 0);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- if (console_suspend_enabled || !uart_console(uport)) {
- /* Protected by port mutex for now */
- struct tty_struct *tty = port->tty;
-@@ -2511,11 +2511,11 @@
- if (tty)
- uart_change_line_settings(tty, state, NULL);
- uart_rs485_config(uport);
-- spin_lock_irq(&uport->lock);
-+ uart_port_lock_irq(uport);
- if (!(uport->rs485.flags & SER_RS485_ENABLED))
- ops->set_mctrl(uport, uport->mctrl);
- ops->start_tx(uport);
-- spin_unlock_irq(&uport->lock);
-+ uart_port_unlock_irq(uport);
- tty_port_set_initialized(port, true);
- } else {
- /*
-@@ -2618,11 +2618,11 @@
- * keep the DTR setting that is set in uart_set_options()
- * We probably don't need a spinlock around this, but
- */
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- port->mctrl &= TIOCM_DTR;
- if (!(port->rs485.flags & SER_RS485_ENABLED))
- port->ops->set_mctrl(port, port->mctrl);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
-
- uart_rs485_config(port);
-
---- a/drivers/tty/serial/serial_port.c
-+++ b/drivers/tty/serial/serial_port.c
-@@ -35,10 +35,10 @@
- goto out;
-
- /* Flush any pending TX for the port */
-- spin_lock_irqsave(&port->lock, flags);
-+ uart_port_lock_irqsave(port, &flags);
- if (__serial_port_busy(port))
- port->ops->start_tx(port);
-- spin_unlock_irqrestore(&port->lock, flags);
-+ uart_port_unlock_irqrestore(port, flags);
-
- out:
- pm_runtime_mark_last_busy(dev);