diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-01-28 10:16:37 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-01-28 10:17:12 +0000 |
commit | 193c3cc12583344be01206078d9ad3fec5dbc397 (patch) | |
tree | 97eb5d6ec88969d21fbf0c5815e3b77e8e1f4aaf /arch/arm/mach-h720x | |
parent | 6232be32afa121628c72291ce7eaa24a639905c2 (diff) | |
download | lwn-193c3cc12583344be01206078d9ad3fec5dbc397.tar.gz lwn-193c3cc12583344be01206078d9ad3fec5dbc397.zip |
[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-h720x')
-rw-r--r-- | arch/arm/mach-h720x/cpu-h7201.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-h720x/cpu-h7202.c | 2 |
2 files changed, 0 insertions, 6 deletions
diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c index 9107b8e2ad6e..c2a431f482f0 100644 --- a/arch/arm/mach-h720x/cpu-h7201.c +++ b/arch/arm/mach-h720x/cpu-h7201.c @@ -29,13 +29,9 @@ static irqreturn_t h7201_timer_interrupt(int irq, void *dev_id) { - write_seqlock(&xtime_lock); - CPU_REG (TIMER_VIRT, TIMER_TOPSTAT); timer_tick(); - write_sequnlock(&xtime_lock); - return IRQ_HANDLED; } diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c index 0a1a25fb8ba8..c627fa124eb3 100644 --- a/arch/arm/mach-h720x/cpu-h7202.c +++ b/arch/arm/mach-h720x/cpu-h7202.c @@ -113,9 +113,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irq_desc *desc) mask = CPU_REG (TIMER_VIRT, TIMER_TOPSTAT); if ( mask & TSTAT_T0INT ) { - write_seqlock(&xtime_lock); timer_tick(); - write_sequnlock(&xtime_lock); if( mask == TSTAT_T0INT ) return; } |