X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=kernel%2Fcrash_dump.c;h=c766ee54c0b18bd27f87d4fcfb7f3caa24781343;hb=7c1cfacca2083db519317f49f31e143d97fd554a;hp=5f85690285d489543bf3b447d788f2ca09790d8b;hpb=e33ab8f275cf6e0e0bf6c9c44149de46222b36cc;p=~andy%2Flinux diff --git a/kernel/crash_dump.c b/kernel/crash_dump.c index 5f85690285d..c766ee54c0b 100644 --- a/kernel/crash_dump.c +++ b/kernel/crash_dump.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include /* * If we have booted due to a crash, max_pfn will be a very low value. We need @@ -19,9 +19,16 @@ unsigned long saved_max_pfn; */ unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; +/* + * stores the size of elf header of crash image + */ +unsigned long long elfcorehdr_size; + /* * elfcorehdr= specifies the location of elf core header stored by the crashed * kernel. This option will be passed by kexec loader to the capture kernel. + * + * Syntax: elfcorehdr=[size[KMG]@]offset[KMG] */ static int __init setup_elfcorehdr(char *arg) { @@ -29,6 +36,10 @@ static int __init setup_elfcorehdr(char *arg) if (!arg) return -EINVAL; elfcorehdr_addr = memparse(arg, &end); + if (*end == '@') { + elfcorehdr_size = elfcorehdr_addr; + elfcorehdr_addr = memparse(end + 1, &end); + } return end > arg ? 0 : -EINVAL; } early_param("elfcorehdr", setup_elfcorehdr);