Skip to content

Commit

Permalink
[ARM] xtime_seqlock: fix more ARM machines for xtime deadlocking
Browse files Browse the repository at this point in the history
move update_process_times() out from under xtime_lock.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Peter Zijlstra authored and Russell King committed Feb 4, 2008
1 parent 2f65baf commit 66a2c07
Show file tree
Hide file tree
Showing 4 changed files with 0 additions and 11 deletions.
2 changes: 0 additions & 2 deletions arch/arm/common/time-acorn.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ void __init ioctime_init(void)
static irqreturn_t
ioc_timer_interrupt(int irq, void *dev_id)
{
write_seqlock(&xtime_lock);
timer_tick();
write_sequnlock(&xtime_lock);
return IRQ_HANDLED;
}

Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-at91/at91sam926x_time.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,13 @@ static irqreturn_t at91sam926x_timer_interrupt(int irq, void *dev_id)
volatile long nr_ticks;

if (at91_sys_read(AT91_PIT_SR) & AT91_PIT_PITS) { /* This is a shared interrupt */
write_seqlock(&xtime_lock);

/* Get number to ticks performed before interrupt and clear PIT interrupt */
nr_ticks = PIT_PICNT(at91_sys_read(AT91_PIT_PIVR));
do {
timer_tick();
nr_ticks--;
} while (nr_ticks);

write_sequnlock(&xtime_lock);
return IRQ_HANDLED;
} else
return IRQ_NONE; /* not handled */
Expand Down
4 changes: 0 additions & 4 deletions arch/arm/plat-iop/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ unsigned long iop_gettimeoffset(void)
static irqreturn_t
iop_timer_interrupt(int irq, void *dev_id)
{
write_seqlock(&xtime_lock);

write_tisr(1);

while ((signed long)(next_jiffy_time - read_tcr1())
Expand All @@ -67,8 +65,6 @@ iop_timer_interrupt(int irq, void *dev_id)
next_jiffy_time -= ticks_per_jiffy;
}

write_sequnlock(&xtime_lock);

return IRQ_HANDLED;
}

Expand Down
2 changes: 0 additions & 2 deletions arch/arm/plat-s3c24xx/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,7 @@ static unsigned long s3c2410_gettimeoffset (void)
static irqreturn_t
s3c2410_timer_interrupt(int irq, void *dev_id)
{
write_seqlock(&xtime_lock);
timer_tick();
write_sequnlock(&xtime_lock);
return IRQ_HANDLED;
}

Expand Down

0 comments on commit 66a2c07

Please sign in to comment.