浏览代码

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.com
Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
Reviewed-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Acked-by: Michael 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Hari Bathini 8 年之前
父节点
当前提交
22bd0177bd

+ 6 - 4
arch/powerpc/Kconfig

@@ -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.

+ 2 - 0
arch/powerpc/include/asm/fadump.h

@@ -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;

+ 0 - 2
arch/powerpc/kernel/crash.c

@@ -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

+ 3 - 31
arch/powerpc/kernel/fadump.c

@@ -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)
 	 * 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,
-				&prstatus, sizeof(prstatus));
+	buf = append_elf_note(buf, CRASH_CORE_NOTE_NAME, NT_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)
 			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",

+ 5 - 0
arch/powerpc/kernel/setup-common.c

@@ -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)
 {
 {