|
@@ -763,15 +763,12 @@ static void __init sanity_check_meminfo(void)
|
|
|
{
|
|
|
int i, j, highmem = 0;
|
|
|
|
|
|
- lowmem_limit = __pa(vmalloc_min - 1) + 1;
|
|
|
- memblock_set_current_limit(lowmem_limit);
|
|
|
-
|
|
|
for (i = 0, j = 0; i < meminfo.nr_banks; i++) {
|
|
|
struct membank *bank = &meminfo.bank[j];
|
|
|
*bank = meminfo.bank[i];
|
|
|
|
|
|
#ifdef CONFIG_HIGHMEM
|
|
|
- if (__va(bank->start) > vmalloc_min ||
|
|
|
+ if (__va(bank->start) >= vmalloc_min ||
|
|
|
__va(bank->start) < (void *)PAGE_OFFSET)
|
|
|
highmem = 1;
|
|
|
|
|
@@ -829,6 +826,9 @@ static void __init sanity_check_meminfo(void)
|
|
|
bank->size = newsize;
|
|
|
}
|
|
|
#endif
|
|
|
+ if (!bank->highmem && bank->start + bank->size > lowmem_limit)
|
|
|
+ lowmem_limit = bank->start + bank->size;
|
|
|
+
|
|
|
j++;
|
|
|
}
|
|
|
#ifdef CONFIG_HIGHMEM
|
|
@@ -852,6 +852,7 @@ static void __init sanity_check_meminfo(void)
|
|
|
}
|
|
|
#endif
|
|
|
meminfo.nr_banks = j;
|
|
|
+ memblock_set_current_limit(lowmem_limit);
|
|
|
}
|
|
|
|
|
|
static inline void prepare_page_table(void)
|