55 lines
1.6 KiB
Diff
55 lines
1.6 KiB
Diff
Subject: rt: Improve the serial console PASS_LIMIT
|
||
From: Ingo Molnar <mingo@elte.hu>
|
||
Date: Wed Dec 14 13:05:54 CET 2011
|
||
|
||
Beyond the warning:
|
||
|
||
drivers/tty/serial/8250/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>
|
||
---
|
||
drivers/tty/serial/8250/8250.c | 13 ++++++++++---
|
||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||
|
||
Index: linux-stable/drivers/tty/serial/8250/8250.c
|
||
===================================================================
|
||
--- linux-stable.orig/drivers/tty/serial/8250/8250.c
|
||
+++ linux-stable/drivers/tty/serial/8250/8250.c
|
||
@@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* f
|
||
#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)
|
||
|
||
@@ -1549,14 +1558,12 @@ 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);
|