[PATCH v3] ARM: imx: replicate the diagnostic register of boot cpu into secondary cores

Will Deacon will.deacon at arm.com
Fri Apr 26 09:21:30 EDT 2013


Hi Shawn,

Thanks for respinning this without the MMU enabled.

On Fri, Apr 26, 2013 at 04:57:25AM +0100, Shawn Guo wrote:
> The diagnostic register holds the errata bits.  Mostly bootloader
> does not bring up secondary cores, so that when errata bits are set
> in bootloader, they are set only for boot cpu.  But on a SMP
> configuration, it should be equally done on every single core.
> Set up the diagnostic register for secondary cores by replicating
> the register from boot cpu.
> 
> Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> ---
> Changes since v2:
>  * Setting secondary cores' diagnostic register before MMU is enabled.
> 
>  arch/arm/mach-imx/headsmp.S |   12 ++++++++++++
>  arch/arm/mach-imx/platsmp.c |   14 ++++++++++++++
>  2 files changed, 26 insertions(+)
> 
> diff --git a/arch/arm/mach-imx/headsmp.S b/arch/arm/mach-imx/headsmp.S
> index a58c8b0..cd87970 100644
> --- a/arch/arm/mach-imx/headsmp.S
> +++ b/arch/arm/mach-imx/headsmp.S
> @@ -18,8 +18,20 @@
>  	.section ".text.head", "ax"
>  
>  #ifdef CONFIG_SMP
> +diag_reg_offset:
> +	.word	g_diag_reg - .
> +
> +	.macro	set_diag_reg
> +	adr	r0, diag_reg_offset
> +	ldr	r1, [r0]
> +	add	r1, r1, r0		@ r1 = physical &g_diag_reg
> +	ldr	r0, [r1]
> +	mcr	p15, 0, r0, c15, c0, 1	@ write diagnostic register
> +	.endm

Why not re-read the register directly, rather than mrc on the current core?
I feel uneasy about blindly copying one CPU's diagnostic bits into another.
It would also make the code simpler.

Will



More information about the linux-arm-kernel mailing list