Mark Brown 41609ff430 [ARM] 5449/1: S3C: Use disable_irq_nosync() to fix boot lockups
With 2.6.30-rc1 on SMDK6410 I experience a soft lockup on bootup when
the Samsung serial driver attempts to disable the transmit interrupt
from within the transmit interrupt handler: it calls disable_irq()
which locks up due to attempting to synchronise with the running handler.
Fix this by using disable_irq_nosync().

Also make the same change in the recieve path.

Backtrace:

[<c002a914>] (__irq_svc+0x34/0x80) from [<c00696c0>] (synchr)
[<c00696c0>] (synchronize_irq+0xc/0xcc) from [<c018d434>] (s)
[<c018d434>] (s3c24xx_serial_stop_tx+0x1c/0x3c) from [<c018d)
[<c018d54c>] (s3c24xx_serial_tx_chars+0xf8/0x104) from [<c00)
[<c0068bcc>] (handle_IRQ_event+0x74/0x118) from [<c006ab04>])
[<c006ab04>] (handle_level_irq+0x100/0x118) from [<c00349c4>)
[<c00349c4>] (s3c_irq_demux_uart+0x94/0xc4) from [<c002a050>)
[<c002a050>] (_text+0x50/0x6c) from [<c002a914>] (__irq_svc+)

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-04-15 10:01:02 +01:00
..
2009-04-07 08:44:06 -07:00
2008-10-20 08:52:36 -07:00
2008-02-08 09:22:25 -08:00
2008-02-08 09:22:25 -08:00
2009-04-06 14:36:43 -07:00
2009-04-06 14:36:26 -07:00
2009-04-07 08:44:05 -07:00
2009-04-06 14:36:37 -07:00
2008-02-03 14:47:38 +02:00
2008-04-30 08:29:47 -07:00
2008-10-16 16:52:06 +02:00
2009-04-07 08:44:05 -07:00
2009-04-08 14:33:38 -07:00
2006-12-08 08:28:57 -08:00
2008-10-20 08:50:24 -07:00
2008-10-20 08:52:36 -07:00
2009-04-06 14:36:32 -07:00
2007-07-18 08:38:22 -07:00