crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elf...
[pandora-kernel.git] / arch / x86 / kernel / e820.c
index 294f26d..3e2ef84 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/init.h>
+#include <linux/crash_dump.h>
 #include <linux/bootmem.h>
 #include <linux/pfn.h>
 #include <linux/suspend.h>
@@ -667,21 +668,15 @@ __init void e820_setup_gap(void)
  * boot_params.e820_map, others are passed via SETUP_E820_EXT node of
  * linked list of struct setup_data, which is parsed here.
  */
-void __init parse_e820_ext(struct setup_data *sdata, unsigned long pa_data)
+void __init parse_e820_ext(struct setup_data *sdata)
 {
-       u32 map_len;
        int entries;
        struct e820entry *extmap;
 
        entries = sdata->len / sizeof(struct e820entry);
-       map_len = sdata->len + sizeof(struct setup_data);
-       if (map_len > PAGE_SIZE)
-               sdata = early_ioremap(pa_data, map_len);
        extmap = (struct e820entry *)(sdata->data);
        __append_e820_map(extmap, entries);
        sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
-       if (map_len > PAGE_SIZE)
-               early_iounmap(sdata, map_len);
        printk(KERN_INFO "extended physical RAM map:\n");
        e820_print_map("extended");
 }
@@ -847,15 +842,21 @@ static int __init parse_memopt(char *p)
        if (!p)
                return -EINVAL;
 
-#ifdef CONFIG_X86_32
        if (!strcmp(p, "nopentium")) {
+#ifdef CONFIG_X86_32
                setup_clear_cpu_cap(X86_FEATURE_PSE);
                return 0;
-       }
+#else
+               printk(KERN_WARNING "mem=nopentium ignored! (only supported on x86_32)\n");
+               return -EINVAL;
 #endif
+       }
 
        userdef = 1;
        mem_size = memparse(p, &p);
+       /* don't remove all of memory when handling "mem={invalid}" param */
+       if (mem_size == 0)
+               return -EINVAL;
        e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
 
        return 0;