diff options
author | Mohan Kumar M <mohan@in.ibm.com> | 2008-10-21 13:38:10 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-22 00:01:22 -0400 |
commit | 54622f10a6aabb8bb2bdacf3dd070046f03dc246 (patch) | |
tree | 73eb5ad4eeb7174b8c0ae1904bbe80602c5e295d /arch/powerpc/Kconfig | |
parent | 4792adbac9eb41cea77a45ab76258ea10d411173 (diff) |
powerpc: Support for relocatable kdump kernel
This adds relocatable kernel support for kdump. With this one can
use the same regular kernel to capture the kdump. A signature (0xfeed1234)
is passed in r6 from panic code to the next kernel through kexec_sequence
and purgatory code. The signature is used to differentiate between
kdump kernel and non-kdump kernels.
The purgatory code compares the signature and sets the __kdump_flag in
head_64.S. During the boot up, kernel code checks __kdump_flag and if it
is set, the kernel will behave as relocatable kdump kernel. This kernel
will boot at the address where it was loaded by kexec-tools ie. at the
address reserved through crashkernel boot parameter.
CONFIG_CRASH_DUMP depends on CONFIG_RELOCATABLE option to build kdump
kernel as relocatable. So the same kernel can be used as production and
kdump kernel.
This patch incorporates the changes suggested by Paul Mackerras to avoid
GOT use and to avoid two copies of the code.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Mohan Kumar M <mohan@in.ibm.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/Kconfig')
-rw-r--r-- | arch/powerpc/Kconfig | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 369d93e7377c..5b1527883fcb 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -323,13 +323,11 @@ config KEXEC | |||
323 | 323 | ||
324 | config CRASH_DUMP | 324 | config CRASH_DUMP |
325 | bool "Build a kdump crash kernel" | 325 | bool "Build a kdump crash kernel" |
326 | depends on PPC_MULTIPLATFORM && PPC64 | 326 | depends on PPC_MULTIPLATFORM && PPC64 && RELOCATABLE |
327 | help | 327 | help |
328 | Build a kernel suitable for use as a kdump capture kernel. | 328 | Build a kernel suitable for use as a kdump capture kernel. |
329 | The kernel will be linked at a different address than normal, and | 329 | The same kernel binary can be used as production kernel and dump |
330 | so can only be used for Kdump. | 330 | capture kernel. |
331 | |||
332 | Don't change this unless you know what you are doing. | ||
333 | 331 | ||
334 | config PHYP_DUMP | 332 | config PHYP_DUMP |
335 | bool "Hypervisor-assisted dump (EXPERIMENTAL)" | 333 | bool "Hypervisor-assisted dump (EXPERIMENTAL)" |
@@ -829,11 +827,9 @@ config PAGE_OFFSET | |||
829 | default "0xc000000000000000" | 827 | default "0xc000000000000000" |
830 | config KERNEL_START | 828 | config KERNEL_START |
831 | hex | 829 | hex |
832 | default "0xc000000002000000" if CRASH_DUMP | ||
833 | default "0xc000000000000000" | 830 | default "0xc000000000000000" |
834 | config PHYSICAL_START | 831 | config PHYSICAL_START |
835 | hex | 832 | hex |
836 | default "0x02000000" if CRASH_DUMP | ||
837 | default "0x00000000" | 833 | default "0x00000000" |
838 | endif | 834 | endif |
839 | 835 | ||