diff options
author | Andreas Larsson <andreas@gaisler.com> | 2013-06-10 10:53:28 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-19 13:10:29 +0400 |
commit | 1ffbc51a0d00e52983c70aa7c8dbc7b621d6287d (patch) | |
tree | 3b5e0a1a91a2dfde1b93d2d3295d1170ffe2bae3 /arch/sparc/include | |
parent | 117a0c5fc9c2d06045bd217385b2b39ea426b5a6 (diff) | |
download | linux-1ffbc51a0d00e52983c70aa7c8dbc7b621d6287d.tar.xz |
sparc32, leon: Remove separate "ticker" timer for SMP
This reduces the need from two timers to one timer.
Moreover, without this patch, when the "ticker" timer triggers timer_cs_read via
tick_periodic it reads the value of the usual timer it can get an wrapped timer
value without timer_cs_internal_counter having been updated leading to the clock
going backwards. This effectively hangs one cpu that gets stuck in
update_wall_time with an offset slightly smaller than 0xffffffffffffffff.
Signed-off-by: Andreas Larsson <andreas@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include')
-rw-r--r-- | arch/sparc/include/asm/leon.h | 2 | ||||
-rw-r--r-- | arch/sparc/include/asm/leon_amba.h | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h index 15a716934e4d..b836e9297f2a 100644 --- a/arch/sparc/include/asm/leon.h +++ b/arch/sparc/include/asm/leon.h @@ -135,7 +135,7 @@ static inline int sparc_leon3_cpuid(void) #ifdef CONFIG_SMP # define LEON3_IRQ_IPI_DEFAULT 13 -# define LEON3_IRQ_TICKER (leon3_ticker_irq) +# define LEON3_IRQ_TICKER (leon3_gptimer_irq) # define LEON3_IRQ_CROSS_CALL 15 #endif diff --git a/arch/sparc/include/asm/leon_amba.h b/arch/sparc/include/asm/leon_amba.h index f3034eddf468..24ec48c3ff90 100644 --- a/arch/sparc/include/asm/leon_amba.h +++ b/arch/sparc/include/asm/leon_amba.h @@ -47,6 +47,7 @@ struct amba_prom_registers { #define LEON3_GPTIMER_LD 4 #define LEON3_GPTIMER_IRQEN 8 #define LEON3_GPTIMER_SEPIRQ 8 +#define LEON3_GPTIMER_TIMERS 0x7 #define LEON23_REG_TIMER_CONTROL_EN 0x00000001 /* 1 = enable counting */ /* 0 = hold scalar and counter */ |