Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1273463

[PATH RESEND v2 07/10] tty: xuartps: Acquire port lock for shutdown

From Soren Brinkmann <soren.brinkmann@xilinx.com>
Newsgroups linux.kernel
Subject [PATH RESEND v2 07/10] tty: xuartps: Acquire port lock for shutdown
Date 2015-11-19 21:20 +0100
Message-ID <qwDQv-5IW-41@gated-at.bofh.it> (permalink)
References <qwDGO-5Ex-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Shutting down the UART port can happen while console operations are in
progress. Holding the port lock serializes these operations and avoids
the UART HW to be disabled in the middle of console prints.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
---
 drivers/tty/serial/xilinx_uartps.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
index 5efd1b9d220f..7fd226d65496 100644
--- a/drivers/tty/serial/xilinx_uartps.c
+++ b/drivers/tty/serial/xilinx_uartps.c
@@ -823,6 +823,9 @@ static int cdns_uart_startup(struct uart_port *port)
 static void cdns_uart_shutdown(struct uart_port *port)
 {
 	int status;
+	unsigned long flags;
+
+	spin_lock_irqsave(&port->lock, flags);
 
 	/* Disable interrupts */
 	status = readl(port->membase + CDNS_UART_IMR_OFFSET);
@@ -832,6 +835,9 @@ static void cdns_uart_shutdown(struct uart_port *port)
 	/* Disable the TX and RX */
 	writel(CDNS_UART_CR_TX_DIS | CDNS_UART_CR_RX_DIS,
 			port->membase + CDNS_UART_CR_OFFSET);
+
+	spin_unlock_irqrestore(&port->lock, flags);
+
 	free_irq(port->irq, port);
 }
 
-- 
2.6.3.3.g9bb996a

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATH RESEND v2 00/10] tty: xuartps: Fix lock ups Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in start_tx Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
    Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Peter Hurley <peter@hurleysoftware.com> - 2015-11-20 13:20 +0100
      Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter  in start_tx Sören Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-20 16:30 +0100
        Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Peter Hurley <peter@hurleysoftware.com> - 2015-11-20 17:40 +0100
          Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter  in start_tx Sören Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-20 18:00 +0100
            Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Peter Hurley <peter@hurleysoftware.com> - 2015-11-20 18:20 +0100
              Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter  in start_tx Sören Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-20 18:30 +0100
              Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Michal Simek <michal.simek@xilinx.com> - 2015-11-23 08:10 +0100
                Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Peter Hurley <peter@hurleysoftware.com> - 2015-11-23 21:10 +0100
                Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Michal Simek <michal.simek@xilinx.com> - 2015-11-24 08:50 +0100
      Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter  in start_tx Sören Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-20 18:10 +0100
        Re: [PATH RESEND v2 03/10] tty: xuartps: Always enable transmitter in  start_tx Peter Hurley <peter@hurleysoftware.com> - 2015-11-20 18:20 +0100
  [PATH RESEND v2 05/10] tty: xuartps: Improve startup function Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 08/10] tty: xuartps: Move RX path into helper function Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 06/10] tty: xuartps: Keep lock for whole ISR Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 09/10] tty: xuartps: Only handle RX IRQs when RX is enabled Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 10/10] tty: xuartps: Cleanup: Reformat if-else Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 07/10] tty: xuartps: Acquire port lock for shutdown Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 01/10] tty: xuartps: Beautify read-modify writes Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100
  [PATH RESEND v2 02/10] tty: xuartps: Use spinlock to serialize HW access Soren Brinkmann <soren.brinkmann@xilinx.com> - 2015-11-19 21:20 +0100

csiph-web