diff options
author | Bernhard Walle <bwalle@suse.de> | 2008-06-25 15:39:16 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 07:15:59 -0400 |
commit | 611dfd7819e525b45f39ff15e0faf5f23551c113 (patch) | |
tree | 783d29952038b4edaec54fa63a8d437921026530 /arch | |
parent | 8207c2570af6f819b61be9ef3fb298d0a8c0e18c (diff) |
x86: limit E820 map when a user-defined memory map is specified
This patch brings back limiting of the E820 map when a user-defined
E820 map is specified. While the behaviour of i386 (32 bit) was to limit
the E820 map (and /proc/iomem), the behaviour of x86-64 (64 bit) was not to
limit.
That patch limits the E820 map again for both x86 architectures.
Code was tested for compilation and booting on a 32 bit and 64 bit system.
Signed-off-by: Bernhard Walle <bwalle@suse.de>
Acked-by: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: kexec@lists.infradead.org
Cc: vgoyal@redhat.com
Cc: Bernhard Walle <bwalle@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/e820.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 1dcb66533dfc..7b7685b78852 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -1117,6 +1117,9 @@ static int __init parse_memopt(char *p) | |||
1117 | 1117 | ||
1118 | mem_size = memparse(p, &p); | 1118 | mem_size = memparse(p, &p); |
1119 | end_user_pfn = mem_size>>PAGE_SHIFT; | 1119 | end_user_pfn = mem_size>>PAGE_SHIFT; |
1120 | e820_update_range(mem_size, ULLONG_MAX - mem_size, | ||
1121 | E820_RAM, E820_RESERVED); | ||
1122 | |||
1120 | return 0; | 1123 | return 0; |
1121 | } | 1124 | } |
1122 | early_param("mem", parse_memopt); | 1125 | early_param("mem", parse_memopt); |
@@ -1161,6 +1164,8 @@ static int __init parse_memmap_opt(char *p) | |||
1161 | e820_add_region(start_at, mem_size, E820_RESERVED); | 1164 | e820_add_region(start_at, mem_size, E820_RESERVED); |
1162 | } else { | 1165 | } else { |
1163 | end_user_pfn = (mem_size >> PAGE_SHIFT); | 1166 | end_user_pfn = (mem_size >> PAGE_SHIFT); |
1167 | e820_update_range(mem_size, ULLONG_MAX - mem_size, | ||
1168 | E820_RAM, E820_RESERVED); | ||
1164 | } | 1169 | } |
1165 | return *p == '\0' ? 0 : -EINVAL; | 1170 | return *p == '\0' ? 0 : -EINVAL; |
1166 | } | 1171 | } |