diff options
author | akpm@osdl.org <akpm@osdl.org> | 2006-01-09 23:51:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-10 11:01:27 -0500 |
commit | 69cda7b1f06befb8d6a884b8a663d19dcaef590b (patch) | |
tree | 95896c7ca9ab089b24463afd455fdde15a14c3dd /arch/x86_64/kernel/e820.c | |
parent | bf2083050d7879390ddedbd64e431cf167854a34 (diff) |
[PATCH] kdump: x86_64: add memmmap command line option
)
From: Vivek Goyal <vgoyal@in.ibm.com>
- This patch introduces the memmap option for x86_64 similar to i386.
- memmap=exactmap enables setting of an exact E820 memory map, as specified
by the user.
Changes in this version:
- Used e820_end_of_ram() to find the max_pfn as suggested by Andi kleen.
- removed PFN_UP & PFN_DOWN macros
- Printing the user defined map also.
Signed-off-by: Murali M Chakravarthy <muralim@in.ibm.com>
Signed-off-by: Hariprasad Nellitheertha <nharipra@gmail.com>
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/e820.c')
-rw-r--r-- | arch/x86_64/kernel/e820.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c index 17579a1a174b..293cd71a266a 100644 --- a/arch/x86_64/kernel/e820.c +++ b/arch/x86_64/kernel/e820.c | |||
@@ -559,6 +559,27 @@ void __init parse_memopt(char *p, char **from) | |||
559 | end_user_pfn >>= PAGE_SHIFT; | 559 | end_user_pfn >>= PAGE_SHIFT; |
560 | } | 560 | } |
561 | 561 | ||
562 | void __init parse_memmapopt(char *p, char **from) | ||
563 | { | ||
564 | unsigned long long start_at, mem_size; | ||
565 | |||
566 | mem_size = memparse(p, from); | ||
567 | p = *from; | ||
568 | if (*p == '@') { | ||
569 | start_at = memparse(p+1, from); | ||
570 | add_memory_region(start_at, mem_size, E820_RAM); | ||
571 | } else if (*p == '#') { | ||
572 | start_at = memparse(p+1, from); | ||
573 | add_memory_region(start_at, mem_size, E820_ACPI); | ||
574 | } else if (*p == '$') { | ||
575 | start_at = memparse(p+1, from); | ||
576 | add_memory_region(start_at, mem_size, E820_RESERVED); | ||
577 | } else { | ||
578 | end_user_pfn = (mem_size >> PAGE_SHIFT); | ||
579 | } | ||
580 | p = *from; | ||
581 | } | ||
582 | |||
562 | unsigned long pci_mem_start = 0xaeedbabe; | 583 | unsigned long pci_mem_start = 0xaeedbabe; |
563 | 584 | ||
564 | /* | 585 | /* |