Relocatable kdump kernel support in kexec-tools

This patch adds relocatable kernel support for kdump in the kexec-tools
code. A signature (0xfeed1234) is passed in r6 from panic code to the
purgatory code through kexec_sequence function. The signature is used to
differentiate between relocatable kdump kernel and non-kdump kernels.

The purgatory code compares the signature and sets the __kdump_flag in
head_64.S by using the offset with respect to next kernel load address.
During the boot up, kernel code checks __kdump_flag and if it is set, the
kernel will behave as relocatable kdump kernel.

Signed-off-by: Mohan Kumar M <[EMAIL PROTECTED]>
---
diff --git a/purgatory/arch/ppc64/v2wrap.S b/purgatory/arch/ppc64/v2wrap.S
index b3563de..f69dad2 100644
--- a/purgatory/arch/ppc64/v2wrap.S
+++ b/purgatory/arch/ppc64/v2wrap.S
@@ -45,6 +45,7 @@
        oris    rn,rn,[EMAIL PROTECTED];         \
        ori     rn,rn,[EMAIL PROTECTED]
 
+#define KDUMP_SIGNATURE 0xfeed1234
 
        .machine ppc64
        .globl purgatory_start
@@ -64,6 +65,7 @@ master:
        isync
        mr      17,3            # save cpu id to r17
        mr      15,4            # save physical address in reg15
+       mr      18,6            # save kdump flag in reg18
 
        LOADADDR(6,my_toc)
        ld      2,0(6)          #setup toc
@@ -94,6 +96,12 @@ master:
        mtctr   4               # prepare branch too
        mr      3,16            # restore dt address
 
+       LOADADDR(6,KDUMP_SIGNATURE)
+       cmpd    18,6
+       bne     regular
+       li      7,1
+       std     7,24(4)         # mark kdump flag at kernel
+regular:
        lwz     7,0(4)          # get the first instruction that we stole
        stw     7,0(0)          # and put it in the slave loop at 0
                                # skip cache flush, do we care?
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to