diff options
Diffstat (limited to 'arch/powerpc/kernel/setup-common.c')
-rw-r--r-- | arch/powerpc/kernel/setup-common.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 77bb77da05c1..b0ebdeab9494 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -61,6 +61,7 @@ | |||
61 | #include <asm/xmon.h> | 61 | #include <asm/xmon.h> |
62 | #include <asm/cputhreads.h> | 62 | #include <asm/cputhreads.h> |
63 | #include <mm/mmu_decl.h> | 63 | #include <mm/mmu_decl.h> |
64 | #include <asm/fadump.h> | ||
64 | 65 | ||
65 | #include "setup.h" | 66 | #include "setup.h" |
66 | 67 | ||
@@ -109,6 +110,14 @@ EXPORT_SYMBOL(ppc_do_canonicalize_irqs); | |||
109 | /* also used by kexec */ | 110 | /* also used by kexec */ |
110 | void machine_shutdown(void) | 111 | void machine_shutdown(void) |
111 | { | 112 | { |
113 | #ifdef CONFIG_FA_DUMP | ||
114 | /* | ||
115 | * if fadump is active, cleanup the fadump registration before we | ||
116 | * shutdown. | ||
117 | */ | ||
118 | fadump_cleanup(); | ||
119 | #endif | ||
120 | |||
112 | if (ppc_md.machine_shutdown) | 121 | if (ppc_md.machine_shutdown) |
113 | ppc_md.machine_shutdown(); | 122 | ppc_md.machine_shutdown(); |
114 | } | 123 | } |
@@ -639,6 +648,11 @@ EXPORT_SYMBOL(check_legacy_ioport); | |||
639 | static int ppc_panic_event(struct notifier_block *this, | 648 | static int ppc_panic_event(struct notifier_block *this, |
640 | unsigned long event, void *ptr) | 649 | unsigned long event, void *ptr) |
641 | { | 650 | { |
651 | /* | ||
652 | * If firmware-assisted dump has been registered then trigger | ||
653 | * firmware-assisted dump and let firmware handle everything else. | ||
654 | */ | ||
655 | crash_fadump(NULL, ptr); | ||
642 | ppc_md.panic(ptr); /* May not return */ | 656 | ppc_md.panic(ptr); /* May not return */ |
643 | return NOTIFY_DONE; | 657 | return NOTIFY_DONE; |
644 | } | 658 | } |