summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-12-14 13:05:54 +0100
committerClark Williams <williams@redhat.com>2012-02-15 10:32:56 -0600
commitf06a157098c9261b29f023e6e6e262433d241705 (patch)
treea2c52a0fa2f0c99d601cf3c5a3f6aefc052f95d1 /drivers
parent00be85162c26a33c2b9fbd52b7d37b844e073d5b (diff)
rt: Improve the serial console PASS_LIMIT
Beyond the warning: drivers/tty/serial/8250.c:1613:6: warning: unused variable ‘pass_counter’ [-Wunused-variable] the solution of just looping infinitely was ugly - up it to 1 million to give it a chance to continue in some really ugly situation. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/tty/serial/8250.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
index 687b1ad0cade..3bf482cb7f51 100644
--- a/drivers/tty/serial/8250.c
+++ b/drivers/tty/serial/8250.c
@@ -81,7 +81,16 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */
#define DEBUG_INTR(fmt...) do { } while (0)
#endif
-#define PASS_LIMIT 512
+/*
+ * On -rt we can have a more delays, and legitimately
+ * so - so don't drop work spuriously and spam the
+ * syslog:
+ */
+#ifdef CONFIG_PREEMPT_RT_FULL
+# define PASS_LIMIT 1000000
+#else
+# define PASS_LIMIT 512
+#endif
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
@@ -1631,14 +1640,12 @@ 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);