[PATCH 03/10] ARM: smp_twd: Divorce smp_twd from local timer API

Tony Lindgren tony at atomide.com
Mon Mar 11 18:50:04 EDT 2013


* Stephen Boyd <sboyd at codeaurora.org> [130311 15:22]:
> On 03/11/13 10:28, Tony Lindgren wrote:
> > * Stephen Boyd <sboyd at codeaurora.org> [130308 17:10]:
> >> On 03/08/13 12:29, Tony Lindgren wrote:
> >>> Applying that does not seem to help, but you might want to get vexpress
> >>> running anyways for some multiplatform sanity checks.
> >>>
> >>> I just built and installed qemu-linaro from their git, then ran the
> >>> command above. Looks like stock qemu does not work for vexpress for some
> >>> reason. You can probably use a dummy initrd and rootfs to debug this
> >>> though :)
> >> So my patchset didn't break qemu?
> > Sorry if that was unclear: Yes your patchset breaks booting vexpress
> > in qemu.
> >
> >
> 
> Ok. qemu works for me before applying my patches. I've added this into
> the series before this patch to fix the boot issue.

OK thanks:

Acked-by: Tony Lindgren <tony at atomide.com>

 
> -----8<-----
> 
> Subject: [PATCH] ARM: vexpress: Move smp_twd setup to time_late_init hook
> 
> On devices without a clock describing the rate of the twd we
> detect the rate at runtime via twd_calibrate_rate(). Currently
> this happens when smp_prepare_cpus() calls the localtimer start
> callback, after the sp804 timer has been registered and when
> jiffies have started incrementing.
> 
> In the next patch we're going to make twd_local_timer_register()
> register the twd clockevent on the boot CPU. In the case of
> vexpress, this will hang the system at boot because jiffies
> haven't started incrementing when twd_calibrate_rate() is called.
> Register the smp_twd during time_late_init() on vexpress to avoid
> this problem.
> 
> Based on a patch by Marc Zyngier <marc.zyngier at arm.com>.
> 
> Reported-by: Tony Lindgren <tony at atomide.com>
> Cc: Pawel Moll <pawel.moll at arm.com>
> Signed-off-by: Stephen Boyd <sboyd at codeaurora.org>
> ---
>  arch/arm/mach-vexpress/ct-ca9x4.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c b/arch/arm/mach-vexpress/ct-ca9x4.c
> index 6f34497..a9f39bf 100644
> --- a/arch/arm/mach-vexpress/ct-ca9x4.c
> +++ b/arch/arm/mach-vexpress/ct-ca9x4.c
> @@ -62,7 +62,7 @@ static void __init ct_ca9x4_init_irq(void)
>  {
>  	gic_init(0, 29, ioremap(A9_MPCORE_GIC_DIST, SZ_4K),
>  		 ioremap(A9_MPCORE_GIC_CPU, SZ_256));
> -	ca9x4_twd_init();
> +	late_time_init = ca9x4_twd_init;
>  }
>  
>  static int ct_ca9x4_clcd_setup(struct clcd_fb *fb)
> 
> -- 
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
> 



More information about the linux-arm-kernel mailing list