Merge tag 'brcmstb-smp-uart-for-3.19' of http://github.com/brcm/linux into next/soc
[cascardo/linux.git] / kernel / kexec.c
index 2bee072..2abf9f6 100644 (file)
@@ -1759,7 +1759,6 @@ static __initdata char *suffix_tbl[] = {
  */
 static int __init parse_crashkernel_suffix(char *cmdline,
                                           unsigned long long   *crash_size,
-                                          unsigned long long   *crash_base,
                                           const char *suffix)
 {
        char *cur = cmdline;
@@ -1848,7 +1847,7 @@ static int __init __parse_crashkernel(char *cmdline,
 
        if (suffix)
                return parse_crashkernel_suffix(ck_cmdline, crash_size,
-                               crash_base, suffix);
+                               suffix);
        /*
         * if the commandline contains a ':', then that's the extended
         * syntax -- if not, it must be the classic syntax
@@ -2016,22 +2015,6 @@ static int __init crash_save_vmcoreinfo_init(void)
 subsys_initcall(crash_save_vmcoreinfo_init);
 
 #ifdef CONFIG_KEXEC_FILE
-static int __kexec_add_segment(struct kimage *image, char *buf,
-                              unsigned long bufsz, unsigned long mem,
-                              unsigned long memsz)
-{
-       struct kexec_segment *ksegment;
-
-       ksegment = &image->segment[image->nr_segments];
-       ksegment->kbuf = buf;
-       ksegment->bufsz = bufsz;
-       ksegment->mem = mem;
-       ksegment->memsz = memsz;
-       image->nr_segments++;
-
-       return 0;
-}
-
 static int locate_mem_hole_top_down(unsigned long start, unsigned long end,
                                    struct kexec_buf *kbuf)
 {
@@ -2064,8 +2047,7 @@ static int locate_mem_hole_top_down(unsigned long start, unsigned long end,
        } while (1);
 
        /* If we are here, we found a suitable memory range */
-       __kexec_add_segment(image, kbuf->buffer, kbuf->bufsz, temp_start,
-                           kbuf->memsz);
+       kbuf->mem = temp_start;
 
        /* Success, stop navigating through remaining System RAM ranges */
        return 1;
@@ -2099,8 +2081,7 @@ static int locate_mem_hole_bottom_up(unsigned long start, unsigned long end,
        } while (1);
 
        /* If we are here, we found a suitable memory range */
-       __kexec_add_segment(image, kbuf->buffer, kbuf->bufsz, temp_start,
-                           kbuf->memsz);
+       kbuf->mem = temp_start;
 
        /* Success, stop navigating through remaining System RAM ranges */
        return 1;
@@ -2187,7 +2168,12 @@ int kexec_add_buffer(struct kimage *image, char *buffer, unsigned long bufsz,
        }
 
        /* Found a suitable memory range */
-       ksegment = &image->segment[image->nr_segments - 1];
+       ksegment = &image->segment[image->nr_segments];
+       ksegment->kbuf = kbuf->buffer;
+       ksegment->bufsz = kbuf->bufsz;
+       ksegment->mem = kbuf->mem;
+       ksegment->memsz = kbuf->memsz;
+       image->nr_segments++;
        *load_addr = ksegment->mem;
        return 0;
 }