aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/setup-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/setup-common.c')
-rw-r--r--arch/powerpc/kernel/setup-common.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 2075322cd225..9d213542a48b 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -704,6 +704,30 @@ int check_legacy_ioport(unsigned long base_port)
704} 704}
705EXPORT_SYMBOL(check_legacy_ioport); 705EXPORT_SYMBOL(check_legacy_ioport);
706 706
707static int ppc_panic_event(struct notifier_block *this,
708 unsigned long event, void *ptr)
709{
710 /*
711 * If firmware-assisted dump has been registered then trigger
712 * firmware-assisted dump and let firmware handle everything else.
713 */
714 crash_fadump(NULL, ptr);
715 ppc_md.panic(ptr); /* May not return */
716 return NOTIFY_DONE;
717}
718
719static struct notifier_block ppc_panic_block = {
720 .notifier_call = ppc_panic_event,
721 .priority = INT_MIN /* may not return; must be done last */
722};
723
724void __init setup_panic(void)
725{
726 if (!ppc_md.panic)
727 return;
728 atomic_notifier_chain_register(&panic_notifier_list, &ppc_panic_block);
729}
730
707#ifdef CONFIG_CHECK_CACHE_COHERENCY 731#ifdef CONFIG_CHECK_CACHE_COHERENCY
708/* 732/*
709 * For platforms that have configurable cache-coherency. This function 733 * For platforms that have configurable cache-coherency. This function
@@ -848,6 +872,9 @@ void __init setup_arch(char **cmdline_p)
848 /* Probe the machine type, establish ppc_md. */ 872 /* Probe the machine type, establish ppc_md. */
849 probe_machine(); 873 probe_machine();
850 874
875 /* Setup panic notifier if requested by the platform. */
876 setup_panic();
877
851 /* 878 /*
852 * Configure ppc_md.power_save (ppc32 only, 64-bit machines do 879 * Configure ppc_md.power_save (ppc32 only, 64-bit machines do
853 * it from their respective probe() function. 880 * it from their respective probe() function.