Эх сурвалжийг харах

[IA64] Fix kernel panic in kdump on INIT

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@jp.fujitsu.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Kenji Kaneshige 17 жил өмнө
parent
commit
ac542a513b

+ 1 - 1
arch/ia64/kernel/crash.c

@@ -119,7 +119,7 @@ static void
 machine_kdump_on_init(void)
 machine_kdump_on_init(void)
 {
 {
 	if (!ia64_kimage) {
 	if (!ia64_kimage) {
-		printk(KERN_NOTICE "machine_kdump_on_init(): "
+		ia64_mca_printk(KERN_NOTICE "machine_kdump_on_init(): "
 				"kdump not configured\n");
 				"kdump not configured\n");
 		return;
 		return;
 	}
 	}

+ 0 - 2
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 const struct mca_table_entry *search_mca_tables (unsigned long addr);
 extern int mca_recover_range(unsigned long);
 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);
 extern void ia64_mlogbuf_dump(void);
 
 

+ 2 - 0
include/asm-ia64/mca.h

@@ -151,6 +151,8 @@ extern void ia64_mca_cmc_vector_setup(void);
 extern int  ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *));
 extern int  ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *));
 extern void ia64_unreg_MCA_extension(void);
 extern void ia64_unreg_MCA_extension(void);
 extern u64 ia64_get_rnat(u64 *);
 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_mca_notify_die {
 	struct ia64_sal_os_state *sos;
 	struct ia64_sal_os_state *sos;