diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches-rt/0060-serial-sh-sci-Use-port-lock-wrappers.patch | 302 |
1 files changed, 0 insertions, 302 deletions
diff --git a/debian/patches-rt/0060-serial-sh-sci-Use-port-lock-wrappers.patch b/debian/patches-rt/0060-serial-sh-sci-Use-port-lock-wrappers.patch deleted file mode 100644 index 6d039c6658..0000000000 --- a/debian/patches-rt/0060-serial-sh-sci-Use-port-lock-wrappers.patch +++ /dev/null @@ -1,302 +0,0 @@ -From: Thomas Gleixner <tglx@linutronix.de> -Date: Thu, 14 Sep 2023 20:44:17 +0206 -Subject: [PATCH 060/134] serial: sh-sci: 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-61-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/sh-sci.c | 68 ++++++++++++++++++++++---------------------- - 1 file changed, 34 insertions(+), 34 deletions(-) - ---- a/drivers/tty/serial/sh-sci.c -+++ b/drivers/tty/serial/sh-sci.c -@@ -1205,7 +1205,7 @@ static void sci_dma_tx_complete(void *ar - - dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - uart_xmit_advance(port, s->tx_dma_len); - -@@ -1229,7 +1229,7 @@ static void sci_dma_tx_complete(void *ar - } - } - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - /* Locking: called with port lock held */ -@@ -1320,7 +1320,7 @@ static void sci_dma_rx_complete(void *ar - dev_dbg(port->dev, "%s(%d) active cookie %d\n", __func__, port->line, - s->active_rx); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - active = sci_dma_rx_find_active(s); - if (active >= 0) -@@ -1347,20 +1347,20 @@ static void sci_dma_rx_complete(void *ar - - dma_async_issue_pending(chan); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - dev_dbg(port->dev, "%s: cookie %d #%d, new active cookie %d\n", - __func__, s->cookie_rx[active], active, s->active_rx); - return; - - fail: -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - dev_warn(port->dev, "Failed submitting Rx DMA descriptor\n"); - /* Switch to PIO */ -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - dmaengine_terminate_async(chan); - sci_dma_rx_chan_invalidate(s); - sci_dma_rx_reenable_irq(s); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static void sci_dma_tx_release(struct sci_port *s) -@@ -1409,13 +1409,13 @@ static int sci_dma_rx_submit(struct sci_ - fail: - /* Switch to PIO */ - if (!port_lock_held) -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - if (i) - dmaengine_terminate_async(chan); - sci_dma_rx_chan_invalidate(s); - sci_start_rx(port); - if (!port_lock_held) -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - return -EAGAIN; - } - -@@ -1437,14 +1437,14 @@ static void sci_dma_tx_work_fn(struct wo - * transmit till the end, and then the rest. Take the port lock to get a - * consistent xmit buffer state. - */ -- spin_lock_irq(&port->lock); -+ uart_port_lock_irq(port); - head = xmit->head; - tail = xmit->tail; - buf = s->tx_dma_addr + tail; - s->tx_dma_len = CIRC_CNT_TO_END(head, tail, UART_XMIT_SIZE); - if (!s->tx_dma_len) { - /* Transmit buffer has been flushed */ -- spin_unlock_irq(&port->lock); -+ uart_port_unlock_irq(port); - return; - } - -@@ -1452,7 +1452,7 @@ static void sci_dma_tx_work_fn(struct wo - DMA_MEM_TO_DEV, - DMA_PREP_INTERRUPT | DMA_CTRL_ACK); - if (!desc) { -- spin_unlock_irq(&port->lock); -+ uart_port_unlock_irq(port); - dev_warn(port->dev, "Failed preparing Tx DMA descriptor\n"); - goto switch_to_pio; - } -@@ -1464,12 +1464,12 @@ static void sci_dma_tx_work_fn(struct wo - desc->callback_param = s; - s->cookie_tx = dmaengine_submit(desc); - if (dma_submit_error(s->cookie_tx)) { -- spin_unlock_irq(&port->lock); -+ uart_port_unlock_irq(port); - dev_warn(port->dev, "Failed submitting Tx DMA descriptor\n"); - goto switch_to_pio; - } - -- spin_unlock_irq(&port->lock); -+ uart_port_unlock_irq(port); - dev_dbg(port->dev, "%s: %p: %d...%d, cookie %d\n", - __func__, xmit->buf, tail, head, s->cookie_tx); - -@@ -1477,10 +1477,10 @@ static void sci_dma_tx_work_fn(struct wo - return; - - switch_to_pio: -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - s->chan_tx = NULL; - sci_start_tx(port); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - return; - } - -@@ -1497,17 +1497,17 @@ static enum hrtimer_restart sci_dma_rx_t - - dev_dbg(port->dev, "DMA Rx timed out\n"); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - active = sci_dma_rx_find_active(s); - if (active < 0) { -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - return HRTIMER_NORESTART; - } - - status = dmaengine_tx_status(s->chan_rx, s->active_rx, &state); - if (status == DMA_COMPLETE) { -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - dev_dbg(port->dev, "Cookie %d #%d has already completed\n", - s->active_rx, active); - -@@ -1525,7 +1525,7 @@ static enum hrtimer_restart sci_dma_rx_t - */ - status = dmaengine_tx_status(s->chan_rx, s->active_rx, &state); - if (status == DMA_COMPLETE) { -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - dev_dbg(port->dev, "Transaction complete after DMA engine was stopped"); - return HRTIMER_NORESTART; - } -@@ -1546,7 +1546,7 @@ static enum hrtimer_restart sci_dma_rx_t - - sci_dma_rx_reenable_irq(s); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - return HRTIMER_NORESTART; - } -@@ -1770,9 +1770,9 @@ static irqreturn_t sci_tx_interrupt(int - struct uart_port *port = ptr; - unsigned long flags; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - sci_transmit_chars(port); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - return IRQ_HANDLED; - } -@@ -1786,11 +1786,11 @@ static irqreturn_t sci_tx_end_interrupt( - if (port->type != PORT_SCI) - return sci_tx_interrupt(irq, ptr); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - ctrl = serial_port_in(port, SCSCR); - ctrl &= ~(SCSCR_TE | SCSCR_TEIE); - serial_port_out(port, SCSCR, ctrl); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - return IRQ_HANDLED; - } -@@ -2187,7 +2187,7 @@ static void sci_break_ctl(struct uart_po - return; - } - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - scsptr = serial_port_in(port, SCSPTR); - scscr = serial_port_in(port, SCSCR); - -@@ -2201,7 +2201,7 @@ static void sci_break_ctl(struct uart_po - - serial_port_out(port, SCSPTR, scsptr); - serial_port_out(port, SCSCR, scscr); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static int sci_startup(struct uart_port *port) -@@ -2233,7 +2233,7 @@ static void sci_shutdown(struct uart_por - s->autorts = false; - mctrl_gpio_disable_ms(to_sci_port(port)->gpios); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - sci_stop_rx(port); - sci_stop_tx(port); - /* -@@ -2243,7 +2243,7 @@ static void sci_shutdown(struct uart_por - scr = serial_port_in(port, SCSCR); - serial_port_out(port, SCSCR, scr & - (SCSCR_CKE1 | SCSCR_CKE0 | s->hscif_tot)); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - #ifdef CONFIG_SERIAL_SH_SCI_DMA - if (s->chan_rx_saved) { -@@ -2545,7 +2545,7 @@ static void sci_set_termios(struct uart_ - serial_port_out(port, SCCKS, sccks); - } - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - sci_reset(port); - -@@ -2667,7 +2667,7 @@ static void sci_set_termios(struct uart_ - if ((termios->c_cflag & CREAD) != 0) - sci_start_rx(port); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - sci_port_disable(s); - -@@ -3052,9 +3052,9 @@ static void serial_console_write(struct - if (port->sysrq) - locked = 0; - else 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); - - /* first save SCSCR then disable interrupts, keep clock source */ - ctrl = serial_port_in(port, SCSCR); -@@ -3074,7 +3074,7 @@ static void serial_console_write(struct - serial_port_out(port, SCSCR, ctrl); - - if (locked) -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static int serial_console_setup(struct console *co, char *options) |