void __init mem_init(void) { unsigned long codesize, reservedpages, datasize, initsize; unsigned long tmp, ram = 0; high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); totalram_pages += free_all_bootmem(); totalram_pages -= setup_zero_page(); /* Setup zeroed pages. */ reservedpages = 0; for (tmp = 0; tmp < max_low_pfn; tmp++) if (page_is_ram(tmp)) { ram++; if (PageReserved(pfn_to_page(tmp))) reservedpages++; } num_physpages = ram; codesize = (unsigned long) &_etext - (unsigned long) &_text; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n", (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), ram << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >> 10, initsize >> 10, totalhigh_pages << (PAGE_SHIFT-10)); }
void __init mem_init(void) { int codek = 0, datak = 0, initk = 0; unsigned long tmp; unsigned long len = _ramend - _rambase; unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */ pr_debug("Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); end_mem &= PAGE_MASK; high_memory = (void *) end_mem; start_mem = PAGE_ALIGN(start_mem); max_mapnr = num_physpages = (((unsigned long) high_memory) - PAGE_OFFSET) >> PAGE_SHIFT; /* this will put all memory onto the freelists */ totalram_pages = free_all_bootmem(); codek = (_etext - _stext) >> 10; datak = (__bss_stop - _sdata) >> 10; initk = (__init_begin - __init_end) >> 10; tmp = nr_free_pages() << PAGE_SHIFT; printk(KERN_INFO "Memory available: %luk/%luk RAM, (%dk kernel code, %dk data)\n", tmp >> 10, len >> 10, codek, datak ); }
void __init mem_init(void) { int codek = 0, datak = 0; unsigned long tmp; unsigned long start_mem = memory_start; unsigned long end_mem = memory_end; /* TODO: use more of hardware setup to initialize memory */ unsigned long ramlen = sdram_size; #ifdef DEBUG printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); #endif end_mem &= PAGE_MASK; high_memory = (void *) end_mem; start_mem = PAGE_ALIGN(start_mem); max_mapnr = num_physpages = (((unsigned long) high_memory) - PAGE_OFFSET) >> PAGE_SHIFT; /* this will put all memory onto the freelists */ totalram_pages = free_all_bootmem(); codek = (_etext - _stext) >> 10; datak = (__bss_stop - __bss_start) >> 10; tmp = nr_free_pages() << PAGE_SHIFT; printk(KERN_INFO "Memory available: %luk/%luk RAM, (%dk kernel code, %dk data)\n", tmp >> 10, ramlen >> 10, codek, datak ); }
void __init mem_init(void) { unsigned long codesize, reservedpages, datasize, initsize; max_mapnr = num_physpages = max_low_pfn; high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); /* Setup guest page hinting */ cmma_init(); /* this will put all low memory onto the freelists */ totalram_pages += free_all_bootmem(); setup_zero_pages(); /* Setup zeroed pages. */ reservedpages = 0; codesize = (unsigned long) &_etext - (unsigned long) &_text; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, %ldk data, %ldk init)\n", nr_free_pages() << (PAGE_SHIFT-10), max_mapnr << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >>10, initsize >> 10); printk("Write protected kernel read-only data: %#lx - %#lx\n", (unsigned long)&_stext, PFN_ALIGN((unsigned long)&_eshared) - 1); }
void __init mem_init(void) { int codek = 0, datak = 0, initk = 0; unsigned long tmp; extern char _etext, _stext, __init_begin, __init_end, _end; unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */ #ifdef DEBUG printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); #endif end_mem &= PAGE_MASK; high_memory = (void *) end_mem; start_mem = PAGE_ALIGN(start_mem); max_mapnr = num_physpages = MAP_NR(high_memory); /* this will put all memory onto the freelists */ totalram_pages = free_all_bootmem(); codek = (&_etext - &_stext) >> 10; datak = (&_end - &_etext) >> 10; initk = (&__init_begin - &__init_end) >> 10; tmp = nr_free_pages() << PAGE_SHIFT; printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", tmp >> 10, (&_end - &_stext) >> 10, (rom_length > 0) ? ((rom_length >> 10) - codek) : 0, rom_length >> 10, codek, datak ); }
void __init mem_init(void) { int i; #ifndef __tilegx__ void *last; #endif #ifdef CONFIG_FLATMEM BUG_ON(!mem_map); #endif #ifdef CONFIG_HIGHMEM /* check that fixmap and pkmap do not overlap */ if (PKMAP_ADDR(LAST_PKMAP-1) >= FIXADDR_START) { pr_err("fixmap and kmap areas overlap - this will crash\n"); pr_err("pkstart: %lxh pkend: %lxh fixstart %lxh\n", PKMAP_BASE, PKMAP_ADDR(LAST_PKMAP-1), FIXADDR_START); BUG(); } #endif set_max_mapnr_init(); /* this will put all bootmem onto the freelists */ free_all_bootmem(); #ifndef CONFIG_64BIT /* count all remaining LOWMEM and give all HIGHMEM to page allocator */ set_non_bootmem_pages_init(); #endif mem_init_print_info(NULL); /* * In debug mode, dump some interesting memory mappings. */ #ifdef CONFIG_HIGHMEM printk(KERN_DEBUG " KMAP %#lx - %#lx\n", FIXADDR_START, FIXADDR_TOP + PAGE_SIZE - 1); printk(KERN_DEBUG " PKMAP %#lx - %#lx\n", PKMAP_BASE, PKMAP_ADDR(LAST_PKMAP) - 1); #endif printk(KERN_DEBUG " VMALLOC %#lx - %#lx\n", _VMALLOC_START, _VMALLOC_END - 1); #ifdef __tilegx__ for (i = MAX_NUMNODES-1; i >= 0; --i) { struct pglist_data *node = &node_data[i]; if (node->node_present_pages) { unsigned long start = (unsigned long) pfn_to_kaddr(node->node_start_pfn); unsigned long end = start + (node->node_present_pages << PAGE_SHIFT); printk(KERN_DEBUG " MEM%d %#lx - %#lx\n", i, start, end - 1); } } #else last =
void __init mem_init(void) { high_memory = (void *)__va(memory_end); /* this will put all memory onto the freelists */ totalram_pages += free_all_bootmem(); printk(KERN_INFO "Memory: %luk/%luk available\n", (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), num_physpages << (PAGE_SHIFT-10)); }
void __init mem_init(void) { high_memory = (void *)__va(memory_end); /* this will put all memory onto the freelists */ totalram_pages += free_all_bootmem(); printk(KERN_INFO "Memory: %luk/%luk available\n", nr_free_pages() << (PAGE_SHIFT-10), num_physpages << (PAGE_SHIFT-10)); #ifdef CONFIG_MMU mem_init_done = 1; #endif }
/* * mem_init - initializes memory * * Frees up bootmem * Calculates and displays memory available/used */ void __init mem_init(void) { #ifdef CONFIG_HIGHMEM unsigned long tmp; reset_all_zones_managed_pages(); for (tmp = min_high_pfn; tmp < max_pfn; tmp++) free_highmem_page(pfn_to_page(tmp)); #endif free_all_bootmem(); mem_init_print_info(NULL); }
void __init mem_init(void) { unsigned long npages = (memory_end - memory_start) >> PAGE_SHIFT; unsigned long tmp; #ifdef CONFIG_MMU unsigned long loop, pfn; int datapages = 0; #endif int codek = 0, datak = 0; /* this will put all memory onto the freelists */ totalram_pages = free_all_bootmem(); #ifdef CONFIG_MMU for (loop = 0 ; loop < npages ; loop++) if (PageReserved(&mem_map[loop])) datapages++; #ifdef CONFIG_HIGHMEM for (pfn = num_physpages - 1; pfn >= num_mappedpages; pfn--) { struct page *page = &mem_map[pfn]; ClearPageReserved(page); set_bit(PG_highmem, &page->flags); set_page_count(page, 1); __free_page(page); totalram_pages++; } #endif codek = ((unsigned long) &_etext - (unsigned long) &_stext) >> 10; datak = datapages << (PAGE_SHIFT - 10); #else codek = (_etext - _stext) >> 10; datak = 0; //(_ebss - _sdata) >> 10; #endif tmp = nr_free_pages() << PAGE_SHIFT; printk("Memory available: %luKiB/%luKiB RAM, %luKiB/%luKiB ROM (%dKiB kernel code, %dKiB data)\n", tmp >> 10, npages << (PAGE_SHIFT - 10), (rom_length > 0) ? ((rom_length >> 10) - codek) : 0, rom_length >> 10, codek, datak ); } /* end mem_init() */
void __init mem_init(void) { high_memory = (void *)__va(max_low_pfn * PAGE_SIZE); max_mapnr = num_physpages = max_low_pfn; totalram_pages = free_all_bootmem(); printk(KERN_INFO "Memory available: %luk/%luk RAM, (%dk kernel code, %dk data)\n", nr_free_pages() << (PAGE_SHIFT - 10), max_mapnr << (PAGE_SHIFT - 10), (_etext - _stext) >> 10, (_edata - _etext) >> 10 ); }
void __init mem_init(void) { int codek = 0, datak = 0, initk = 0; unsigned long tmp, ram_start, ram_end, len; extern char _etext, _stext, _sdata, _ebss, __init_begin, __init_end; unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */ processor_dram(&ram_start, &ram_end); len = (ram_end - ram_start) + OCMSIZE; #ifdef DEBUG printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); #endif end_mem &= PAGE_MASK; high_memory = (void *) end_mem; start_mem = PAGE_ALIGN(start_mem); max_mapnr = num_physpages = (((unsigned long) high_memory) - PAGE_OFFSET) >> PAGE_SHIFT; /* this will put all memory onto the freelists */ #ifdef CONFIG_ZONE_DMA { unsigned long ocm_free_begin = (unsigned long)&__ocm_free_begin; unsigned long ocm_free_end = (unsigned long)&__ocm_free_end; unsigned long zone_dma_begin = (ocm_free_begin + PAGE_SIZE - 1) & PAGE_MASK; unsigned long zone_dma_end = ocm_free_end & PAGE_MASK; if (zone_dma_end > zone_dma_begin) free_bootmem(zone_dma_begin, zone_dma_end-zone_dma_begin); } #endif totalram_pages = free_all_bootmem(); codek = (&_etext - &_stext) >> 10; datak = (&_ebss - &_sdata) >> 10; initk = (&__init_begin - &__init_end) >> 10; tmp = nr_free_pages() << PAGE_SHIFT; printk(KERN_INFO "Memory available: %luk/%luk RAM, (%dk kernel code, %dk data)\n", tmp >> 10, len >> 10, codek, datak ); }
void __init mem_init(void) { int codek, datak; unsigned long tmp; unsigned long len = memory_end - memory_start; high_memory = (void *)(memory_end & PAGE_MASK); /* this will put all memory onto the freelists */ totalram_pages = free_all_bootmem(); codek = (_etext - _stext) >> 10; datak = (_end - _sdata) >> 10; tmp = nr_free_pages() << PAGE_SHIFT; printk(KERN_INFO "Memory: %luk/%luk RAM (%dk kernel code, %dk data)\n", tmp >> 10, len >> 10, codek, datak); }
void __init mem_init(void) { long codesize, reservedpages, datasize, initsize; pci_iommu_alloc(); /* clear the zero-page */ memset(empty_zero_page, 0, PAGE_SIZE); reservedpages = 0; /* this will put all low memory onto the freelists */ #ifdef CONFIG_NUMA totalram_pages = numa_free_all_bootmem(); #else totalram_pages = free_all_bootmem(); #endif reservedpages = end_pfn - totalram_pages - absent_pages_in_range(0, end_pfn); after_bootmem = 1; codesize = (unsigned long) &_etext - (unsigned long) &_text; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; /* Register memory areas for /proc/kcore */ kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, VMALLOC_END-VMALLOC_START); kclist_add(&kcore_kernel, &_stext, _end - _stext); kclist_add(&kcore_modules, (void *)MODULES_VADDR, MODULES_LEN); kclist_add(&kcore_vsyscall, (void *)VSYSCALL_START, VSYSCALL_END - VSYSCALL_START); printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, %ldk data, %ldk init)\n", (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), end_pfn << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >> 10, initsize >> 10); }
void __init mem_init(void) { cpumask_set_cpu(0, &init_mm.context.cpu_attach_mask); cpumask_set_cpu(0, mm_cpumask(&init_mm)); set_max_mapnr(max_low_pfn); high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); /* Setup guest page hinting */ cmma_init(); /* this will put all low memory onto the freelists */ free_all_bootmem(); setup_zero_pages(); /* Setup zeroed pages. */ cmma_init_nodat(); mem_init_print_info(NULL); }
void __init mem_init(void) { int codesize, reservedpages, datasize, initsize; unsigned long tmp; BUG_ON(!mem_map); /* max/min_low_pfn was set by setup.c * now we just copy it to some other necessary places... * * high_memory was also set in setup.c */ max_mapnr = num_physpages = max_low_pfn - min_low_pfn; /* this will put all memory onto the freelists */ free_all_bootmem(); reservedpages = 0; for (tmp = 0; tmp < max_mapnr; tmp++) { /* * Only count reserved RAM pages */ if (PageReserved(mem_map + tmp)) reservedpages++; } codesize = (unsigned long) &_etext - (unsigned long) &_stext; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, " "%dk init)\n" , nr_free_pages() << (PAGE_SHIFT-10), max_mapnr << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >> 10, initsize >> 10 ); }
/* * transfer all the memory from the bootmem allocator to the runtime allocator */ void __init mem_init(void) { int codesize, reservedpages, datasize, initsize; int tmp; if (!mem_map) BUG(); #define START_PFN (contig_page_data.bdata->node_min_pfn) #define MAX_LOW_PFN (contig_page_data.bdata->node_low_pfn) max_mapnr = num_physpages = MAX_LOW_PFN - START_PFN; high_memory = (void *) __va(MAX_LOW_PFN * PAGE_SIZE); /* clear the zero-page */ memset(empty_zero_page, 0, PAGE_SIZE); /* this will put all low memory onto the freelists */ totalram_pages += free_all_bootmem(); reservedpages = 0; for (tmp = 0; tmp < num_physpages; tmp++) if (PageReserved(&mem_map[tmp])) reservedpages++; codesize = (unsigned long) &_etext - (unsigned long) &_stext; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; printk(KERN_INFO "Memory: %luk/%luk available" " (%dk kernel code, %dk reserved, %dk data, %dk init," " %ldk highmem)\n", nr_free_pages() << (PAGE_SHIFT - 10), max_mapnr << (PAGE_SHIFT - 10), codesize >> 10, reservedpages << (PAGE_SHIFT - 10), datasize >> 10, initsize >> 10, totalhigh_pages << (PAGE_SHIFT - 10)); }
void __init mem_init(void) { if (MACHINE_HAS_TLB_LC) cpumask_set_cpu(0, &init_mm.context.cpu_attach_mask); cpumask_set_cpu(0, mm_cpumask(&init_mm)); atomic_set(&init_mm.context.attach_count, 1); max_mapnr = max_low_pfn; high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); /* Setup guest page hinting */ cmma_init(); /* this will put all low memory onto the freelists */ free_all_bootmem(); setup_zero_pages(); /* Setup zeroed pages. */ mem_init_print_info(NULL); printk("Write protected kernel read-only data: %#lx - %#lx\n", (unsigned long)&_stext, PFN_ALIGN((unsigned long)&_eshared) - 1); }
/* * mem_init - initializes memory * * Frees up bootmem * Calculates and displays memory available/used */ void __init mem_init(void) { int codesize, datasize, initsize, reserved_pages, free_pages; int tmp; high_memory = (void *)(CONFIG_LINUX_LINK_BASE + arc_mem_sz); free_all_bootmem(); /* count all reserved pages [kernel code/data/mem_map..] */ reserved_pages = 0; for (tmp = 0; tmp < max_mapnr; tmp++) if (PageReserved(mem_map + tmp)) reserved_pages++; /* XXX: nr_free_pages() is equivalent */ free_pages = max_mapnr - reserved_pages; /* * For the purpose of display below, split the "reserve mem" * kernel code/data is already shown explicitly, * Show any other reservations (mem_map[ ] et al) */ reserved_pages -= (((unsigned int)_end - CONFIG_LINUX_LINK_BASE) >> PAGE_SHIFT); codesize = _etext - _text; datasize = _end - _etext; initsize = __init_end - __init_begin; pr_info("Memory Available: %dM / %ldM (%dK code, %dK data, %dK init, %dK reserv)\n", PAGES_TO_MB(free_pages), TO_MB(arc_mem_sz), TO_KB(codesize), TO_KB(datasize), TO_KB(initsize), PAGES_TO_KB(reserved_pages)); }
/* * mem_init - initializes memory * * Frees up bootmem * Calculates and displays memory available/used */ void __init mem_init(void) { free_all_bootmem(); mem_init_print_info(NULL); }
void __init mem_init(void) { #ifdef CONFIG_NEED_MULTIPLE_NODES int nid; #endif pg_data_t *pgdat; unsigned long i; struct page *page; unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; num_physpages = lmb.memory.size >> PAGE_SHIFT; high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); #ifdef CONFIG_NEED_MULTIPLE_NODES for_each_online_node(nid) { if (NODE_DATA(nid)->node_spanned_pages != 0) { printk("freeing bootmem node %d\n", nid); totalram_pages += free_all_bootmem_node(NODE_DATA(nid)); } } #else max_mapnr = max_pfn; totalram_pages += free_all_bootmem(); #endif for_each_online_pgdat(pgdat) { for (i = 0; i < pgdat->node_spanned_pages; i++) { if (!pfn_valid(pgdat->node_start_pfn + i)) continue; page = pgdat_page_nr(pgdat, i); if (PageReserved(page)) reservedpages++; } } codesize = (unsigned long)&_sdata - (unsigned long)&_stext; datasize = (unsigned long)&_edata - (unsigned long)&_sdata; initsize = (unsigned long)&__init_end - (unsigned long)&__init_begin; bsssize = (unsigned long)&__bss_stop - (unsigned long)&__bss_start; #ifdef CONFIG_HIGHMEM { unsigned long pfn, highmem_mapnr; highmem_mapnr = total_lowmem >> PAGE_SHIFT; for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { struct page *page = pfn_to_page(pfn); ClearPageReserved(page); init_page_count(page); __free_page(page); totalhigh_pages++; } totalram_pages += totalhigh_pages; printk(KERN_DEBUG "High memory: %luk\n", totalhigh_pages << (PAGE_SHIFT-10)); } #endif /* CONFIG_HIGHMEM */ printk(KERN_INFO "Memory: %luk/%luk available (%luk kernel code, " "%luk reserved, %luk data, %luk bss, %luk init)\n", (unsigned long)nr_free_pages() << (PAGE_SHIFT-10), num_physpages << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >> 10, bsssize >> 10, initsize >> 10); mem_init_done = 1; }
void __init mem_init(void) { int codesize, datasize, initsize; int i; #ifndef __tilegx__ void *last; #endif #ifdef CONFIG_FLATMEM BUG_ON(!mem_map); #endif #ifdef CONFIG_HIGHMEM /* check that fixmap and pkmap do not overlap */ if (PKMAP_ADDR(LAST_PKMAP-1) >= FIXADDR_START) { pr_err("fixmap and kmap areas overlap" " - this will crash\n"); pr_err("pkstart: %lxh pkend: %lxh fixstart %lxh\n", PKMAP_BASE, PKMAP_ADDR(LAST_PKMAP-1), FIXADDR_START); BUG(); } #endif set_max_mapnr_init(); /* this will put all bootmem onto the freelists */ totalram_pages += free_all_bootmem(); #ifndef CONFIG_64BIT /* count all remaining LOWMEM and give all HIGHMEM to page allocator */ set_non_bootmem_pages_init(); #endif codesize = (unsigned long)&_etext - (unsigned long)&_text; datasize = (unsigned long)&_end - (unsigned long)&_sdata; initsize = (unsigned long)&_einittext - (unsigned long)&_sinittext; initsize += (unsigned long)&_einitdata - (unsigned long)&_sinitdata; pr_info("Memory: %luk/%luk available (%dk kernel code, %dk data, %dk init, %ldk highmem)\n", (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), num_physpages << (PAGE_SHIFT-10), codesize >> 10, datasize >> 10, initsize >> 10, (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10)) ); /* * In debug mode, dump some interesting memory mappings. */ #ifdef CONFIG_HIGHMEM printk(KERN_DEBUG " KMAP %#lx - %#lx\n", FIXADDR_START, FIXADDR_TOP + PAGE_SIZE - 1); printk(KERN_DEBUG " PKMAP %#lx - %#lx\n", PKMAP_BASE, PKMAP_ADDR(LAST_PKMAP) - 1); #endif #ifdef CONFIG_HUGEVMAP printk(KERN_DEBUG " HUGEMAP %#lx - %#lx\n", HUGE_VMAP_BASE, HUGE_VMAP_END - 1); #endif printk(KERN_DEBUG " VMALLOC %#lx - %#lx\n", _VMALLOC_START, _VMALLOC_END - 1); #ifdef __tilegx__ for (i = MAX_NUMNODES-1; i >= 0; --i) { struct pglist_data *node = &node_data[i]; if (node->node_present_pages) { unsigned long start = (unsigned long) pfn_to_kaddr(node->node_start_pfn); unsigned long end = start + (node->node_present_pages << PAGE_SHIFT); printk(KERN_DEBUG " MEM%d %#lx - %#lx\n", i, start, end - 1); } } #else last = high_memory; for (i = MAX_NUMNODES-1; i >= 0; --i) { if ((unsigned long)vbase_map[i] != -1UL) { printk(KERN_DEBUG " LOWMEM%d %#lx - %#lx\n", i, (unsigned long) (vbase_map[i]), (unsigned long) (last-1)); last = vbase_map[i]; } } #endif #ifndef __tilegx__ /* * Convert from using one lock for all atomic operations to * one per cpu. */ __init_atomic_per_cpu(); #endif }
void __init mem_init(void) { extern int ppro_with_ram_bug(void); int codesize, reservedpages, datasize, initsize; int tmp; int bad_ppro; #ifdef CONFIG_FLATMEM if (!mem_map) BUG(); #endif bad_ppro = ppro_with_ram_bug(); #ifdef CONFIG_HIGHMEM /* check that fixmap and pkmap do not overlap */ if (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE >= FIXADDR_START) { printk(KERN_ERR "fixmap and kmap areas overlap - this will crash\n"); printk(KERN_ERR "pkstart: %lxh pkend: %lxh fixstart %lxh\n", PKMAP_BASE, PKMAP_BASE+LAST_PKMAP*PAGE_SIZE, FIXADDR_START); BUG(); } #endif set_max_mapnr_init(); #ifdef CONFIG_HIGHMEM high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1; #else high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1; #endif /* this will put all low memory onto the freelists */ totalram_pages += free_all_bootmem(); reservedpages = 0; for (tmp = 0; tmp < max_low_pfn; tmp++) /* * Only count reserved RAM pages */ if (page_is_ram(tmp) && PageReserved(pfn_to_page(tmp))) reservedpages++; set_highmem_pages_init(bad_ppro); codesize = (unsigned long) &_etext - (unsigned long) &_text; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, VMALLOC_END-VMALLOC_START); printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, %dk init, %ldk highmem)\n", (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), num_physpages << (PAGE_SHIFT-10), codesize >> 10, reservedpages << (PAGE_SHIFT-10), datasize >> 10, initsize >> 10, (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10)) ); #ifdef CONFIG_X86_PAE if (!cpu_has_pae) panic("cannot execute a PAE-enabled kernel on a PAE-less CPU!"); #endif if (boot_cpu_data.wp_works_ok < 0) test_wp_bit(); /* * Subtle. SMP is doing it's boot stuff late (because it has to * fork idle threads) - but it also needs low mappings for the * protected-mode entry to work. We zap these entries only after * the WP-bit has been tested. */ #ifndef CONFIG_SMP zap_low_mappings(); #endif }
/* * mem_init - initializes memory * * Frees up bootmem * Calculates and displays memory available/used */ void __init mem_init(void) { high_memory = (void *)(CONFIG_LINUX_LINK_BASE + arc_mem_sz); free_all_bootmem(); mem_init_print_info(NULL); }
void __init mem_init(void) { #ifdef CONFIG_HIGHMEM unsigned long tmp; reset_all_zones_managed_pages(); for (tmp = max_low_pfn; tmp < max_pfn; tmp++) free_highmem_page(pfn_to_page(tmp)); #endif max_mapnr = max_pfn - ARCH_PFN_OFFSET; high_memory = (void *)__va(max_low_pfn << PAGE_SHIFT); free_all_bootmem(); mem_init_print_info(NULL); pr_info("virtual kernel memory layout:\n" #ifdef CONFIG_KASAN " kasan : 0x%08lx - 0x%08lx (%5lu MB)\n" #endif #ifdef CONFIG_MMU " vmalloc : 0x%08lx - 0x%08lx (%5lu MB)\n" #endif #ifdef CONFIG_HIGHMEM " pkmap : 0x%08lx - 0x%08lx (%5lu kB)\n" " fixmap : 0x%08lx - 0x%08lx (%5lu kB)\n" #endif " lowmem : 0x%08lx - 0x%08lx (%5lu MB)\n" " .text : 0x%08lx - 0x%08lx (%5lu kB)\n" " .rodata : 0x%08lx - 0x%08lx (%5lu kB)\n" " .data : 0x%08lx - 0x%08lx (%5lu kB)\n" " .init : 0x%08lx - 0x%08lx (%5lu kB)\n" " .bss : 0x%08lx - 0x%08lx (%5lu kB)\n", #ifdef CONFIG_KASAN KASAN_SHADOW_START, KASAN_SHADOW_START + KASAN_SHADOW_SIZE, KASAN_SHADOW_SIZE >> 20, #endif #ifdef CONFIG_MMU VMALLOC_START, VMALLOC_END, (VMALLOC_END - VMALLOC_START) >> 20, #ifdef CONFIG_HIGHMEM PKMAP_BASE, PKMAP_BASE + LAST_PKMAP * PAGE_SIZE, (LAST_PKMAP*PAGE_SIZE) >> 10, FIXADDR_START, FIXADDR_TOP, (FIXADDR_TOP - FIXADDR_START) >> 10, #endif PAGE_OFFSET, PAGE_OFFSET + (max_low_pfn - min_low_pfn) * PAGE_SIZE, #else min_low_pfn * PAGE_SIZE, max_low_pfn * PAGE_SIZE, #endif ((max_low_pfn - min_low_pfn) * PAGE_SIZE) >> 20, (unsigned long)_text, (unsigned long)_etext, (unsigned long)(_etext - _text) >> 10, (unsigned long)__start_rodata, (unsigned long)_sdata, (unsigned long)(_sdata - __start_rodata) >> 10, (unsigned long)_sdata, (unsigned long)_edata, (unsigned long)(_edata - _sdata) >> 10, (unsigned long)__init_begin, (unsigned long)__init_end, (unsigned long)(__init_end - __init_begin) >> 10, (unsigned long)__bss_start, (unsigned long)__bss_stop, (unsigned long)(__bss_stop - __bss_start) >> 10); }