Message ID | 1583476525-13505-6-git-send-email-amit.kachhap@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: return address signing | expand |
On 3/6/20 6:35 AM, Amit Daniel Kachhap wrote: > A macro early_park_cpu is added to park the faulted cpu in an infinite > loop. Currently, this macro is substituted in two instances and may be > reused in future. > Reviewed-by: Vincenzo Frascino <Vincenzo.Frascino@arm.com> > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> > Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> > --- > arch/arm64/kernel/head.S | 25 +++++++++++++------------ > 1 file changed, 13 insertions(+), 12 deletions(-) > > diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S > index 989b194..3d18163 100644 > --- a/arch/arm64/kernel/head.S > +++ b/arch/arm64/kernel/head.S > @@ -761,6 +761,17 @@ ENDPROC(__secondary_too_slow) > .endm > > /* > + * Macro to park the cpu in an infinite loop. > + */ > + .macro early_park_cpu status > + update_early_cpu_boot_status \status | CPU_STUCK_IN_KERNEL, x1, x2 > +.Lepc_\@: > + wfe > + wfi > + b .Lepc_\@ > + .endm > + > +/* > * Enable the MMU. > * > * x0 = SCTLR_EL1 value for turning on the MMU. > @@ -808,24 +819,14 @@ ENTRY(__cpu_secondary_check52bitva) > and x0, x0, #(0xf << ID_AA64MMFR2_LVA_SHIFT) > cbnz x0, 2f > > - update_early_cpu_boot_status \ > - CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_52_BIT_VA, x0, x1 > -1: wfe > - wfi > - b 1b > - > + early_park_cpu CPU_STUCK_REASON_52_BIT_VA > #endif > 2: ret > ENDPROC(__cpu_secondary_check52bitva) > > __no_granule_support: > /* Indicate that this CPU can't boot and is stuck in the kernel */ > - update_early_cpu_boot_status \ > - CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_NO_GRAN, x1, x2 > -1: > - wfe > - wfi > - b 1b > + early_park_cpu CPU_STUCK_REASON_NO_GRAN > ENDPROC(__no_granule_support) > > #ifdef CONFIG_RELOCATABLE >
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 989b194..3d18163 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -761,6 +761,17 @@ ENDPROC(__secondary_too_slow) .endm /* + * Macro to park the cpu in an infinite loop. + */ + .macro early_park_cpu status + update_early_cpu_boot_status \status | CPU_STUCK_IN_KERNEL, x1, x2 +.Lepc_\@: + wfe + wfi + b .Lepc_\@ + .endm + +/* * Enable the MMU. * * x0 = SCTLR_EL1 value for turning on the MMU. @@ -808,24 +819,14 @@ ENTRY(__cpu_secondary_check52bitva) and x0, x0, #(0xf << ID_AA64MMFR2_LVA_SHIFT) cbnz x0, 2f - update_early_cpu_boot_status \ - CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_52_BIT_VA, x0, x1 -1: wfe - wfi - b 1b - + early_park_cpu CPU_STUCK_REASON_52_BIT_VA #endif 2: ret ENDPROC(__cpu_secondary_check52bitva) __no_granule_support: /* Indicate that this CPU can't boot and is stuck in the kernel */ - update_early_cpu_boot_status \ - CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_NO_GRAN, x1, x2 -1: - wfe - wfi - b 1b + early_park_cpu CPU_STUCK_REASON_NO_GRAN ENDPROC(__no_granule_support) #ifdef CONFIG_RELOCATABLE