[PATCH 1/3] x86 e820: Check for exactmap appearance when parsing first memmap option
H. Peter Anvin
hpa at zytor.com
Wed Jan 30 11:09:11 EST 2013
Once again, what is "wrong" about this... the semantics are consistent, and breaking them when long established makes no sense.
Thomas Renninger <trenn at suse.de> wrote:
>From: Yinghai Lu <yinghai at kernel.org>
>
>memmap=exactmap will throw away all original, but also until then
>user defined (through other provided memmap= parameters) areas.
>That means all memmap= boot parameters passed before a memmap=exactmap
>parameter are not recognized.
>Without this fix:
>memmap=x at y memmap=exactmap memmap=i#k
>only i#k would get recognized.
>
>This is wrong, this fix will only throw away all original e820 areas
>once
>when memmap=exactmap is found in the whole boot command line and before
>any other memmap= option is parsed.
>
>Signed-off-by: Yinghai Lu <yinghai at kernel.org>
>Reviewed-by: Thomas Renninger <trenn at suse.de>
>---
> arch/x86/kernel/e820.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
>Index: linux-2.6/arch/x86/kernel/e820.c
>===================================================================
>--- linux-2.6.orig/arch/x86/kernel/e820.c
>+++ linux-2.6/arch/x86/kernel/e820.c
>@@ -835,6 +835,8 @@ static int __init parse_memopt(char *p)
> }
> early_param("mem", parse_memopt);
>
>+static bool __initdata exactmap_parsed;
>+
> static int __init parse_memmap_one(char *p)
> {
> char *oldp;
>@@ -844,6 +846,10 @@ static int __init parse_memmap_one(char
> return -EINVAL;
>
> if (!strncmp(p, "exactmap", 8)) {
>+ if (exactmap_parsed)
>+ return 0;
>+
>+ exactmap_parsed = true;
> #ifdef CONFIG_CRASH_DUMP
> /*
> * If we are doing a crash dump, we still need to know
>@@ -879,6 +885,12 @@ static int __init parse_memmap_one(char
> }
> static int __init parse_memmap_opt(char *str)
> {
>+ char *p = boot_command_line;
>+
>+ p = strstr(p, "exactmap");
>+ if (p)
>+ parse_memmap_one("exactmap");
>+
> while (str) {
> char *k = strchr(str, ',');
>
--
Sent from my mobile phone. Please excuse brevity and lack of formatting.
More information about the kexec
mailing list