50 lines
1.4 KiB
Diff
50 lines
1.4 KiB
Diff
|
From: Ingo Molnar <mingo@elte.hu>
|
||
|
Date: Fri, 3 Jul 2009 08:30:01 -0500
|
||
|
Subject: serial: 8250: Call flush_to_ldisc when the irq is threaded
|
||
|
|
||
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||
|
|
||
|
---
|
||
|
drivers/tty/serial/8250.c | 2 ++
|
||
|
drivers/tty/tty_buffer.c | 4 ++++
|
||
|
2 files changed, 6 insertions(+)
|
||
|
|
||
|
Index: linux-3.2/drivers/tty/serial/8250.c
|
||
|
===================================================================
|
||
|
--- linux-3.2.orig/drivers/tty/serial/8250.c
|
||
|
+++ linux-3.2/drivers/tty/serial/8250.c
|
||
|
@@ -1631,12 +1631,14 @@ static irqreturn_t serial8250_interrupt(
|
||
|
|
||
|
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);
|
||
|
Index: linux-3.2/drivers/tty/tty_buffer.c
|
||
|
===================================================================
|
||
|
--- linux-3.2.orig/drivers/tty/tty_buffer.c
|
||
|
+++ linux-3.2/drivers/tty/tty_buffer.c
|
||
|
@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_str
|
||
|
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);
|
||
|
|