forked from luck/tmp_suning_uos_patched
powerpc: provide ppc_md.panic() for both ppc32 & ppc64
Allow boards to provide a panic callback on ppc32. Moved the code to sets this up into setup-common.c so its shared between ppc32 & ppc64. Also moved do_init_bootmem prototype into setup.h. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
5a43ee6562
commit
7e990266c8
@ -524,3 +524,20 @@ int check_legacy_ioport(unsigned long base_port)
|
||||
return ppc_md.check_legacy_ioport(base_port);
|
||||
}
|
||||
EXPORT_SYMBOL(check_legacy_ioport);
|
||||
|
||||
static int ppc_panic_event(struct notifier_block *this,
|
||||
unsigned long event, void *ptr)
|
||||
{
|
||||
ppc_md.panic(ptr); /* May not return */
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block ppc_panic_block = {
|
||||
.notifier_call = ppc_panic_event,
|
||||
.priority = INT_MIN /* may not return; must be done last */
|
||||
};
|
||||
|
||||
void __init setup_panic(void)
|
||||
{
|
||||
atomic_notifier_chain_register(&panic_notifier_list, &ppc_panic_block);
|
||||
}
|
||||
|
@ -2,5 +2,7 @@
|
||||
#define _POWERPC_KERNEL_SETUP_H
|
||||
|
||||
void check_for_initrd(void);
|
||||
void do_init_bootmem(void);
|
||||
void setup_panic(void);
|
||||
|
||||
#endif /* _POWERPC_KERNEL_SETUP_H */
|
||||
|
@ -235,8 +235,6 @@ arch_initcall(ppc_init);
|
||||
/* Warning, IO base is not yet inited */
|
||||
void __init setup_arch(char **cmdline_p)
|
||||
{
|
||||
extern void do_init_bootmem(void);
|
||||
|
||||
/* so udelay does something sensible, assume <= 1000 bogomips */
|
||||
loops_per_jiffy = 500000000 / HZ;
|
||||
|
||||
@ -285,6 +283,9 @@ void __init setup_arch(char **cmdline_p)
|
||||
/* reboot on panic */
|
||||
panic_timeout = 180;
|
||||
|
||||
if (ppc_md.panic)
|
||||
setup_panic();
|
||||
|
||||
init_mm.start_code = PAGE_OFFSET;
|
||||
init_mm.end_code = (unsigned long) _etext;
|
||||
init_mm.end_data = (unsigned long) _edata;
|
||||
|
@ -100,12 +100,6 @@ unsigned long SYSRQ_KEY;
|
||||
#endif /* CONFIG_MAGIC_SYSRQ */
|
||||
|
||||
|
||||
static int ppc64_panic_event(struct notifier_block *, unsigned long, void *);
|
||||
static struct notifier_block ppc64_panic_block = {
|
||||
.notifier_call = ppc64_panic_event,
|
||||
.priority = INT_MIN /* may not return; must be done last */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
static int smt_enabled_cmdline;
|
||||
@ -456,13 +450,6 @@ void __init setup_system(void)
|
||||
DBG(" <- setup_system()\n");
|
||||
}
|
||||
|
||||
static int ppc64_panic_event(struct notifier_block *this,
|
||||
unsigned long event, void *ptr)
|
||||
{
|
||||
ppc_md.panic((char *)ptr); /* May not return */
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IRQSTACKS
|
||||
static void __init irqstack_early_init(void)
|
||||
{
|
||||
@ -517,8 +504,6 @@ static void __init emergency_stack_init(void)
|
||||
*/
|
||||
void __init setup_arch(char **cmdline_p)
|
||||
{
|
||||
extern void do_init_bootmem(void);
|
||||
|
||||
ppc64_boot_msg(0x12, "Setup Arch");
|
||||
|
||||
*cmdline_p = cmd_line;
|
||||
@ -535,8 +520,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
panic_timeout = 180;
|
||||
|
||||
if (ppc_md.panic)
|
||||
atomic_notifier_chain_register(&panic_notifier_list,
|
||||
&ppc64_panic_block);
|
||||
setup_panic();
|
||||
|
||||
init_mm.start_code = PAGE_OFFSET;
|
||||
init_mm.end_code = (unsigned long) _etext;
|
||||
|
Loading…
Reference in New Issue
Block a user