aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>2007-09-01 03:36:26 -0400
committerTony Luck <tony.luck@intel.com>2007-10-12 18:24:06 -0400
commitac542a513bd7905fa1a700881e0a40a94d3ed46a (patch)
treef30df9f5604a68fa759b0e9337bb55d577ede35a
parenta62c9fe4637f62e3901f8268778dbc8100281d40 (diff)
[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>
-rw-r--r--arch/ia64/kernel/crash.c2
-rw-r--r--arch/ia64/kernel/mca_drv.h2
-rw-r--r--include/asm-ia64/mca.h2
3 files changed, 3 insertions, 3 deletions
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index 1d64ef478dde..b2367dd66766 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -119,7 +119,7 @@ static void
119machine_kdump_on_init(void) 119machine_kdump_on_init(void)
120{ 120{
121 if (!ia64_kimage) { 121 if (!ia64_kimage) {
122 printk(KERN_NOTICE "machine_kdump_on_init(): " 122 ia64_mca_printk(KERN_NOTICE "machine_kdump_on_init(): "
123 "kdump not configured\n"); 123 "kdump not configured\n");
124 return; 124 return;
125 } 125 }
diff --git a/arch/ia64/kernel/mca_drv.h b/arch/ia64/kernel/mca_drv.h
index c85e943ba5fd..485e34d0b199 100644
--- a/arch/ia64/kernel/mca_drv.h
+++ b/arch/ia64/kernel/mca_drv.h
@@ -118,7 +118,5 @@ struct mca_table_entry {
118 118
119extern const struct mca_table_entry *search_mca_tables (unsigned long addr); 119extern const struct mca_table_entry *search_mca_tables (unsigned long addr);
120extern int mca_recover_range(unsigned long); 120extern int mca_recover_range(unsigned long);
121extern void ia64_mca_printk(const char * fmt, ...)
122 __attribute__ ((format (printf, 1, 2)));
123extern void ia64_mlogbuf_dump(void); 121extern void ia64_mlogbuf_dump(void);
124 122
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h
index edd5d01028df..823553bf12e6 100644
--- a/include/asm-ia64/mca.h
+++ b/include/asm-ia64/mca.h
@@ -151,6 +151,8 @@ extern void ia64_mca_cmc_vector_setup(void);
151extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); 151extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *));
152extern void ia64_unreg_MCA_extension(void); 152extern void ia64_unreg_MCA_extension(void);
153extern u64 ia64_get_rnat(u64 *); 153extern u64 ia64_get_rnat(u64 *);
154extern void ia64_mca_printk(const char * fmt, ...)
155 __attribute__ ((format (printf, 1, 2)));
154 156
155struct ia64_mca_notify_die { 157struct ia64_mca_notify_die {
156 struct ia64_sal_os_state *sos; 158 struct ia64_sal_os_state *sos;