diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 13:45:23 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 13:45:23 -0400 |
| commit | 02b2318e07f98a7cdf7089a4457a8d62424aa824 (patch) | |
| tree | b40353a9ee6b034e21192ceb5df445fbc5fbdd32 /drivers/serial/sunzilog.c | |
| parent | b91cba52e9b7b3f1c0037908a192d93a869ca9e5 (diff) | |
| parent | d54bc2793ec3405c6b8f217568a82b87bd8a591b (diff) | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (26 commits)
[SPARC64]: Fix UP build.
[SPARC64]: dr-cpu unconfigure support.
[SERIAL]: Fix console write locking in sparc drivers.
[SPARC64]: Give more accurate errors in dr_cpu_configure().
[SPARC64]: Clear cpu_{core,sibling}_map[] in smp_fill_in_sib_core_maps()
[SPARC64]: Fix leak when DR added cpu does not bootup.
[SPARC64]: Add ->set_affinity IRQ handlers.
[SPARC64]: Process dr-cpu events in a kthread instead of workqueue.
[SPARC64]: More sensible udelay implementation.
[SPARC64]: SMP build fixes.
[SPARC64]: mdesc.c needs linux/mm.h
[SPARC64]: Fix build regressions added by dr-cpu changes.
[SPARC64]: Unconditionally register vio_bus_type.
[SPARC64]: Initial LDOM cpu hotplug support.
[SPARC64]: Fix setting of variables in LDOM guest.
[SPARC64]: Fix MD property lifetime bugs.
[SPARC64]: Abstract out mdesc accesses for better MD update handling.
[SPARC64]: Use more mearningful names for IRQ registry.
[SPARC64]: Initial domain-services driver.
[SPARC64]: Export powerd facilities for external entities.
...
Diffstat (limited to 'drivers/serial/sunzilog.c')
| -rw-r--r-- | drivers/serial/sunzilog.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index 15b6e1cb040b..0a3e10a4a35d 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * C. Dost, Pete Zaitcev, Ted Ts'o and Alex Buell for their | 9 | * C. Dost, Pete Zaitcev, Ted Ts'o and Alex Buell for their |
| 10 | * work there. | 10 | * work there. |
| 11 | * | 11 | * |
| 12 | * Copyright (C) 2002, 2006 David S. Miller (davem@davemloft.net) | 12 | * Copyright (C) 2002, 2006, 2007 David S. Miller (davem@davemloft.net) |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| @@ -1151,11 +1151,22 @@ sunzilog_console_write(struct console *con, const char *s, unsigned int count) | |||
| 1151 | { | 1151 | { |
| 1152 | struct uart_sunzilog_port *up = &sunzilog_port_table[con->index]; | 1152 | struct uart_sunzilog_port *up = &sunzilog_port_table[con->index]; |
| 1153 | unsigned long flags; | 1153 | unsigned long flags; |
| 1154 | int locked = 1; | ||
| 1155 | |||
| 1156 | local_irq_save(flags); | ||
| 1157 | if (up->port.sysrq) { | ||
| 1158 | locked = 0; | ||
| 1159 | } else if (oops_in_progress) { | ||
| 1160 | locked = spin_trylock(&up->port.lock); | ||
| 1161 | } else | ||
| 1162 | spin_lock(&up->port.lock); | ||
| 1154 | 1163 | ||
| 1155 | spin_lock_irqsave(&up->port.lock, flags); | ||
| 1156 | uart_console_write(&up->port, s, count, sunzilog_putchar); | 1164 | uart_console_write(&up->port, s, count, sunzilog_putchar); |
| 1157 | udelay(2); | 1165 | udelay(2); |
| 1158 | spin_unlock_irqrestore(&up->port.lock, flags); | 1166 | |
| 1167 | if (locked) | ||
| 1168 | spin_unlock(&up->port.lock); | ||
| 1169 | local_irq_restore(flags); | ||
| 1159 | } | 1170 | } |
| 1160 | 1171 | ||
| 1161 | static int __init sunzilog_console_setup(struct console *con, char *options) | 1172 | static int __init sunzilog_console_setup(struct console *con, char *options) |
