serial: bfin_5xx: need to disable DMA TX interrupt too
If we don't disable the DMA TX channel, an inopportune timeout will trigger the interrupt handler and may cause a dead lock with the spin_lock. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b2ced4f69e
commit
7ed43f6af8
@@ -488,6 +488,7 @@ void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart)
|
|||||||
{
|
{
|
||||||
int x_pos, pos;
|
int x_pos, pos;
|
||||||
|
|
||||||
|
dma_disable_irq(uart->tx_dma_channel);
|
||||||
dma_disable_irq(uart->rx_dma_channel);
|
dma_disable_irq(uart->rx_dma_channel);
|
||||||
spin_lock_bh(&uart->port.lock);
|
spin_lock_bh(&uart->port.lock);
|
||||||
|
|
||||||
@@ -521,6 +522,7 @@ void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart)
|
|||||||
}
|
}
|
||||||
|
|
||||||
spin_unlock_bh(&uart->port.lock);
|
spin_unlock_bh(&uart->port.lock);
|
||||||
|
dma_enable_irq(uart->tx_dma_channel);
|
||||||
dma_enable_irq(uart->rx_dma_channel);
|
dma_enable_irq(uart->rx_dma_channel);
|
||||||
|
|
||||||
mod_timer(&(uart->rx_dma_timer), jiffies + DMA_RX_FLUSH_JIFFIES);
|
mod_timer(&(uart->rx_dma_timer), jiffies + DMA_RX_FLUSH_JIFFIES);
|
||||||
|
Reference in New Issue
Block a user