Skip to content

Commit

Permalink
ARM: mm: clean up membank size limit checks
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Cyril Chemparathy authored and Will Deacon committed May 30, 2013
1 parent adf2e9f commit 28d4bf7
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions arch/arm/mm/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -992,10 +992,15 @@ void __init sanity_check_meminfo(void)

for (i = 0, j = 0; i < meminfo.nr_banks; i++) {
struct membank *bank = &meminfo.bank[j];
phys_addr_t size_limit;

*bank = meminfo.bank[i];
size_limit = bank->size;

if (bank->start >= vmalloc_limit)
highmem = 1;
else
size_limit = vmalloc_limit - bank->start;

bank->highmem = highmem;

Expand All @@ -1004,8 +1009,7 @@ void __init sanity_check_meminfo(void)
* Split those memory banks which are partially overlapping
* the vmalloc area greatly simplifying things later.
*/
if (!highmem && bank->start < vmalloc_limit &&
bank->size > vmalloc_limit - bank->start) {
if (!highmem && bank->size > size_limit) {
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_CRIT "NR_BANKS too low, "
"ignoring high memory\n");
Expand All @@ -1014,12 +1018,12 @@ void __init sanity_check_meminfo(void)
(meminfo.nr_banks - i) * sizeof(*bank));
meminfo.nr_banks++;
i++;
bank[1].size -= vmalloc_limit - bank->start;
bank[1].size -= size_limit;
bank[1].start = vmalloc_limit;
bank[1].highmem = highmem = 1;
j++;
}
bank->size = vmalloc_limit - bank->start;
bank->size = size_limit;
}
#else
/*
Expand All @@ -1037,14 +1041,13 @@ void __init sanity_check_meminfo(void)
* Check whether this memory bank would partially overlap
* the vmalloc area.
*/
if (bank->start + bank->size > vmalloc_limit)
unsigned long newsize = vmalloc_limit - bank->start;
if (bank->size > size_limit) {
printk(KERN_NOTICE "Truncating RAM at %.8llx-%.8llx "
"to -%.8llx (vmalloc region overlap).\n",
(unsigned long long)bank->start,
(unsigned long long)bank->start + bank->size - 1,
(unsigned long long)bank->start + newsize - 1);
bank->size = newsize;
(unsigned long long)bank->start + size_limit - 1);
bank->size = size_limit;
}
#endif
if (!bank->highmem && bank->start + bank->size > arm_lowmem_limit)
Expand Down

0 comments on commit 28d4bf7

Please sign in to comment.