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: [email protected] # v4.10+
> Reported-by: Yilin Zhang <[email protected]>
> Debugged-by: David Gibson <[email protected]>
> Signed-off-by: Michael Ellerman <[email protected]>Reviewed-by: David Gibson <[email protected]> Tested-by: David Gibson <[email protected]> > --- > 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
signature.asc
Description: PGP signature
