Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
[safe/jmp/linux-2.6] / arch / powerpc / kernel / crash_dump.c
index 87effa3..9ee3c52 100644 (file)
@@ -13,8 +13,9 @@
 
 #include <linux/crash_dump.h>
 #include <linux/bootmem.h>
+#include <linux/lmb.h>
 #include <asm/kdump.h>
-#include <asm/lmb.h>
+#include <asm/prom.h>
 #include <asm/firmware.h>
 #include <asm/uaccess.h>
 
 #define DBG(fmt...)
 #endif
 
+void __init reserve_kdump_trampoline(void)
+{
+       lmb_reserve(0, KDUMP_RESERVE_LIMIT);
+}
+
 static void __init create_trampoline(unsigned long addr)
 {
        /* The maximum range of a single instruction branch, is the current
@@ -39,41 +45,45 @@ static void __init create_trampoline(unsigned long addr)
        create_branch(addr + 4, addr + PHYSICAL_START, 0);
 }
 
-void __init kdump_setup(void)
+void __init setup_kdump_trampoline(void)
 {
        unsigned long i;
 
-       DBG(" -> kdump_setup()\n");
+       DBG(" -> setup_kdump_trampoline()\n");
 
        for (i = KDUMP_TRAMPOLINE_START; i < KDUMP_TRAMPOLINE_END; i += 8) {
                create_trampoline(i);
        }
 
+#ifdef CONFIG_PPC_PSERIES
        create_trampoline(__pa(system_reset_fwnmi) - PHYSICAL_START);
        create_trampoline(__pa(machine_check_fwnmi) - PHYSICAL_START);
+#endif /* CONFIG_PPC_PSERIES */
 
-       DBG(" <- kdump_setup()\n");
+       DBG(" <- setup_kdump_trampoline()\n");
 }
 
+#ifdef CONFIG_PROC_VMCORE
 static int __init parse_elfcorehdr(char *p)
 {
        if (p)
                elfcorehdr_addr = memparse(p, &p);
 
-       return 0;
+       return 1;
 }
 __setup("elfcorehdr=", parse_elfcorehdr);
+#endif
 
 static int __init parse_savemaxmem(char *p)
 {
        if (p)
                saved_max_pfn = (memparse(p, &p) >> PAGE_SHIFT) - 1;
 
-       return 0;
+       return 1;
 }
 __setup("savemaxmem=", parse_savemaxmem);
 
-/*
+/**
  * copy_oldmem_page - copy one page from "oldmem"
  * @pfn: page frame number to be copied
  * @buf: target memory address for the copy; this can be in kernel address