aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-07-03 08:30:01 -0500
committerSteven Rostedt <rostedt@rostedt.homelinux.com>2013-09-13 12:32:33 -0400
commitdcb1d2a7a95088f5eff965e874d3b9cde0325b89 (patch)
treea3300074b14754c7c4717eb5e90310d114231eee /drivers
parentf8ecdb4d1dc6cd90a0236eec57ea9f282ea82510 (diff)
serial: 8250: Call flush_to_ldisc when the irq is threaded
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/tty/serial/8250.c2
-rw-r--r--drivers/tty/tty_buffer.c4
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
index f55f2241d2f9..abad3df9539f 100644
--- a/drivers/tty/serial/8250.c
+++ b/drivers/tty/serial/8250.c
@@ -1663,12 +1663,14 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
l = l->next;
+#ifndef CONFIG_PREEMPT_RT_FULL
if (l == i->head && pass_counter++ > PASS_LIMIT) {
/* If we hit this, we're dead. */
printk_ratelimited(KERN_ERR
"serial8250: too much work for irq%d\n", irq);
break;
}
+#endif
} while (l != end);
spin_unlock(&i->lock);
diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
index 4f02f9ce05c5..7c8fe9b570ef 100644
--- a/drivers/tty/tty_buffer.c
+++ b/drivers/tty/tty_buffer.c
@@ -496,10 +496,14 @@ void tty_flip_buffer_push(struct tty_struct *tty)
tty->buf.tail->commit = tty->buf.tail->used;
spin_unlock_irqrestore(&tty->buf.lock, flags);
+#ifndef CONFIG_PREEMPT_RT_FULL
if (tty->low_latency)
flush_to_ldisc(&tty->buf.work);
else
schedule_work(&tty->buf.work);
+#else
+ flush_to_ldisc(&tty->buf.work);
+#endif
}
EXPORT_SYMBOL(tty_flip_buffer_push);