diff options
Diffstat (limited to 'arch/arm/mm/mmu.c')
-rw-r--r-- | arch/arm/mm/mmu.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 1935311e17fc..b836d6b2258b 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -799,6 +799,9 @@ void __init sanity_check_meminfo(void) | |||
799 | struct membank *bank = &meminfo.bank[j]; | 799 | struct membank *bank = &meminfo.bank[j]; |
800 | *bank = meminfo.bank[i]; | 800 | *bank = meminfo.bank[i]; |
801 | 801 | ||
802 | if (bank->start > ULONG_MAX) | ||
803 | highmem = 1; | ||
804 | |||
802 | #ifdef CONFIG_HIGHMEM | 805 | #ifdef CONFIG_HIGHMEM |
803 | if (__va(bank->start) >= vmalloc_min || | 806 | if (__va(bank->start) >= vmalloc_min || |
804 | __va(bank->start) < (void *)PAGE_OFFSET) | 807 | __va(bank->start) < (void *)PAGE_OFFSET) |
@@ -810,7 +813,7 @@ void __init sanity_check_meminfo(void) | |||
810 | * Split those memory banks which are partially overlapping | 813 | * Split those memory banks which are partially overlapping |
811 | * the vmalloc area greatly simplifying things later. | 814 | * the vmalloc area greatly simplifying things later. |
812 | */ | 815 | */ |
813 | if (__va(bank->start) < vmalloc_min && | 816 | if (!highmem && __va(bank->start) < vmalloc_min && |
814 | bank->size > vmalloc_min - __va(bank->start)) { | 817 | bank->size > vmalloc_min - __va(bank->start)) { |
815 | if (meminfo.nr_banks >= NR_BANKS) { | 818 | if (meminfo.nr_banks >= NR_BANKS) { |
816 | printk(KERN_CRIT "NR_BANKS too low, " | 819 | printk(KERN_CRIT "NR_BANKS too low, " |
@@ -831,6 +834,17 @@ void __init sanity_check_meminfo(void) | |||
831 | bank->highmem = highmem; | 834 | bank->highmem = highmem; |
832 | 835 | ||
833 | /* | 836 | /* |
837 | * Highmem banks not allowed with !CONFIG_HIGHMEM. | ||
838 | */ | ||
839 | if (highmem) { | ||
840 | printk(KERN_NOTICE "Ignoring RAM at %.8llx-%.8llx " | ||
841 | "(!CONFIG_HIGHMEM).\n", | ||
842 | (unsigned long long)bank->start, | ||
843 | (unsigned long long)bank->start + bank->size - 1); | ||
844 | continue; | ||
845 | } | ||
846 | |||
847 | /* | ||
834 | * Check whether this memory bank would entirely overlap | 848 | * Check whether this memory bank would entirely overlap |
835 | * the vmalloc area. | 849 | * the vmalloc area. |
836 | */ | 850 | */ |