aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-sa1100/time.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2008-01-28 05:16:37 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-01-28 05:17:12 -0500
commit193c3cc12583344be01206078d9ad3fec5dbc397 (patch)
tree97eb5d6ec88969d21fbf0c5815e3b77e8e1f4aaf /arch/arm/mach-sa1100/time.c
parent6232be32afa121628c72291ce7eaa24a639905c2 (diff)
[ARM] Fix timer damage from d3d74453c34f8fd87674a8cf5b8a327c68f22e99
Move the xtime write mode seqlock into timer_tick(), so it only surrounds the call to do_timer(). This avoids a deadlock in update_process_times() ... hrtimer_get_softirq_time() which tries to get a read mode seqlock on xtime, thereby preventing booting. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-sa1100/time.c')
-rw-r--r--arch/arm/mach-sa1100/time.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index fdf7b016e7ad..47f8640438e6 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -62,8 +62,6 @@ sa1100_timer_interrupt(int irq, void *dev_id)
62{ 62{
63 unsigned int next_match; 63 unsigned int next_match;
64 64
65 write_seqlock(&xtime_lock);
66
67#ifdef CONFIG_NO_IDLE_HZ 65#ifdef CONFIG_NO_IDLE_HZ
68 if (match_posponed) { 66 if (match_posponed) {
69 match_posponed = 0; 67 match_posponed = 0;
@@ -85,8 +83,6 @@ sa1100_timer_interrupt(int irq, void *dev_id)
85 next_match = (OSMR0 += LATCH); 83 next_match = (OSMR0 += LATCH);
86 } while ((signed long)(next_match - OSCR) <= 0); 84 } while ((signed long)(next_match - OSCR) <= 0);
87 85
88 write_sequnlock(&xtime_lock);
89
90 return IRQ_HANDLED; 86 return IRQ_HANDLED;
91} 87}
92 88