[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <558fbb7e-a454-055e-ca29-a2e4dfb6cf6a@c-s.fr>
Date: Mon, 1 Apr 2019 13:14:13 +0200
From: Christophe Leroy <christophe.leroy@....fr>
To: Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Michael Ellerman <mpe@...erman.id.au>,
Larry Finger <Larry.Finger@...inger.net>
Cc: linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] powerpc/rtas: fix early boot failure.
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@...inger.net>
> Fixes: 0df977eafc79 ("powerpc/6xx: Don't use SPRN_SPRG2 for storing stack pointer while in RTAS")
> Signed-off-by: Christophe Leroy <christophe.leroy@....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
>
Powered by blists - more mailing lists