Re: [PATCH] SPARC/LEON: Made sysclk and per-cpu ticker use same timer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 05, 2011 at 11:42:39AM +0100, Daniel Hellstrom wrote:
> This patch makes the per-cpu ticker share the timer with the system clock,
> it will save HZ interrupts on the boot CPU and free one timer resource.
> 
> The LEON SMP port requires only one timer from now on.

Looks good as far as I could review it.

I'm reluctant to give it an "Acked-by" / "Reviewed-by"
as I am not confident enough with this code to do so.

One little nit below..

	Sam


> 
> Signed-off-by: Daniel Hellstrom <daniel@xxxxxxxxxxx>
> ---
>  arch/sparc/include/asm/leon.h      |    2 +-
>  arch/sparc/include/asm/leon_amba.h |    3 +-
>  arch/sparc/kernel/entry.S          |    3 +-
>  arch/sparc/kernel/leon_kernel.c    |   45 ++++++++----------------------------
>  arch/sparc/kernel/leon_smp.c       |    9 ++++++-
>  5 files changed, 23 insertions(+), 39 deletions(-)
> 
> diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h
> index 8580d17..b9df4a9 100644
> --- a/arch/sparc/include/asm/leon.h
> +++ b/arch/sparc/include/asm/leon.h
> @@ -240,7 +240,7 @@ static inline int sparc_leon3_cpuid(void)
>  
>  #ifdef CONFIG_SMP
>  # define LEON3_IRQ_RESCHEDULE		13
> -# define LEON3_IRQ_TICKER		(leon_percpu_timer_dev[0].irq)
> +# define LEON3_IRQ_TICKER		(leon3_gptimer_irq + leon3_gptimer_idx)
>  # 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 263c719..db3f408 100644
> --- a/arch/sparc/include/asm/leon_amba.h
> +++ b/arch/sparc/include/asm/leon_amba.h
> @@ -182,11 +182,12 @@ void _amba_init(struct device_node *dp, struct device_node ***nextp);
>  
>  extern struct leon3_irqctrl_regs_map *leon3_irqctrl_regs;
>  extern struct leon3_gptimer_regs_map *leon3_gptimer_regs;
> -extern struct amba_apb_device leon_percpu_timer_dev[16];
>  extern int leondebug_irq_disable;
>  extern int leon_debug_irqout;
>  extern unsigned long leon3_gptimer_irq;
> +extern unsigned long leon3_gptimer_idx; /*Timer Index (0..6) within Timer Core*/
>  extern unsigned int sparc_leon_eirq;
> +extern unsigned long leon3_cpu_idx;
>  
>  #endif /* __ASSEMBLY__ */
>  
> diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
> index 1504df8..d34c180 100644
> --- a/arch/sparc/kernel/entry.S
> +++ b/arch/sparc/kernel/entry.S
> @@ -411,8 +411,9 @@ smpleon_ticker:
>  	WRITE_PAUSE
>  	wr	%g2, PSR_ET, %psr
>  	WRITE_PAUSE
> +	mov	%l7, %o0		! irq level

I am about to rename this argument to pil as this is the content
of the PIL of PSR we pass here.
irq will be an more opauge number.

But all other places in SPARC32 name it irq today.
So I can also rename it here when I get to it.

(Comment about naming also apply for the C code.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux