On Thu, Jun 29, 2017 at 7:29 PM, Michael Ellerman <m...@ellerman.id.au> wrote: > Balbir Singh <bsinghar...@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 <b...@kernel.crashing.org> >> Signed-off-by: Balbir Singh <bsinghar...@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.