Просмотр исходного кода

Merge branch 'for_paulus' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc

Paul Mackerras 19 лет назад
Родитель
Сommit
877fbae3d5

+ 17 - 0
arch/powerpc/kernel/setup-common.c

@@ -524,3 +524,20 @@ int check_legacy_ioport(unsigned long base_port)
 	return ppc_md.check_legacy_ioport(base_port);
 	return ppc_md.check_legacy_ioport(base_port);
 }
 }
 EXPORT_SYMBOL(check_legacy_ioport);
 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 - 0
arch/powerpc/kernel/setup.h

@@ -2,5 +2,7 @@
 #define _POWERPC_KERNEL_SETUP_H
 #define _POWERPC_KERNEL_SETUP_H
 
 
 void check_for_initrd(void);
 void check_for_initrd(void);
+void do_init_bootmem(void);
+void setup_panic(void);
 
 
 #endif /* _POWERPC_KERNEL_SETUP_H */
 #endif /* _POWERPC_KERNEL_SETUP_H */

+ 3 - 2
arch/powerpc/kernel/setup_32.c

@@ -235,8 +235,6 @@ arch_initcall(ppc_init);
 /* Warning, IO base is not yet inited */
 /* Warning, IO base is not yet inited */
 void __init setup_arch(char **cmdline_p)
 void __init setup_arch(char **cmdline_p)
 {
 {
-	extern void do_init_bootmem(void);
-
 	/* so udelay does something sensible, assume <= 1000 bogomips */
 	/* so udelay does something sensible, assume <= 1000 bogomips */
 	loops_per_jiffy = 500000000 / HZ;
 	loops_per_jiffy = 500000000 / HZ;
 
 
@@ -285,6 +283,9 @@ void __init setup_arch(char **cmdline_p)
 	/* reboot on panic */
 	/* reboot on panic */
 	panic_timeout = 180;
 	panic_timeout = 180;
 
 
+	if (ppc_md.panic)
+		setup_panic();
+
 	init_mm.start_code = PAGE_OFFSET;
 	init_mm.start_code = PAGE_OFFSET;
 	init_mm.end_code = (unsigned long) _etext;
 	init_mm.end_code = (unsigned long) _etext;
 	init_mm.end_data = (unsigned long) _edata;
 	init_mm.end_data = (unsigned long) _edata;

+ 1 - 17
arch/powerpc/kernel/setup_64.c

@@ -100,12 +100,6 @@ unsigned long SYSRQ_KEY;
 #endif /* CONFIG_MAGIC_SYSRQ */
 #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
 #ifdef CONFIG_SMP
 
 
 static int smt_enabled_cmdline;
 static int smt_enabled_cmdline;
@@ -456,13 +450,6 @@ void __init setup_system(void)
 	DBG(" <- setup_system()\n");
 	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
 #ifdef CONFIG_IRQSTACKS
 static void __init irqstack_early_init(void)
 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)
 void __init setup_arch(char **cmdline_p)
 {
 {
-	extern void do_init_bootmem(void);
-
 	ppc64_boot_msg(0x12, "Setup Arch");
 	ppc64_boot_msg(0x12, "Setup Arch");
 
 
 	*cmdline_p = cmd_line;
 	*cmdline_p = cmd_line;
@@ -535,8 +520,7 @@ void __init setup_arch(char **cmdline_p)
 	panic_timeout = 180;
 	panic_timeout = 180;
 
 
 	if (ppc_md.panic)
 	if (ppc_md.panic)
-		atomic_notifier_chain_register(&panic_notifier_list,
-				&ppc64_panic_block);
+		setup_panic();
 
 
 	init_mm.start_code = PAGE_OFFSET;
 	init_mm.start_code = PAGE_OFFSET;
 	init_mm.end_code = (unsigned long) _etext;
 	init_mm.end_code = (unsigned long) _etext;