0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #include <linux/memblock.h>
0026 #include <linux/init.h>
0027
0028 #include "numa_internal.h"
0029
0030 extern unsigned long highend_pfn, highstart_pfn;
0031
0032 void __init initmem_init(void)
0033 {
0034 x86_numa_init();
0035
0036 #ifdef CONFIG_HIGHMEM
0037 highstart_pfn = highend_pfn = max_pfn;
0038 if (max_pfn > max_low_pfn)
0039 highstart_pfn = max_low_pfn;
0040 printk(KERN_NOTICE "%ldMB HIGHMEM available.\n",
0041 pages_to_mb(highend_pfn - highstart_pfn));
0042 high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1;
0043 #else
0044 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1;
0045 #endif
0046 printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
0047 pages_to_mb(max_low_pfn));
0048 printk(KERN_DEBUG "max_low_pfn = %lx, highstart_pfn = %lx\n",
0049 max_low_pfn, highstart_pfn);
0050
0051 printk(KERN_DEBUG "Low memory ends at vaddr %08lx\n",
0052 (ulong) pfn_to_kaddr(max_low_pfn));
0053
0054 printk(KERN_DEBUG "High memory starts at vaddr %08lx\n",
0055 (ulong) pfn_to_kaddr(highstart_pfn));
0056
0057 __vmalloc_start_set = true;
0058 setup_bootmem_allocator();
0059 }