As we kexec across kernels that use AMR/IAMR for different purposes we need to ensure that new kernels get kexec'd with a reset value of AMR/IAMR. For ex: the new kernel can use key 0 for kernel mapping and the old AMR value prevents access to key 0. This patch also removes reset if IAMR and AMOR in kexec_sequence. Reset of AMOR is not needed and the IAMR reset is partial (it doesn't do the reset on secondary cpus) and is redundant with this patch. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200709032946.881753-19-aneesh.kumar@linux.ibm.com
24 lines
431 B
C
24 lines
431 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _ASM_POWERPC_BOOK3S_64_KEXEC_H_
|
|
#define _ASM_POWERPC_BOOK3S_64_KEXEC_H_
|
|
|
|
|
|
#define reset_sprs reset_sprs
|
|
static inline void reset_sprs(void)
|
|
{
|
|
if (cpu_has_feature(CPU_FTR_ARCH_206)) {
|
|
mtspr(SPRN_AMR, 0);
|
|
mtspr(SPRN_UAMOR, 0);
|
|
}
|
|
|
|
if (cpu_has_feature(CPU_FTR_ARCH_207S)) {
|
|
mtspr(SPRN_IAMR, 0);
|
|
}
|
|
|
|
/* Do we need isync()? We are going via a kexec reset */
|
|
isync();
|
|
}
|
|
|
|
#endif
|