Re: [RESEND PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Hari Bathiniwrites: > Now that crashkernel parameter parsing and vmcoreinfo related code is > moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove > dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid > of definitions of fadump_append_elf_note() & fadump_final_note() > functions to reuse similar functions compiled under CONFIG_CRASH_CORE. > > Signed-off-by: Hari Bathini > Reviewed-by: Mahesh Salgaonkar > --- > arch/powerpc/Kconfig | 10 ++ > arch/powerpc/include/asm/fadump.h |2 ++ > arch/powerpc/kernel/crash.c|2 -- > arch/powerpc/kernel/fadump.c | 34 +++--- > arch/powerpc/kernel/setup-common.c |5 + > 5 files changed, 16 insertions(+), 37 deletions(-) Acked-by: Michael Ellerman cheers
Re: [RESEND PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Hari Bathini writes: > Now that crashkernel parameter parsing and vmcoreinfo related code is > moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove > dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid > of definitions of fadump_append_elf_note() & fadump_final_note() > functions to reuse similar functions compiled under CONFIG_CRASH_CORE. > > Signed-off-by: Hari Bathini > Reviewed-by: Mahesh Salgaonkar > --- > arch/powerpc/Kconfig | 10 ++ > arch/powerpc/include/asm/fadump.h |2 ++ > arch/powerpc/kernel/crash.c|2 -- > arch/powerpc/kernel/fadump.c | 34 +++--- > arch/powerpc/kernel/setup-common.c |5 + > 5 files changed, 16 insertions(+), 37 deletions(-) Acked-by: Michael Ellerman cheers
[RESEND PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Now that crashkernel parameter parsing and vmcoreinfo related code is moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid of definitions of fadump_append_elf_note() & fadump_final_note() functions to reuse similar functions compiled under CONFIG_CRASH_CORE. Signed-off-by: Hari BathiniReviewed-by: Mahesh Salgaonkar --- arch/powerpc/Kconfig | 10 ++ arch/powerpc/include/asm/fadump.h |2 ++ arch/powerpc/kernel/crash.c|2 -- arch/powerpc/kernel/fadump.c | 34 +++--- arch/powerpc/kernel/setup-common.c |5 + 5 files changed, 16 insertions(+), 37 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 97a8bc8..6bc1fa2 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -522,21 +522,23 @@ config RELOCATABLE_TEST relocation code. config CRASH_DUMP - bool "Build a kdump crash kernel" + bool "Build a dump capture kernel" depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE help - Build a kernel suitable for use as a kdump capture kernel. + Build a kernel suitable for use as a dump capture kernel. The same kernel binary can be used as production kernel and dump capture kernel. config FA_DUMP bool "Firmware-assisted dump" - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE + depends on PPC64 && PPC_RTAS + select CRASH_CORE + select CRASH_DUMP help A robust mechanism to get reliable kernel crash dump with assistance from firmware. This approach does not use kexec, - instead firmware assists in booting the kdump kernel + instead firmware assists in booting the capture kernel while preserving memory contents. Firmware-assisted dump is meant to be a kdump replacement offering robustness and speed not possible without system firmware assistance. diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h index 0031806..60b9108 100644 --- a/arch/powerpc/include/asm/fadump.h +++ b/arch/powerpc/include/asm/fadump.h @@ -73,6 +73,8 @@ reg_entry++;\ }) +extern int crashing_cpu; + /* Kernel Dump section info */ struct fadump_section { __be32 request_flag; diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 47b63de..cbabb5a 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c @@ -43,8 +43,6 @@ #define IPI_TIMEOUT1 #define REAL_MODE_TIMEOUT 1 -/* This keeps a track of which one is the crashing cpu. */ -int crashing_cpu = -1; static int time_to_dump; #define CRASH_HANDLER_MAX 3 diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index 8ff0dd4..31c0abe 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -509,34 +509,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs) return reg_entry; } -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, - void *data, size_t data_len) -{ - struct elf_note note; - - note.n_namesz = strlen(name) + 1; - note.n_descsz = data_len; - note.n_type = type; - memcpy(buf, , sizeof(note)); - buf += (sizeof(note) + 3)/4; - memcpy(buf, name, note.n_namesz); - buf += (note.n_namesz + 3)/4; - memcpy(buf, data, note.n_descsz); - buf += (note.n_descsz + 3)/4; - - return buf; -} - -static void fadump_final_note(u32 *buf) -{ - struct elf_note note; - - note.n_namesz = 0; - note.n_descsz = 0; - note.n_type = 0; - memcpy(buf, , sizeof(note)); -} - static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) { struct elf_prstatus prstatus; @@ -547,8 +519,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) * prstatus.pr_pid = */ elf_core_copy_kernel_regs(_reg, regs); - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, - , sizeof(prstatus)); + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, + , sizeof(prstatus)); return buf; } @@ -689,7 +661,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm) note_buf = fadump_regs_to_elf_notes(note_buf, ); } } - fadump_final_note(note_buf); + final_note(note_buf); if (fdh) { pr_debug("Updating elfcore header (%llx) with cpu notes\n", diff
[RESEND PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Now that crashkernel parameter parsing and vmcoreinfo related code is moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid of definitions of fadump_append_elf_note() & fadump_final_note() functions to reuse similar functions compiled under CONFIG_CRASH_CORE. Signed-off-by: Hari Bathini Reviewed-by: Mahesh Salgaonkar --- arch/powerpc/Kconfig | 10 ++ arch/powerpc/include/asm/fadump.h |2 ++ arch/powerpc/kernel/crash.c|2 -- arch/powerpc/kernel/fadump.c | 34 +++--- arch/powerpc/kernel/setup-common.c |5 + 5 files changed, 16 insertions(+), 37 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 97a8bc8..6bc1fa2 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -522,21 +522,23 @@ config RELOCATABLE_TEST relocation code. config CRASH_DUMP - bool "Build a kdump crash kernel" + bool "Build a dump capture kernel" depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE help - Build a kernel suitable for use as a kdump capture kernel. + Build a kernel suitable for use as a dump capture kernel. The same kernel binary can be used as production kernel and dump capture kernel. config FA_DUMP bool "Firmware-assisted dump" - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE + depends on PPC64 && PPC_RTAS + select CRASH_CORE + select CRASH_DUMP help A robust mechanism to get reliable kernel crash dump with assistance from firmware. This approach does not use kexec, - instead firmware assists in booting the kdump kernel + instead firmware assists in booting the capture kernel while preserving memory contents. Firmware-assisted dump is meant to be a kdump replacement offering robustness and speed not possible without system firmware assistance. diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h index 0031806..60b9108 100644 --- a/arch/powerpc/include/asm/fadump.h +++ b/arch/powerpc/include/asm/fadump.h @@ -73,6 +73,8 @@ reg_entry++;\ }) +extern int crashing_cpu; + /* Kernel Dump section info */ struct fadump_section { __be32 request_flag; diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 47b63de..cbabb5a 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c @@ -43,8 +43,6 @@ #define IPI_TIMEOUT1 #define REAL_MODE_TIMEOUT 1 -/* This keeps a track of which one is the crashing cpu. */ -int crashing_cpu = -1; static int time_to_dump; #define CRASH_HANDLER_MAX 3 diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index 8ff0dd4..31c0abe 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -509,34 +509,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs) return reg_entry; } -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, - void *data, size_t data_len) -{ - struct elf_note note; - - note.n_namesz = strlen(name) + 1; - note.n_descsz = data_len; - note.n_type = type; - memcpy(buf, , sizeof(note)); - buf += (sizeof(note) + 3)/4; - memcpy(buf, name, note.n_namesz); - buf += (note.n_namesz + 3)/4; - memcpy(buf, data, note.n_descsz); - buf += (note.n_descsz + 3)/4; - - return buf; -} - -static void fadump_final_note(u32 *buf) -{ - struct elf_note note; - - note.n_namesz = 0; - note.n_descsz = 0; - note.n_type = 0; - memcpy(buf, , sizeof(note)); -} - static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) { struct elf_prstatus prstatus; @@ -547,8 +519,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) * prstatus.pr_pid = */ elf_core_copy_kernel_regs(_reg, regs); - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, - , sizeof(prstatus)); + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, + , sizeof(prstatus)); return buf; } @@ -689,7 +661,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm) note_buf = fadump_regs_to_elf_notes(note_buf, ); } } - fadump_final_note(note_buf); + final_note(note_buf); if (fdh) { pr_debug("Updating elfcore header (%llx) with cpu notes\n", diff --git a/arch/powerpc/kernel/setup-common.c
Re: [PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
On 01/05/2017 11:02 PM, Hari Bathini wrote: > Now that crashkernel parameter parsing and vmcoreinfo related code is > moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove > dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid > of definitions of fadump_append_elf_note() & fadump_final_note() > functions to reuse similar functions compiled under CONFIG_CRASH_CORE. > > Signed-off-by: Hari BathiniReviewed-by: Mahesh Salgaonkar > --- > arch/powerpc/Kconfig | 10 ++ > arch/powerpc/include/asm/fadump.h |2 ++ > arch/powerpc/kernel/crash.c|2 -- > arch/powerpc/kernel/fadump.c | 34 +++--- > arch/powerpc/kernel/setup-common.c |5 + > 5 files changed, 16 insertions(+), 37 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index a8ee573..b9726be 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -513,21 +513,23 @@ config RELOCATABLE_TEST > relocation code. > > config CRASH_DUMP > - bool "Build a kdump crash kernel" > + bool "Build a dump capture kernel" > depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) > select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE > help > - Build a kernel suitable for use as a kdump capture kernel. > + Build a kernel suitable for use as a dump capture kernel. > The same kernel binary can be used as production kernel and dump > capture kernel. > > config FA_DUMP > bool "Firmware-assisted dump" > - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE > + depends on PPC64 && PPC_RTAS > + select CRASH_CORE > + select CRASH_DUMP > help > A robust mechanism to get reliable kernel crash dump with > assistance from firmware. This approach does not use kexec, > - instead firmware assists in booting the kdump kernel > + instead firmware assists in booting the capture kernel > while preserving memory contents. Firmware-assisted dump > is meant to be a kdump replacement offering robustness and > speed not possible without system firmware assistance. > diff --git a/arch/powerpc/include/asm/fadump.h > b/arch/powerpc/include/asm/fadump.h > index 0031806..60b9108 100644 > --- a/arch/powerpc/include/asm/fadump.h > +++ b/arch/powerpc/include/asm/fadump.h > @@ -73,6 +73,8 @@ > reg_entry++;\ > }) > > +extern int crashing_cpu; > + > /* Kernel Dump section info */ > struct fadump_section { > __be32 request_flag; > diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c > index 47b63de..cbabb5a 100644 > --- a/arch/powerpc/kernel/crash.c > +++ b/arch/powerpc/kernel/crash.c > @@ -43,8 +43,6 @@ > #define IPI_TIMEOUT 1 > #define REAL_MODE_TIMEOUT1 > > -/* This keeps a track of which one is the crashing cpu. */ > -int crashing_cpu = -1; > static int time_to_dump; > > #define CRASH_HANDLER_MAX 3 > diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c > index 8f0c7c5..db0b339 100644 > --- a/arch/powerpc/kernel/fadump.c > +++ b/arch/powerpc/kernel/fadump.c > @@ -486,34 +486,6 @@ fadump_read_registers(struct fadump_reg_entry > *reg_entry, struct pt_regs *regs) > return reg_entry; > } > > -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, > - void *data, size_t data_len) > -{ > - struct elf_note note; > - > - note.n_namesz = strlen(name) + 1; > - note.n_descsz = data_len; > - note.n_type = type; > - memcpy(buf, , sizeof(note)); > - buf += (sizeof(note) + 3)/4; > - memcpy(buf, name, note.n_namesz); > - buf += (note.n_namesz + 3)/4; > - memcpy(buf, data, note.n_descsz); > - buf += (note.n_descsz + 3)/4; > - > - return buf; > -} > - > -static void fadump_final_note(u32 *buf) > -{ > - struct elf_note note; > - > - note.n_namesz = 0; > - note.n_descsz = 0; > - note.n_type = 0; > - memcpy(buf, , sizeof(note)); > -} > - > static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) > { > struct elf_prstatus prstatus; > @@ -524,8 +496,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct > pt_regs *regs) >* prstatus.pr_pid = >*/ > elf_core_copy_kernel_regs(_reg, regs); > - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, > - , sizeof(prstatus)); > + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, > + , sizeof(prstatus)); > return buf; > } > > @@ -666,7 +638,7 @@ static int __init fadump_build_cpu_notes(const struct > fadump_mem_struct *fdm) > note_buf = fadump_regs_to_elf_notes(note_buf, ); >
Re: [PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
On 01/05/2017 11:02 PM, Hari Bathini wrote: > Now that crashkernel parameter parsing and vmcoreinfo related code is > moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove > dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid > of definitions of fadump_append_elf_note() & fadump_final_note() > functions to reuse similar functions compiled under CONFIG_CRASH_CORE. > > Signed-off-by: Hari Bathini Reviewed-by: Mahesh Salgaonkar > --- > arch/powerpc/Kconfig | 10 ++ > arch/powerpc/include/asm/fadump.h |2 ++ > arch/powerpc/kernel/crash.c|2 -- > arch/powerpc/kernel/fadump.c | 34 +++--- > arch/powerpc/kernel/setup-common.c |5 + > 5 files changed, 16 insertions(+), 37 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index a8ee573..b9726be 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -513,21 +513,23 @@ config RELOCATABLE_TEST > relocation code. > > config CRASH_DUMP > - bool "Build a kdump crash kernel" > + bool "Build a dump capture kernel" > depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) > select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE > help > - Build a kernel suitable for use as a kdump capture kernel. > + Build a kernel suitable for use as a dump capture kernel. > The same kernel binary can be used as production kernel and dump > capture kernel. > > config FA_DUMP > bool "Firmware-assisted dump" > - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE > + depends on PPC64 && PPC_RTAS > + select CRASH_CORE > + select CRASH_DUMP > help > A robust mechanism to get reliable kernel crash dump with > assistance from firmware. This approach does not use kexec, > - instead firmware assists in booting the kdump kernel > + instead firmware assists in booting the capture kernel > while preserving memory contents. Firmware-assisted dump > is meant to be a kdump replacement offering robustness and > speed not possible without system firmware assistance. > diff --git a/arch/powerpc/include/asm/fadump.h > b/arch/powerpc/include/asm/fadump.h > index 0031806..60b9108 100644 > --- a/arch/powerpc/include/asm/fadump.h > +++ b/arch/powerpc/include/asm/fadump.h > @@ -73,6 +73,8 @@ > reg_entry++;\ > }) > > +extern int crashing_cpu; > + > /* Kernel Dump section info */ > struct fadump_section { > __be32 request_flag; > diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c > index 47b63de..cbabb5a 100644 > --- a/arch/powerpc/kernel/crash.c > +++ b/arch/powerpc/kernel/crash.c > @@ -43,8 +43,6 @@ > #define IPI_TIMEOUT 1 > #define REAL_MODE_TIMEOUT1 > > -/* This keeps a track of which one is the crashing cpu. */ > -int crashing_cpu = -1; > static int time_to_dump; > > #define CRASH_HANDLER_MAX 3 > diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c > index 8f0c7c5..db0b339 100644 > --- a/arch/powerpc/kernel/fadump.c > +++ b/arch/powerpc/kernel/fadump.c > @@ -486,34 +486,6 @@ fadump_read_registers(struct fadump_reg_entry > *reg_entry, struct pt_regs *regs) > return reg_entry; > } > > -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, > - void *data, size_t data_len) > -{ > - struct elf_note note; > - > - note.n_namesz = strlen(name) + 1; > - note.n_descsz = data_len; > - note.n_type = type; > - memcpy(buf, , sizeof(note)); > - buf += (sizeof(note) + 3)/4; > - memcpy(buf, name, note.n_namesz); > - buf += (note.n_namesz + 3)/4; > - memcpy(buf, data, note.n_descsz); > - buf += (note.n_descsz + 3)/4; > - > - return buf; > -} > - > -static void fadump_final_note(u32 *buf) > -{ > - struct elf_note note; > - > - note.n_namesz = 0; > - note.n_descsz = 0; > - note.n_type = 0; > - memcpy(buf, , sizeof(note)); > -} > - > static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) > { > struct elf_prstatus prstatus; > @@ -524,8 +496,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct > pt_regs *regs) >* prstatus.pr_pid = >*/ > elf_core_copy_kernel_regs(_reg, regs); > - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, > - , sizeof(prstatus)); > + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, > + , sizeof(prstatus)); > return buf; > } > > @@ -666,7 +638,7 @@ static int __init fadump_build_cpu_notes(const struct > fadump_mem_struct *fdm) > note_buf = fadump_regs_to_elf_notes(note_buf, ); > } > } > - fadump_final_note(note_buf); >
[PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Now that crashkernel parameter parsing and vmcoreinfo related code is moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid of definitions of fadump_append_elf_note() & fadump_final_note() functions to reuse similar functions compiled under CONFIG_CRASH_CORE. Signed-off-by: Hari Bathini--- arch/powerpc/Kconfig | 10 ++ arch/powerpc/include/asm/fadump.h |2 ++ arch/powerpc/kernel/crash.c|2 -- arch/powerpc/kernel/fadump.c | 34 +++--- arch/powerpc/kernel/setup-common.c |5 + 5 files changed, 16 insertions(+), 37 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index a8ee573..b9726be 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -513,21 +513,23 @@ config RELOCATABLE_TEST relocation code. config CRASH_DUMP - bool "Build a kdump crash kernel" + bool "Build a dump capture kernel" depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE help - Build a kernel suitable for use as a kdump capture kernel. + Build a kernel suitable for use as a dump capture kernel. The same kernel binary can be used as production kernel and dump capture kernel. config FA_DUMP bool "Firmware-assisted dump" - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE + depends on PPC64 && PPC_RTAS + select CRASH_CORE + select CRASH_DUMP help A robust mechanism to get reliable kernel crash dump with assistance from firmware. This approach does not use kexec, - instead firmware assists in booting the kdump kernel + instead firmware assists in booting the capture kernel while preserving memory contents. Firmware-assisted dump is meant to be a kdump replacement offering robustness and speed not possible without system firmware assistance. diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h index 0031806..60b9108 100644 --- a/arch/powerpc/include/asm/fadump.h +++ b/arch/powerpc/include/asm/fadump.h @@ -73,6 +73,8 @@ reg_entry++;\ }) +extern int crashing_cpu; + /* Kernel Dump section info */ struct fadump_section { __be32 request_flag; diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 47b63de..cbabb5a 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c @@ -43,8 +43,6 @@ #define IPI_TIMEOUT1 #define REAL_MODE_TIMEOUT 1 -/* This keeps a track of which one is the crashing cpu. */ -int crashing_cpu = -1; static int time_to_dump; #define CRASH_HANDLER_MAX 3 diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index 8f0c7c5..db0b339 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -486,34 +486,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs) return reg_entry; } -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, - void *data, size_t data_len) -{ - struct elf_note note; - - note.n_namesz = strlen(name) + 1; - note.n_descsz = data_len; - note.n_type = type; - memcpy(buf, , sizeof(note)); - buf += (sizeof(note) + 3)/4; - memcpy(buf, name, note.n_namesz); - buf += (note.n_namesz + 3)/4; - memcpy(buf, data, note.n_descsz); - buf += (note.n_descsz + 3)/4; - - return buf; -} - -static void fadump_final_note(u32 *buf) -{ - struct elf_note note; - - note.n_namesz = 0; - note.n_descsz = 0; - note.n_type = 0; - memcpy(buf, , sizeof(note)); -} - static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) { struct elf_prstatus prstatus; @@ -524,8 +496,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) * prstatus.pr_pid = */ elf_core_copy_kernel_regs(_reg, regs); - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, - , sizeof(prstatus)); + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, + , sizeof(prstatus)); return buf; } @@ -666,7 +638,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm) note_buf = fadump_regs_to_elf_notes(note_buf, ); } } - fadump_final_note(note_buf); + final_note(note_buf); if (fdh) { pr_debug("Updating elfcore header (%llx) with cpu notes\n", diff --git a/arch/powerpc/kernel/setup-common.c
[PATCH v4 3/5] powerpc/fadump: remove dependency with CONFIG_KEXEC
Now that crashkernel parameter parsing and vmcoreinfo related code is moved under CONFIG_CRASH_CORE instead of CONFIG_KEXEC_CORE, remove dependency with CONFIG_KEXEC for CONFIG_FA_DUMP. While here, get rid of definitions of fadump_append_elf_note() & fadump_final_note() functions to reuse similar functions compiled under CONFIG_CRASH_CORE. Signed-off-by: Hari Bathini --- arch/powerpc/Kconfig | 10 ++ arch/powerpc/include/asm/fadump.h |2 ++ arch/powerpc/kernel/crash.c|2 -- arch/powerpc/kernel/fadump.c | 34 +++--- arch/powerpc/kernel/setup-common.c |5 + 5 files changed, 16 insertions(+), 37 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index a8ee573..b9726be 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -513,21 +513,23 @@ config RELOCATABLE_TEST relocation code. config CRASH_DUMP - bool "Build a kdump crash kernel" + bool "Build a dump capture kernel" depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE help - Build a kernel suitable for use as a kdump capture kernel. + Build a kernel suitable for use as a dump capture kernel. The same kernel binary can be used as production kernel and dump capture kernel. config FA_DUMP bool "Firmware-assisted dump" - depends on PPC64 && PPC_RTAS && CRASH_DUMP && KEXEC_CORE + depends on PPC64 && PPC_RTAS + select CRASH_CORE + select CRASH_DUMP help A robust mechanism to get reliable kernel crash dump with assistance from firmware. This approach does not use kexec, - instead firmware assists in booting the kdump kernel + instead firmware assists in booting the capture kernel while preserving memory contents. Firmware-assisted dump is meant to be a kdump replacement offering robustness and speed not possible without system firmware assistance. diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h index 0031806..60b9108 100644 --- a/arch/powerpc/include/asm/fadump.h +++ b/arch/powerpc/include/asm/fadump.h @@ -73,6 +73,8 @@ reg_entry++;\ }) +extern int crashing_cpu; + /* Kernel Dump section info */ struct fadump_section { __be32 request_flag; diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 47b63de..cbabb5a 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c @@ -43,8 +43,6 @@ #define IPI_TIMEOUT1 #define REAL_MODE_TIMEOUT 1 -/* This keeps a track of which one is the crashing cpu. */ -int crashing_cpu = -1; static int time_to_dump; #define CRASH_HANDLER_MAX 3 diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index 8f0c7c5..db0b339 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -486,34 +486,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs) return reg_entry; } -static u32 *fadump_append_elf_note(u32 *buf, char *name, unsigned type, - void *data, size_t data_len) -{ - struct elf_note note; - - note.n_namesz = strlen(name) + 1; - note.n_descsz = data_len; - note.n_type = type; - memcpy(buf, , sizeof(note)); - buf += (sizeof(note) + 3)/4; - memcpy(buf, name, note.n_namesz); - buf += (note.n_namesz + 3)/4; - memcpy(buf, data, note.n_descsz); - buf += (note.n_descsz + 3)/4; - - return buf; -} - -static void fadump_final_note(u32 *buf) -{ - struct elf_note note; - - note.n_namesz = 0; - note.n_descsz = 0; - note.n_type = 0; - memcpy(buf, , sizeof(note)); -} - static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) { struct elf_prstatus prstatus; @@ -524,8 +496,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) * prstatus.pr_pid = */ elf_core_copy_kernel_regs(_reg, regs); - buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, - , sizeof(prstatus)); + buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS, + , sizeof(prstatus)); return buf; } @@ -666,7 +638,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm) note_buf = fadump_regs_to_elf_notes(note_buf, ); } } - fadump_final_note(note_buf); + final_note(note_buf); if (fdh) { pr_debug("Updating elfcore header (%llx) with cpu notes\n", diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index