From 099ab412a14620d86d43f68810da2cc767e6a4cf Mon Sep 17 00:00:00 2001 From: Anton Vorontsov Date: Tue, 22 Jul 2008 11:21:07 +0100 Subject: [PATCH] --- yaml --- r: 104702 b: refs/heads/master c: 768aec0b5bccbd460bcf6e9131f19b5a26f3862d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/serial/8250.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 4969c60a2584..0103ea452c99 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 88e882497d154dfb7c341902c079c9daeca1626f +refs/heads/master: 768aec0b5bccbd460bcf6e9131f19b5a26f3862d diff --git a/trunk/drivers/serial/8250.c b/trunk/drivers/serial/8250.c index ce948b66bbd4..27f34a9f9cb7 100644 --- a/trunk/drivers/serial/8250.c +++ b/trunk/drivers/serial/8250.c @@ -1874,7 +1874,9 @@ static int serial8250_startup(struct uart_port *port) * the interrupt is enabled. Delays are necessary to * allow register changes to become visible. */ - spin_lock_irqsave(&up->port.lock, flags); + spin_lock(&up->port.lock); + if (up->port.flags & UPF_SHARE_IRQ) + disable_irq_nosync(up->port.irq); wait_for_xmitr(up, UART_LSR_THRE); serial_out_sync(up, UART_IER, UART_IER_THRI); @@ -1886,7 +1888,9 @@ static int serial8250_startup(struct uart_port *port) iir = serial_in(up, UART_IIR); serial_out(up, UART_IER, 0); - spin_unlock_irqrestore(&up->port.lock, flags); + if (up->port.flags & UPF_SHARE_IRQ) + enable_irq(up->port.irq); + spin_unlock(&up->port.lock); /* * If the interrupt is not reasserted, setup a timer to