[PATCH] powerpc/kexec: Fix radix to hash kexec

Balbir Singh bsingharora at gmail.com
Thu Jun 29 21:54:38 AEST 2017


On Thu, Jun 29, 2017 at 7:29 PM, Michael Ellerman <mpe at ellerman.id.au> wrote:
> Balbir Singh <bsingharora at gmail.com> writes:
>
>> This patch fixes a crash seen while doing a kexec from
>> radix mode to hash mode. Key 0 is special in hash and
>> used in the RPN by default, we set the key values to 0
>> today. In radix mode key 0 is used to control
>> supervisor<->user access. In hash key 0 is used by default,
>> so the first instruction after the switch causes a crash on
>> kexec.
>>
>> This patch fixes
>> (3b10d00 powerpc/mm/radix: Prevent kernel execution of user space)
>> The commit above introduced setting of IAMR and AMOR values to
>> prevent execution of user mode instructions from supervisor mode.
>> We need to clean up these SPR's on kexec.
>>
>> Reported-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
>> Signed-off-by: Balbir Singh <bsingharora at gmail.com>
>> ---
>>
>> NOTES:
>>  This patch can be made power9 specific, but I've chosen not
>>  to do so, I could add it in a feature section if recommended.
>
> Well neither register existed in the architecture prior to Power8.
> Possibly they were defined in BookIV or they were nops, but most likely
> it will just explode on old CPUs.
>
> And probably Book3E as well.
>
> So it should be in a CPU_FTR_ARCH_207S section at a minimum.
>

Thanks for the review, I'll do a v2, I've put it under CPU_FTR_ARCH_300

> But maybe it should just be done in C earlier in the call chain.

I thought about it, but felt that kexec_sequence would be our last let
off and might be a good place to reset the AMR's just before turning
the MMU off

Balbir Singh.


More information about the Linuxppc-dev mailing list