lkml.org 
[lkml]   [2012]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 46/46] x86, mm: Let "memmap=" take more entries one time
    Date
    Current "memmap=" only can take one entry every time.
    when we have more entries, we have to use memmap= for each of them.

    For pxe booting, we have command line length limitation, those extra
    "memmap=" would waste too much space.

    This patch make memmap= could take several entries one time,
    and those entries will be split with ','

    -v2: add doc in kernel-parameters.txt according to Konard.

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ---
    Documentation/kernel-parameters.txt | 7 +++++++
    arch/x86/kernel/e820.c | 16 +++++++++++++++-
    2 files changed, 22 insertions(+), 1 deletions(-)

    diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
    index 9776f06..11c4125 100644
    --- a/Documentation/kernel-parameters.txt
    +++ b/Documentation/kernel-parameters.txt
    @@ -1514,6 +1514,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
    or
    memmap=0x10000$0x18690000

    + memmap=option[,option...] [KNL,X86] various options together
    + option could be
    + exactmap
    + nn[KMG]@ss[KMG]
    + nn[KMG]#ss[KMG]
    + nn[KMG]$ss[KMG]
    +
    memory_corruption_check=0/1 [X86]
    Some BIOSes seem to corrupt the first 64k of
    memory when doing things like suspend/resume.
    diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
    index df06ade..d32abea 100644
    --- a/arch/x86/kernel/e820.c
    +++ b/arch/x86/kernel/e820.c
    @@ -835,7 +835,7 @@ static int __init parse_memopt(char *p)
    }
    early_param("mem", parse_memopt);

    -static int __init parse_memmap_opt(char *p)
    +static int __init parse_memmap_one(char *p)
    {
    char *oldp;
    u64 start_at, mem_size;
    @@ -877,6 +877,20 @@ static int __init parse_memmap_opt(char *p)

    return *p == '\0' ? 0 : -EINVAL;
    }
    +static int __init parse_memmap_opt(char *str)
    +{
    + while (str) {
    + char *k = strchr(str, ',');
    +
    + if (k)
    + *k++ = 0;
    +
    + parse_memmap_one(str);
    + str = k;
    + }
    +
    + return 0;
    +}
    early_param("memmap", parse_memmap_opt);

    void __init finish_e820_parsing(void)
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-11-29 01:01    [W:4.110 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site