[PATCH v3] ARM: imx: replicate the diagnostic register of boot cpu into secondary cores
Shawn Guo
shawn.guo at linaro.org
Fri Apr 26 09:47:24 EDT 2013
On Fri, Apr 26, 2013 at 02:21:30PM +0100, Will Deacon wrote:
> > 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 do not understand the comment. What do you mean by "re-read"? Read
the register on secondary cores will only return us 0, as bootloader
only sets up the register on cpu0. The macro set_diag_reg only runs on
secondary cores to copy cpu0's diagnostic bits. I think it's safe on
SMP.
Shawn
> I feel uneasy about blindly copying one CPU's diagnostic bits into another.
> It would also make the code simpler.
More information about the linux-arm-kernel
mailing list