diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches-rt/0047-serial-pmac_zilog-Use-port-lock-wrappers.patch | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/debian/patches-rt/0047-serial-pmac_zilog-Use-port-lock-wrappers.patch b/debian/patches-rt/0047-serial-pmac_zilog-Use-port-lock-wrappers.patch deleted file mode 100644 index e4a81157e1..0000000000 --- a/debian/patches-rt/0047-serial-pmac_zilog-Use-port-lock-wrappers.patch +++ /dev/null @@ -1,232 +0,0 @@ -From: Thomas Gleixner <tglx@linutronix.de> -Date: Thu, 14 Sep 2023 20:44:04 +0206 -Subject: [PATCH 047/134] serial: pmac_zilog: 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-48-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/pmac_zilog.c | 52 ++++++++++++++++++++-------------------- - 1 file changed, 26 insertions(+), 26 deletions(-) - ---- a/drivers/tty/serial/pmac_zilog.c -+++ b/drivers/tty/serial/pmac_zilog.c -@@ -246,9 +246,9 @@ static bool pmz_receive_chars(struct uar - #endif /* USE_CTRL_O_SYSRQ */ - if (uap->port.sysrq) { - int swallow; -- spin_unlock(&uap->port.lock); -+ uart_port_unlock(&uap->port); - swallow = uart_handle_sysrq_char(&uap->port, ch); -- spin_lock(&uap->port.lock); -+ uart_port_lock(&uap->port); - if (swallow) - goto next_char; - } -@@ -435,7 +435,7 @@ static irqreturn_t pmz_interrupt(int irq - uap_a = pmz_get_port_A(uap); - uap_b = uap_a->mate; - -- spin_lock(&uap_a->port.lock); -+ uart_port_lock(&uap_a->port); - r3 = read_zsreg(uap_a, R3); - - /* Channel A */ -@@ -456,14 +456,14 @@ static irqreturn_t pmz_interrupt(int irq - rc = IRQ_HANDLED; - } - skip_a: -- spin_unlock(&uap_a->port.lock); -+ uart_port_unlock(&uap_a->port); - if (push) - tty_flip_buffer_push(&uap->port.state->port); - - if (!uap_b) - goto out; - -- spin_lock(&uap_b->port.lock); -+ uart_port_lock(&uap_b->port); - push = false; - if (r3 & (CHBEXT | CHBTxIP | CHBRxIP)) { - if (!ZS_IS_OPEN(uap_b)) { -@@ -481,7 +481,7 @@ static irqreturn_t pmz_interrupt(int irq - rc = IRQ_HANDLED; - } - skip_b: -- spin_unlock(&uap_b->port.lock); -+ uart_port_unlock(&uap_b->port); - if (push) - tty_flip_buffer_push(&uap->port.state->port); - -@@ -497,9 +497,9 @@ static inline u8 pmz_peek_status(struct - unsigned long flags; - u8 status; - -- spin_lock_irqsave(&uap->port.lock, flags); -+ uart_port_lock_irqsave(&uap->port, &flags); - status = read_zsreg(uap, R0); -- spin_unlock_irqrestore(&uap->port.lock, flags); -+ uart_port_unlock_irqrestore(&uap->port, flags); - - return status; - } -@@ -685,7 +685,7 @@ static void pmz_break_ctl(struct uart_po - else - clear_bits |= SND_BRK; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - new_reg = (uap->curregs[R5] | set_bits) & ~clear_bits; - if (new_reg != uap->curregs[R5]) { -@@ -693,7 +693,7 @@ static void pmz_break_ctl(struct uart_po - write_zsreg(uap, R5, uap->curregs[R5]); - } - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - #ifdef CONFIG_PPC_PMAC -@@ -865,18 +865,18 @@ static void pmz_irda_reset(struct uart_p - { - unsigned long flags; - -- spin_lock_irqsave(&uap->port.lock, flags); -+ uart_port_lock_irqsave(&uap->port, &flags); - uap->curregs[R5] |= DTR; - write_zsreg(uap, R5, uap->curregs[R5]); - zssync(uap); -- spin_unlock_irqrestore(&uap->port.lock, flags); -+ uart_port_unlock_irqrestore(&uap->port, flags); - msleep(110); - -- spin_lock_irqsave(&uap->port.lock, flags); -+ uart_port_lock_irqsave(&uap->port, &flags); - uap->curregs[R5] &= ~DTR; - write_zsreg(uap, R5, uap->curregs[R5]); - zssync(uap); -- spin_unlock_irqrestore(&uap->port.lock, flags); -+ uart_port_unlock_irqrestore(&uap->port, flags); - msleep(10); - } - -@@ -896,9 +896,9 @@ static int pmz_startup(struct uart_port - * initialize the chip - */ - if (!ZS_IS_CONS(uap)) { -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - pwr_delay = __pmz_startup(uap); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - sprintf(uap->irq_name, PMACZILOG_NAME"%d", uap->port.line); - if (request_irq(uap->port.irq, pmz_interrupt, IRQF_SHARED, -@@ -921,9 +921,9 @@ static int pmz_startup(struct uart_port - pmz_irda_reset(uap); - - /* Enable interrupt requests for the channel */ -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - pmz_interrupt_control(uap, 1); -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - return 0; - } -@@ -933,7 +933,7 @@ static void pmz_shutdown(struct uart_por - struct uart_pmac_port *uap = to_pmz(port); - unsigned long flags; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - /* Disable interrupt requests for the channel */ - pmz_interrupt_control(uap, 0); -@@ -948,19 +948,19 @@ static void pmz_shutdown(struct uart_por - pmz_maybe_update_regs(uap); - } - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - - /* Release interrupt handler */ - free_irq(uap->port.irq, uap); - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - uap->flags &= ~PMACZILOG_FLAG_IS_OPEN; - - if (!ZS_IS_CONS(uap)) - pmz_set_scc_power(uap, 0); /* Shut the chip down */ - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - /* Shared by TTY driver and serial console setup. The port lock is held -@@ -1247,7 +1247,7 @@ static void pmz_set_termios(struct uart_ - struct uart_pmac_port *uap = to_pmz(port); - unsigned long flags; - -- spin_lock_irqsave(&port->lock, flags); -+ uart_port_lock_irqsave(port, &flags); - - /* Disable IRQs on the port */ - pmz_interrupt_control(uap, 0); -@@ -1259,7 +1259,7 @@ static void pmz_set_termios(struct uart_ - if (ZS_IS_OPEN(uap)) - pmz_interrupt_control(uap, 1); - -- spin_unlock_irqrestore(&port->lock, flags); -+ uart_port_unlock_irqrestore(port, flags); - } - - static const char *pmz_type(struct uart_port *port) -@@ -1896,7 +1896,7 @@ static void pmz_console_write(struct con - struct uart_pmac_port *uap = &pmz_ports[con->index]; - unsigned long flags; - -- spin_lock_irqsave(&uap->port.lock, flags); -+ uart_port_lock_irqsave(&uap->port, &flags); - - /* Turn of interrupts and enable the transmitter. */ - write_zsreg(uap, R1, uap->curregs[1] & ~TxINT_ENAB); -@@ -1908,7 +1908,7 @@ static void pmz_console_write(struct con - write_zsreg(uap, R1, uap->curregs[1]); - /* Don't disable the transmitter. */ - -- spin_unlock_irqrestore(&uap->port.lock, flags); -+ uart_port_unlock_irqrestore(&uap->port, flags); - } - - /* |