Эх сурвалжийг харах

powerpc/64: Add an option to force run-at-load to test relocation

This adds a config option that can help exercise the case when
the kernel is not running at PAGE_OFFSET.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Nicholas Piggin 8 жил өмнө
parent
commit
70839d2077

+ 9 - 0
arch/powerpc/Kconfig

@@ -479,6 +479,15 @@ config RELOCATABLE
 	  setting can still be useful to bootwrappers that need to know the
 	  setting can still be useful to bootwrappers that need to know the
 	  load address of the kernel (eg. u-boot/mkimage).
 	  load address of the kernel (eg. u-boot/mkimage).
 
 
+config RELOCATABLE_TEST
+	bool "Test relocatable kernel"
+	depends on (PPC64 && RELOCATABLE)
+	default n
+	help
+	  This runs the relocatable kernel at the address it was initially
+	  loaded at, which tends to be non-zero and therefore test the
+	  relocation code.
+
 config CRASH_DUMP
 config CRASH_DUMP
 	bool "Build a kdump crash kernel"
 	bool "Build a kdump crash kernel"
 	depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
 	depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)

+ 8 - 1
arch/powerpc/kernel/head_64.S

@@ -107,12 +107,19 @@ __secondary_hold_acknowledge:
 	 * crash_kernel region.  The loader is responsible for
 	 * crash_kernel region.  The loader is responsible for
 	 * observing the alignment requirement.
 	 * observing the alignment requirement.
 	 */
 	 */
+
+#ifdef CONFIG_RELOCATABLE_TEST
+#define RUN_AT_LOAD_DEFAULT 1		/* Test relocation, do not copy to 0 */
+#else
+#define RUN_AT_LOAD_DEFAULT 0x72756e30  /* "run0" -- relocate to 0 by default */
+#endif
+
 	/* Do not move this variable as kexec-tools knows about it. */
 	/* Do not move this variable as kexec-tools knows about it. */
 	. = 0x5c
 	. = 0x5c
 	.globl	__run_at_load
 	.globl	__run_at_load
 __run_at_load:
 __run_at_load:
 DEFINE_FIXED_SYMBOL(__run_at_load)
 DEFINE_FIXED_SYMBOL(__run_at_load)
-	.long	0x72756e30	/* "run0" -- relocate to 0 by default */
+	.long	RUN_AT_LOAD_DEFAULT
 #endif
 #endif
 
 
 	. = 0x60
 	. = 0x60