in mm/init.c [184:245]
void __init mem_init(void)
{
phys_addr_t memory_start = memblock_start_of_DRAM();
BUG_ON(!mem_map);
set_max_mapnr_init();
free_highmem();
/* this will put all low memory onto the freelists */
memblock_free_all();
pr_info("virtual kernel memory layout:\n"
" fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
#ifdef CONFIG_HIGHMEM
" pkmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
#endif
" consist : 0x%08lx - 0x%08lx (%4ld MB)\n"
" vmalloc : 0x%08lx - 0x%08lx (%4ld MB)\n"
" lowmem : 0x%08lx - 0x%08lx (%4ld MB)\n"
" .init : 0x%08lx - 0x%08lx (%4ld kB)\n"
" .data : 0x%08lx - 0x%08lx (%4ld kB)\n"
" .text : 0x%08lx - 0x%08lx (%4ld kB)\n",
FIXADDR_START, FIXADDR_TOP, (FIXADDR_TOP - FIXADDR_START) >> 10,
#ifdef CONFIG_HIGHMEM
PKMAP_BASE, PKMAP_BASE + LAST_PKMAP * PAGE_SIZE,
(LAST_PKMAP * PAGE_SIZE) >> 10,
#endif
CONSISTENT_BASE, CONSISTENT_END,
((CONSISTENT_END) - (CONSISTENT_BASE)) >> 20, VMALLOC_START,
(unsigned long)VMALLOC_END, (VMALLOC_END - VMALLOC_START) >> 20,
(unsigned long)__va(memory_start), (unsigned long)high_memory,
((unsigned long)high_memory -
(unsigned long)__va(memory_start)) >> 20,
(unsigned long)&__init_begin, (unsigned long)&__init_end,
((unsigned long)&__init_end -
(unsigned long)&__init_begin) >> 10, (unsigned long)&_etext,
(unsigned long)&_edata,
((unsigned long)&_edata - (unsigned long)&_etext) >> 10,
(unsigned long)&_text, (unsigned long)&_etext,
((unsigned long)&_etext - (unsigned long)&_text) >> 10);
/*
* Check boundaries twice: Some fundamental inconsistencies can
* be detected at build time already.
*/
#ifdef CONFIG_HIGHMEM
BUILD_BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > FIXADDR_START);
BUILD_BUG_ON((CONSISTENT_END) > PKMAP_BASE);
#endif
BUILD_BUG_ON(VMALLOC_END > CONSISTENT_BASE);
BUILD_BUG_ON(VMALLOC_START >= VMALLOC_END);
#ifdef CONFIG_HIGHMEM
BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > FIXADDR_START);
BUG_ON(CONSISTENT_END > PKMAP_BASE);
#endif
BUG_ON(VMALLOC_END > CONSISTENT_BASE);
BUG_ON(VMALLOC_START >= VMALLOC_END);
BUG_ON((unsigned long)high_memory > VMALLOC_START);
return;
}