| From 6d60c75c339e44f48c2e88d4aa3d8c1aafdb24be Mon Sep 17 00:00:00 2001 |
| From: Ingo Molnar <mingo@elte.hu> |
| Date: Fri, 3 Jul 2009 08:30:01 -0500 |
| Subject: [PATCH] drivers/serial: Clean up the locking for -rt |
| |
| commit 295048108ae1c03ede2297c08133526c5a1b6b3b in tip. |
| |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| |
| diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c |
| index e9b15c3..e348e3c 100644 |
| --- a/drivers/serial/8250.c |
| +++ b/drivers/serial/8250.c |
| @@ -2735,14 +2735,10 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) |
| |
| touch_nmi_watchdog(); |
| |
| - local_irq_save(flags); |
| - if (up->port.sysrq) { |
| - /* serial8250_handle_port() already took the lock */ |
| - locked = 0; |
| - } else if (oops_in_progress) { |
| - locked = spin_trylock(&up->port.lock); |
| - } else |
| - spin_lock(&up->port.lock); |
| + if (up->port.sysrq || oops_in_progress) |
| + locked = spin_trylock_irqsave(&up->port.lock, flags); |
| + else |
| + spin_lock_irqsave(&up->port.lock, flags); |
| |
| /* |
| * First save the IER then disable the interrupts |
| @@ -2774,8 +2770,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) |
| check_modem_status(up); |
| |
| if (locked) |
| - spin_unlock(&up->port.lock); |
| - local_irq_restore(flags); |
| + spin_unlock_irqrestore(&up->port.lock, flags); |
| } |
| |
| static int __init serial8250_console_setup(struct console *co, char *options) |
| -- |
| 1.7.1.1 |
| |