Commit 7f36d9de authored by Ingo Molnar's avatar Ingo Molnar Committed by Thomas Gleixner

drivers/serial: call flush_to_ldisc when the irq is threaded

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 29504810
...@@ -482,10 +482,14 @@ void tty_flip_buffer_push(struct tty_struct *tty) ...@@ -482,10 +482,14 @@ void tty_flip_buffer_push(struct tty_struct *tty)
tty->buf.tail->commit = tty->buf.tail->used; tty->buf.tail->commit = tty->buf.tail->used;
spin_unlock_irqrestore(&tty->buf.lock, flags); spin_unlock_irqrestore(&tty->buf.lock, flags);
#ifndef CONFIG_PREEMPT_RT
if (tty->low_latency) if (tty->low_latency)
flush_to_ldisc(&tty->buf.work.work); flush_to_ldisc(&tty->buf.work.work);
else else
schedule_delayed_work(&tty->buf.work, 1); schedule_delayed_work(&tty->buf.work, 1);
#else
flush_to_ldisc(&tty->buf.work.work);
#endif
} }
EXPORT_SYMBOL(tty_flip_buffer_push); EXPORT_SYMBOL(tty_flip_buffer_push);
......
...@@ -1595,7 +1595,12 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) ...@@ -1595,7 +1595,12 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
l = l->next; l = l->next;
if (l == i->head && pass_counter++ > PASS_LIMIT) { /*
* On preempt-rt we can be preempted and run in our
* own thread.
*/
if (!preempt_rt() && l == i->head &&
pass_counter++ > PASS_LIMIT) {
/* If we hit this, we're dead. */ /* If we hit this, we're dead. */
printk(KERN_ERR "serial8250: too much work for " printk(KERN_ERR "serial8250: too much work for "
"irq%d\n", irq); "irq%d\n", irq);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment