spin_lock instead of spin_lock_irqsave in imx uart interuput
Subsystems (2)
spin_lock instead of spin_lock_irqsave in imx uart interuput
Quoted 1 line
From
6580790d7be51a78d1376b90df49b04019a1f944Mon Sep 17 00:00:00 2001
From: jun qian <[email protected]>
Date: Sun, 26 Aug 2018 06:58:35 -0700
Subject: [PATCH] before the programe into the uart interuput's handler, the
system has already disabled the local cpu interuput. so the spin_lock interface is More suitable for here.
--- drivers/tty/serial/imx.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-)
drivers/tty/serial/imx.c +8 -13
@@ -706,27 +706,25 @@ static irqreturn_t imx_uart_rtsint(int irq, void *dev_id) {struct imx_port *sport = dev_id;u32 usr1; -unsigned long flags; -spin_lock_irqsave (&sport->port.lock, flags); +spin_lock (&sport->port.lock);imx_uart_writel (sport,USR1_RTSD ,USR1 ); usr1 =imx_uart_readl (sport,USR1 ) &USR1_RTSS ;uart_handle_cts_change (&sport->port, !!usr1);wake_up_interruptible (&sport->port.state->port.delta_msr_wait); -spin_unlock_irqrestore (&sport->port.lock, flags); +spin_unlock (&sport->port.lock);return IRQ_HANDLED ; }static irqreturn_t imx_uart_txint (int irq,void *dev_id) {struct imx_port *sport = dev_id; -unsigned long flags; -spin_lock_irqsave (&sport->port.lock, flags); +spin_lock (&sport->port.lock);imx_uart_transmit_buffer (sport); -spin_unlock_irqrestore (&sport->port.lock, flags); +spin_unlock (&sport->port.lock);return IRQ_HANDLED ; }
@@ -735,9 +733,8 @@ static irqreturn_t imx_uart_rxint(int irq, void *dev_id)struct imx_port *sport = dev_id;unsigned int rx, flg, ignored =0 ;struct tty_port *port = &sport->port.state->port; -unsigned long flags; -spin_lock_irqsave (&sport->port.lock, flags); +spin_lock (&sport->port.lock);while (imx_uart_readl (sport,USR2 ) &USR2_RDR ) {u32 usr2;
@@ -797,7 +794,7 @@ static irqreturn_t imx_uart_rxint(int irq, void *dev_id) } out: -spin_unlock_irqrestore (&sport->port.lock, flags); +spin_unlock (&sport->port.lock);tty_flip_buffer_push (port);return IRQ_HANDLED ; }
@@ -903,13 +900,11 @@ static irqreturn_t imx_uart_int(int irq, void *dev_id) }if (usr1 &USR1_DTRD ) { -unsigned long flags; -imx_uart_writel (sport,USR1_DTRD ,USR1 ); -spin_lock_irqsave (&sport->port.lock, flags); +spin_lock (&sport->port.lock);imx_uart_mctrl_check (sport); -spin_unlock_irqrestore (&sport->port.lock, flags); +spin_unlock (&sport->port.lock); ret =IRQ_HANDLED ; }
Signature · 1 line
2.17.1
Greg KH
maintainerQuoted 1 line · QIANJUN
spin_lockinstead ofspin_lock_irqsavein imx uart interuput
What does that mean?
Quoted 6 lines
Quoted 1 line
From
6580790d7be51a78d1376b90df49b04019a1f944Mon Sep 17 00:00:00 2001From: jun qian <[email protected]>
Date: Sun, 26 Aug 2018 06:58:35 -0700
Subject: [PATCH] before the programe into the uart interuput's handler, the
system has already disabled the local cpu interuput. so thespin_lockinterface is More suitable for here.
Why is this here? The changelog text belongs in the changelog, not in the subject line :(
can you fix this all up and resend?
thanks,
greg k-h