diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2007-09-01 03:36:26 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-10-12 18:24:06 -0400 |
commit | ac542a513bd7905fa1a700881e0a40a94d3ed46a (patch) | |
tree | f30df9f5604a68fa759b0e9337bb55d577ede35a | |
parent | a62c9fe4637f62e3901f8268778dbc8100281d40 (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.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/mca_drv.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/mca.h | 2 |
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 | |||
119 | machine_kdump_on_init(void) | 119 | machine_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 | ||
119 | extern const struct mca_table_entry *search_mca_tables (unsigned long addr); | 119 | extern const struct mca_table_entry *search_mca_tables (unsigned long addr); |
120 | extern int mca_recover_range(unsigned long); | 120 | extern int mca_recover_range(unsigned long); |
121 | extern void ia64_mca_printk(const char * fmt, ...) | ||
122 | __attribute__ ((format (printf, 1, 2))); | ||
123 | extern void ia64_mlogbuf_dump(void); | 121 | extern 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); | |||
151 | extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); | 151 | extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); |
152 | extern void ia64_unreg_MCA_extension(void); | 152 | extern void ia64_unreg_MCA_extension(void); |
153 | extern u64 ia64_get_rnat(u64 *); | 153 | extern u64 ia64_get_rnat(u64 *); |
154 | extern void ia64_mca_printk(const char * fmt, ...) | ||
155 | __attribute__ ((format (printf, 1, 2))); | ||
154 | 156 | ||
155 | struct ia64_mca_notify_die { | 157 | struct ia64_mca_notify_die { |
156 | struct ia64_sal_os_state *sos; | 158 | struct ia64_sal_os_state *sos; |