[PATCH] powerpc/rtas: fix early boot failure.
Christophe Leroy
christophe.leroy at c-s.fr
Mon Apr 1 22:14:13 AEDT 2019
Michael,
Looks like you missed this fix for rc3.
Christophe
Le 25/03/2019 à 09:43, Christophe Leroy a écrit :
> Commit 0df977eafc79 ("powerpc/6xx: Don't use SPRN_SPRG2 for storing
> stack pointer while in RTAS") changes the code to use a field in
> thread struct to store the stack pointer while in RTAS instead of
> using SPRN_SPRG2. It therefore converts all places which were
> manipulating SPRN_SPRG2 to use that field. During early startup,
> the zeroing of SPRN_SPRG2 has been replaced by a zeroing of that
> field in thread struct. But at least in start_here, that's done
> wrongly because it used the physical address of the fields while
> MMU is on at that time.
>
> So the virtual address of the field should be used instead, but in
> the meantime, thread struct has already been zeroised and initialised
> so we can just drop this initialisation.
>
> Reported-by: Larry Finger <Larry.Finger at lwfinger.net>
> Fixes: 0df977eafc79 ("powerpc/6xx: Don't use SPRN_SPRG2 for storing stack pointer while in RTAS")
> Signed-off-by: Christophe Leroy <christophe.leroy at c-s.fr>
> ---
> arch/powerpc/kernel/head_32.S | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
> index 48051c8977c5..e25b615e9f9e 100644
> --- a/arch/powerpc/kernel/head_32.S
> +++ b/arch/powerpc/kernel/head_32.S
> @@ -851,10 +851,6 @@ __secondary_start:
> tophys(r4,r2)
> addi r4,r4,THREAD /* phys address of our thread_struct */
> mtspr SPRN_SPRG_THREAD,r4
> -#ifdef CONFIG_PPC_RTAS
> - li r3,0
> - stw r3, RTAS_SP(r4) /* 0 => not in RTAS */
> -#endif
> lis r4, (swapper_pg_dir - PAGE_OFFSET)@h
> ori r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
> mtspr SPRN_SPRG_PGDIR, r4
> @@ -941,10 +937,6 @@ start_here:
> tophys(r4,r2)
> addi r4,r4,THREAD /* init task's THREAD */
> mtspr SPRN_SPRG_THREAD,r4
> -#ifdef CONFIG_PPC_RTAS
> - li r3,0
> - stw r3, RTAS_SP(r4) /* 0 => not in RTAS */
> -#endif
> lis r4, (swapper_pg_dir - PAGE_OFFSET)@h
> ori r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
> mtspr SPRN_SPRG_PGDIR, r4
>
More information about the Linuxppc-dev
mailing list