[PATCH 1/2] Fix kernel panic in kdump on INIT

Kenji Kaneshige kaneshige.kenji at jp.fujitsu.com
Sat Sep 1 03:36:26 EDT 2007


Fix the problem that kdump on INIT causes a kernel panic if kdump
kernel image is not configured. The cause of this problem is
machine_kexec_on_init() is using printk in INIT context. It should
use ia64_mca_printk() instead.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji at jp.fujitsu.com>

---
 arch/ia64/kernel/crash.c   |    2 +-
 arch/ia64/kernel/mca_drv.h |    2 --
 include/asm-ia64/mca.h     |    2 ++
 3 files changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6.23-rc4/arch/ia64/kernel/crash.c
===================================================================
--- linux-2.6.23-rc4.orig/arch/ia64/kernel/crash.c
+++ linux-2.6.23-rc4/arch/ia64/kernel/crash.c
@@ -119,7 +119,7 @@ static void
 machine_kdump_on_init(void)
 {
 	if (!ia64_kimage) {
-		printk(KERN_NOTICE "machine_kdump_on_init(): "
+		ia64_mca_printk(KERN_NOTICE "machine_kdump_on_init(): "
 				"kdump not configured\n");
 		return;
 	}
Index: linux-2.6.23-rc4/arch/ia64/kernel/mca_drv.h
===================================================================
--- linux-2.6.23-rc4.orig/arch/ia64/kernel/mca_drv.h
+++ linux-2.6.23-rc4/arch/ia64/kernel/mca_drv.h
@@ -118,7 +118,5 @@ struct mca_table_entry {
 
 extern const struct mca_table_entry *search_mca_tables (unsigned long addr);
 extern int mca_recover_range(unsigned long);
-extern void ia64_mca_printk(const char * fmt, ...)
-	 __attribute__ ((format (printf, 1, 2)));
 extern void ia64_mlogbuf_dump(void);
 
Index: linux-2.6.23-rc4/include/asm-ia64/mca.h
===================================================================
--- linux-2.6.23-rc4.orig/include/asm-ia64/mca.h
+++ linux-2.6.23-rc4/include/asm-ia64/mca.h
@@ -151,6 +151,8 @@ extern void ia64_mca_cmc_vector_setup(vo
 extern int  ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *));
 extern void ia64_unreg_MCA_extension(void);
 extern u64 ia64_get_rnat(u64 *);
+extern void ia64_mca_printk(const char * fmt, ...)
+	 __attribute__ ((format (printf, 1, 2)));
 
 struct ia64_mca_notify_die {
 	struct ia64_sal_os_state *sos;





More information about the kexec mailing list