aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm
diff options
context:
space:
mode:
authorCyril Chemparathy <cyril@ti.com>2012-07-20 13:16:41 -0400
committerWill Deacon <will.deacon@arm.com>2013-05-30 11:02:30 -0400
commit28d4bf7a2929c5e525171d249e12662e21130ec3 (patch)
tree0d603e2c33ce17862101aa0c7e3e7a4c6c4075da /arch/arm/mm
parentadf2e9fda34c1cfff2ee4e47078b1e142adb2c30 (diff)
ARM: mm: clean up membank size limit checks
This patch cleans up the highmem sanity check code by simplifying the range checks with a pre-calculated size_limit. This patch should otherwise have no functional impact on behavior. This patch also removes a redundant (bank->start < vmalloc_limit) check, since this is already covered by the !highmem condition. Signed-off-by: Cyril Chemparathy <cyril@ti.com> Signed-off-by: Vitaly Andrianov <vitalya@ti.com> Acked-by: Nicolas Pitre <nico@linaro.org> Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Tested-by: Subash Patel <subash.rp@samsung.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r--arch/arm/mm/mmu.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index ae249d1ab1d3..280f91d02de2 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -992,10 +992,15 @@ void __init sanity_check_meminfo(void)
992 992
993 for (i = 0, j = 0; i < meminfo.nr_banks; i++) { 993 for (i = 0, j = 0; i < meminfo.nr_banks; i++) {
994 struct membank *bank = &meminfo.bank[j]; 994 struct membank *bank = &meminfo.bank[j];
995 phys_addr_t size_limit;
996
995 *bank = meminfo.bank[i]; 997 *bank = meminfo.bank[i];
998 size_limit = bank->size;
996 999
997 if (bank->start >= vmalloc_limit) 1000 if (bank->start >= vmalloc_limit)
998 highmem = 1; 1001 highmem = 1;
1002 else
1003 size_limit = vmalloc_limit - bank->start;
999 1004
1000 bank->highmem = highmem; 1005 bank->highmem = highmem;
1001 1006
@@ -1004,8 +1009,7 @@ void __init sanity_check_meminfo(void)
1004 * Split those memory banks which are partially overlapping 1009 * Split those memory banks which are partially overlapping
1005 * the vmalloc area greatly simplifying things later. 1010 * the vmalloc area greatly simplifying things later.
1006 */ 1011 */
1007 if (!highmem && bank->start < vmalloc_limit && 1012 if (!highmem && bank->size > size_limit) {
1008 bank->size > vmalloc_limit - bank->start) {
1009 if (meminfo.nr_banks >= NR_BANKS) { 1013 if (meminfo.nr_banks >= NR_BANKS) {
1010 printk(KERN_CRIT "NR_BANKS too low, " 1014 printk(KERN_CRIT "NR_BANKS too low, "
1011 "ignoring high memory\n"); 1015 "ignoring high memory\n");
@@ -1014,12 +1018,12 @@ void __init sanity_check_meminfo(void)
1014 (meminfo.nr_banks - i) * sizeof(*bank)); 1018 (meminfo.nr_banks - i) * sizeof(*bank));
1015 meminfo.nr_banks++; 1019 meminfo.nr_banks++;
1016 i++; 1020 i++;
1017 bank[1].size -= vmalloc_limit - bank->start; 1021 bank[1].size -= size_limit;
1018 bank[1].start = vmalloc_limit; 1022 bank[1].start = vmalloc_limit;
1019 bank[1].highmem = highmem = 1; 1023 bank[1].highmem = highmem = 1;
1020 j++; 1024 j++;
1021 } 1025 }
1022 bank->size = vmalloc_limit - bank->start; 1026 bank->size = size_limit;
1023 } 1027 }
1024#else 1028#else
1025 /* 1029 /*
@@ -1037,14 +1041,13 @@ void __init sanity_check_meminfo(void)
1037 * Check whether this memory bank would partially overlap 1041 * Check whether this memory bank would partially overlap
1038 * the vmalloc area. 1042 * the vmalloc area.
1039 */ 1043 */
1040 if (bank->start + bank->size > vmalloc_limit) 1044 if (bank->size > size_limit) {
1041 unsigned long newsize = vmalloc_limit - bank->start;
1042 printk(KERN_NOTICE "Truncating RAM at %.8llx-%.8llx " 1045 printk(KERN_NOTICE "Truncating RAM at %.8llx-%.8llx "
1043 "to -%.8llx (vmalloc region overlap).\n", 1046 "to -%.8llx (vmalloc region overlap).\n",
1044 (unsigned long long)bank->start, 1047 (unsigned long long)bank->start,
1045 (unsigned long long)bank->start + bank->size - 1, 1048 (unsigned long long)bank->start + bank->size - 1,
1046 (unsigned long long)bank->start + newsize - 1); 1049 (unsigned long long)bank->start + size_limit - 1);
1047 bank->size = newsize; 1050 bank->size = size_limit;
1048 } 1051 }
1049#endif 1052#endif
1050 if (!bank->highmem && bank->start + bank->size > arm_lowmem_limit) 1053 if (!bank->highmem && bank->start + bank->size > arm_lowmem_limit)