Commit 22bd0177 authored by Hari Bathini's avatar Hari Bathini Committed by Linus Torvalds

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.

Link: http://lkml.kernel.org/r/149035343956.6881.1536459326017709354.stgit@hbathini.in.ibm.comSigned-off-by: default avatarHari Bathini <hbathini@linux.vnet.ibm.com>
Reviewed-by: default avatarMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Acked-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 51dbd925
...@@ -571,21 +571,23 @@ config RELOCATABLE_TEST ...@@ -571,21 +571,23 @@ config RELOCATABLE_TEST
relocation code. relocation code.
config CRASH_DUMP config CRASH_DUMP
bool "Build a kdump crash kernel" bool "Build a dump capture kernel"
depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP) depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
select RELOCATABLE if PPC64 || 44x || FSL_BOOKE select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
help 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 The same kernel binary can be used as production kernel and dump
capture kernel. capture kernel.
config FA_DUMP config FA_DUMP
bool "Firmware-assisted 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 help
A robust mechanism to get reliable kernel crash dump with A robust mechanism to get reliable kernel crash dump with
assistance from firmware. This approach does not use kexec, 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 while preserving memory contents. Firmware-assisted dump
is meant to be a kdump replacement offering robustness and is meant to be a kdump replacement offering robustness and
speed not possible without system firmware assistance. speed not possible without system firmware assistance.
......
...@@ -73,6 +73,8 @@ ...@@ -73,6 +73,8 @@
reg_entry++; \ reg_entry++; \
}) })
extern int crashing_cpu;
/* Kernel Dump section info */ /* Kernel Dump section info */
struct fadump_section { struct fadump_section {
__be32 request_flag; __be32 request_flag;
......
...@@ -43,8 +43,6 @@ ...@@ -43,8 +43,6 @@
#define IPI_TIMEOUT 10000 #define IPI_TIMEOUT 10000
#define REAL_MODE_TIMEOUT 10000 #define REAL_MODE_TIMEOUT 10000
/* This keeps a track of which one is the crashing cpu. */
int crashing_cpu = -1;
static int time_to_dump; static int time_to_dump;
#define CRASH_HANDLER_MAX 3 #define CRASH_HANDLER_MAX 3
......
...@@ -527,34 +527,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs) ...@@ -527,34 +527,6 @@ fadump_read_registers(struct fadump_reg_entry *reg_entry, struct pt_regs *regs)
return reg_entry; 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, &note, 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, &note, sizeof(note));
}
static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs)
{ {
struct elf_prstatus prstatus; struct elf_prstatus prstatus;
...@@ -565,8 +537,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs) ...@@ -565,8 +537,8 @@ static u32 *fadump_regs_to_elf_notes(u32 *buf, struct pt_regs *regs)
* prstatus.pr_pid = ???? * prstatus.pr_pid = ????
*/ */
elf_core_copy_kernel_regs(&prstatus.pr_reg, regs); elf_core_copy_kernel_regs(&prstatus.pr_reg, regs);
buf = fadump_append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_PRSTATUS,
&prstatus, sizeof(prstatus)); &prstatus, sizeof(prstatus));
return buf; return buf;
} }
...@@ -707,7 +679,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm) ...@@ -707,7 +679,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm)
note_buf = fadump_regs_to_elf_notes(note_buf, &regs); note_buf = fadump_regs_to_elf_notes(note_buf, &regs);
} }
} }
fadump_final_note(note_buf); final_note(note_buf);
if (fdh) { if (fdh) {
pr_debug("Updating elfcore header (%llx) with cpu notes\n", pr_debug("Updating elfcore header (%llx) with cpu notes\n",
......
...@@ -125,6 +125,11 @@ int ppc_do_canonicalize_irqs; ...@@ -125,6 +125,11 @@ int ppc_do_canonicalize_irqs;
EXPORT_SYMBOL(ppc_do_canonicalize_irqs); EXPORT_SYMBOL(ppc_do_canonicalize_irqs);
#endif #endif
#ifdef CONFIG_CRASH_CORE
/* This keeps a track of which one is the crashing cpu. */
int crashing_cpu = -1;
#endif
/* also used by kexec */ /* also used by kexec */
void machine_shutdown(void) void machine_shutdown(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment