HSU: Use spin_lock/unlock variant in ISR.
authorFei Yang <fei.yang@intel.com>
Fri, 13 Jan 2012 18:49:00 +0000 (10:49 -0800)
committerbuildbot <buildbot@intel.com>
Thu, 19 Jan 2012 04:24:19 +0000 (20:24 -0800)
BZ: 19018

Kernel is expecting to execute ISRs with interrupt disabled,
using spin_lock/unlock_irq variant in ISR would cause interrupt to
be enabled, thus causing a kernel warning.

Change-Id: I7efe94dc704cdcb3042a3c2524520a8b1d4550d8
Signed-off-by: Fei Yang <fei.yang@intel.com>
Reviewed-on: http://android.intel.com:8080/31925
Reviewed-by: Kuppuswamy, Sathyanarayanan <sathyanarayanan.kuppuswamy@intel.com>
Reviewed-by: Mansoor, Illyas <illyas.mansoor@intel.com>
Reviewed-by: Du, Alek <alek.du@intel.com>
Tested-by: Wang, Zhifeng <zhifeng.wang@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/tty/serial/mfd.c

index 15b03e3..79874df 100644 (file)
@@ -846,11 +846,11 @@ static irqreturn_t port_irq(int irq, void *dev_id)
                return IRQ_NONE;
 
        pm_runtime_get(up->dev);
-       spin_lock_irq(&up->port.lock);
+       spin_lock(&up->port.lock);
        if (up->use_dma) {
                lsr = serial_in_irq(up, UART_LSR);
                check_modem_status(up);
-               spin_unlock_irq(&up->port.lock);
+               spin_unlock(&up->port.lock);
 
                if (unlikely(lsr & (UART_LSR_BI | UART_LSR_PE |
                                        UART_LSR_FE | UART_LSR_OE)))
@@ -864,7 +864,7 @@ static irqreturn_t port_irq(int irq, void *dev_id)
 
        iir = serial_in_irq(up, UART_IIR);
        if (iir & UART_IIR_NO_INT) {
-               spin_unlock_irq(&up->port.lock);
+               spin_unlock(&up->port.lock);
                pm_runtime_put(up->dev);
                return IRQ_NONE;
        }
@@ -878,7 +878,7 @@ static irqreturn_t port_irq(int irq, void *dev_id)
        if (lsr & UART_LSR_THRE)
                transmit_chars(up);
 
-       spin_unlock_irq(&up->port.lock);
+       spin_unlock(&up->port.lock);
        pm_runtime_put(up->dev);
        return IRQ_HANDLED;
 }