diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/kexec.h | 3 | ||||
-rw-r--r-- | arch/arm/kernel/machine_kexec.c | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/include/asm/kexec.h b/arch/arm/include/asm/kexec.h index c0094d8edae4..c2b9b4bdec00 100644 --- a/arch/arm/include/asm/kexec.h +++ b/arch/arm/include/asm/kexec.h | |||
@@ -50,6 +50,9 @@ static inline void crash_setup_regs(struct pt_regs *newregs, | |||
50 | } | 50 | } |
51 | } | 51 | } |
52 | 52 | ||
53 | /* Function pointer to optional machine-specific reinitialization */ | ||
54 | extern void (*kexec_reinit)(void); | ||
55 | |||
53 | #endif /* __ASSEMBLY__ */ | 56 | #endif /* __ASSEMBLY__ */ |
54 | 57 | ||
55 | #endif /* CONFIG_KEXEC */ | 58 | #endif /* CONFIG_KEXEC */ |
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index 30ead135ff5f..e59bbd496c39 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c | |||
@@ -75,6 +75,11 @@ void machine_crash_shutdown(struct pt_regs *regs) | |||
75 | printk(KERN_INFO "Loading crashdump kernel...\n"); | 75 | printk(KERN_INFO "Loading crashdump kernel...\n"); |
76 | } | 76 | } |
77 | 77 | ||
78 | /* | ||
79 | * Function pointer to optional machine-specific reinitialization | ||
80 | */ | ||
81 | void (*kexec_reinit)(void); | ||
82 | |||
78 | void machine_kexec(struct kimage *image) | 83 | void machine_kexec(struct kimage *image) |
79 | { | 84 | { |
80 | unsigned long page_list; | 85 | unsigned long page_list; |
@@ -104,6 +109,8 @@ void machine_kexec(struct kimage *image) | |||
104 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); | 109 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); |
105 | printk(KERN_INFO "Bye!\n"); | 110 | printk(KERN_INFO "Bye!\n"); |
106 | 111 | ||
112 | if (kexec_reinit) | ||
113 | kexec_reinit(); | ||
107 | local_irq_disable(); | 114 | local_irq_disable(); |
108 | local_fiq_disable(); | 115 | local_fiq_disable(); |
109 | setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ | 116 | setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ |