[ARM] xtime_seqlock: fix more ARM machines for xtime deadlocking
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Fri, 1 Feb 2008 21:27:02 +0000 (21:27 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 4 Feb 2008 13:14:07 +0000 (13:14 +0000)
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>
arch/arm/common/time-acorn.c
arch/arm/mach-at91/at91sam926x_time.c
arch/arm/plat-iop/time.c
arch/arm/plat-s3c24xx/time.c

index 34038eccbba9e478b3bfb75ec283e289fee63cb2..d544da4147310954c6013e37863e786ece6ff312 100644 (file)
@@ -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;
 }
 
index 5c090c9442f5ee1ba43f6783a417a7ee0c194190..e38d237709928d2e17fc5f2fb693d96e05bdc050 100644 (file)
@@ -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 */
index ba3d21d8fba34c4c458a2d80b660e258ca06a2b3..6fe481ff4fdfe5230093846292a3725c98fb57e5 100644 (file)
@@ -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;
 }
 
index 2ec1daaa0e537a6aed01f4aa62f5d7551ad3e8b8..766473b3f98b6bf2d8b4ae61af4254949d9431fb 100644 (file)
@@ -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;
 }