|
@@ -272,59 +272,17 @@ static void __init free_unused_memmap(void)
|
|
|
*/
|
|
|
void __init mem_init(void)
|
|
|
{
|
|
|
- unsigned long reserved_pages, free_pages;
|
|
|
- struct memblock_region *reg;
|
|
|
-
|
|
|
arm64_swiotlb_init();
|
|
|
|
|
|
max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map;
|
|
|
|
|
|
#ifndef CONFIG_SPARSEMEM_VMEMMAP
|
|
|
- /* this will put all unused low memory onto the freelists */
|
|
|
free_unused_memmap();
|
|
|
#endif
|
|
|
-
|
|
|
+ /* this will put all unused low memory onto the freelists */
|
|
|
free_all_bootmem();
|
|
|
|
|
|
- reserved_pages = free_pages = 0;
|
|
|
-
|
|
|
- for_each_memblock(memory, reg) {
|
|
|
- unsigned int pfn1, pfn2;
|
|
|
- struct page *page, *end;
|
|
|
-
|
|
|
- pfn1 = __phys_to_pfn(reg->base);
|
|
|
- pfn2 = pfn1 + __phys_to_pfn(reg->size);
|
|
|
-
|
|
|
- page = pfn_to_page(pfn1);
|
|
|
- end = pfn_to_page(pfn2 - 1) + 1;
|
|
|
-
|
|
|
- do {
|
|
|
- if (PageReserved(page))
|
|
|
- reserved_pages++;
|
|
|
- else if (!page_count(page))
|
|
|
- free_pages++;
|
|
|
- page++;
|
|
|
- } while (page < end);
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * Since our memory may not be contiguous, calculate the real number
|
|
|
- * of pages we have in this system.
|
|
|
- */
|
|
|
- pr_info("Memory:");
|
|
|
- num_physpages = 0;
|
|
|
- for_each_memblock(memory, reg) {
|
|
|
- unsigned long pages = memblock_region_memory_end_pfn(reg) -
|
|
|
- memblock_region_memory_base_pfn(reg);
|
|
|
- num_physpages += pages;
|
|
|
- printk(" %ldMB", pages >> (20 - PAGE_SHIFT));
|
|
|
- }
|
|
|
- printk(" = %luMB total\n", num_physpages >> (20 - PAGE_SHIFT));
|
|
|
-
|
|
|
- pr_notice("Memory: %luk/%luk available, %luk reserved\n",
|
|
|
- nr_free_pages() << (PAGE_SHIFT-10),
|
|
|
- free_pages << (PAGE_SHIFT-10),
|
|
|
- reserved_pages << (PAGE_SHIFT-10));
|
|
|
+ mem_init_print_info();
|
|
|
|
|
|
#define MLK(b, t) b, t, ((t) - (b)) >> 10
|
|
|
#define MLM(b, t) b, t, ((t) - (b)) >> 20
|
|
@@ -366,7 +324,7 @@ void __init mem_init(void)
|
|
|
BUILD_BUG_ON(TASK_SIZE_64 > MODULES_VADDR);
|
|
|
BUG_ON(TASK_SIZE_64 > MODULES_VADDR);
|
|
|
|
|
|
- if (PAGE_SIZE >= 16384 && num_physpages <= 128) {
|
|
|
+ if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) {
|
|
|
extern int sysctl_overcommit_memory;
|
|
|
/*
|
|
|
* On a machine this small we won't get anywhere without
|