aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/e820.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/e820.c')
-rw-r--r--arch/x86/kernel/e820.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 294f26da0c0..0b5e2b54656 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -847,15 +847,21 @@ static int __init parse_memopt(char *p)
847 if (!p) 847 if (!p)
848 return -EINVAL; 848 return -EINVAL;
849 849
850#ifdef CONFIG_X86_32
851 if (!strcmp(p, "nopentium")) { 850 if (!strcmp(p, "nopentium")) {
851#ifdef CONFIG_X86_32
852 setup_clear_cpu_cap(X86_FEATURE_PSE); 852 setup_clear_cpu_cap(X86_FEATURE_PSE);
853 return 0; 853 return 0;
854 } 854#else
855 printk(KERN_WARNING "mem=nopentium ignored! (only supported on x86_32)\n");
856 return -EINVAL;
855#endif 857#endif
858 }
856 859
857 userdef = 1; 860 userdef = 1;
858 mem_size = memparse(p, &p); 861 mem_size = memparse(p, &p);
862 /* don't remove all of memory when handling "mem={invalid}" param */
863 if (mem_size == 0)
864 return -EINVAL;
859 e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1); 865 e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
860 866
861 return 0; 867 return 0;