mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 06:04:23 +08:00
[ARM] xtime_seqlock: fix more ARM machines for xtime deadlocking
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>
This commit is contained in:
parent
2f65baff3a
commit
66a2c077c3
@ -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;
|
||||
}
|
||||
|
||||
|
@ -49,8 +49,6 @@ 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 {
|
||||
@ -58,7 +56,6 @@ static irqreturn_t at91sam926x_timer_interrupt(int irq, void *dev_id)
|
||||
nr_ticks--;
|
||||
} while (nr_ticks);
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
return IRQ_HANDLED;
|
||||
} else
|
||||
return IRQ_NONE; /* not handled */
|
||||
|
@ -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())
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user