On Fri, Nov 24, 2017 at 02:51:02PM +1100, Michael Ellerman wrote:
> The code that cleans up the IAMR/AMOR before kexec'ing failed to
> remember that when we're running as a guest AMOR is not writable, it's
> hypervisor privileged.
> 
> They symptom is that the kexec stops before entering purgatory and
> nothing else is seen on the console. If you examine the state of the
> system all threads will be in the 0x700 program check handler.
> 
> Fix it by making the write to AMOR dependent on HV mode.
> 
> Fixes: 1e2a516e89fc ("powerpc/kexec: Fix radix to hash kexec due to 
> IAMR/AMOR")
> Cc: sta...@vger.kernel.org # v4.10+
> Reported-by: Yilin Zhang <yilzh...@redhat.com>
> Debugged-by: David Gibson <da...@gibson.dropbear.id.au>
> Signed-off-by: Michael Ellerman <m...@ellerman.id.au>

Reviewed-by: David Gibson <da...@gibson.dropbear.id.au>
Tested-by: David Gibson <da...@gibson.dropbear.id.au>

> ---
>  arch/powerpc/kernel/misc_64.S | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
> index 8ac0bd2bddb0..3280953a82cf 100644
> --- a/arch/powerpc/kernel/misc_64.S
> +++ b/arch/powerpc/kernel/misc_64.S
> @@ -623,7 +623,9 @@ BEGIN_FTR_SECTION
>        * NOTE, we rely on r0 being 0 from above.
>        */
>       mtspr   SPRN_IAMR,r0
> +BEGIN_FTR_SECTION_NESTED(42)
>       mtspr   SPRN_AMOR,r0
> +END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42)
>  END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
>  
>       /* save regs for local vars on new stack.

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature

Reply via email to