| 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); |