aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mm/mmu.c16
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 */