|
@@ -884,6 +884,7 @@ static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel,
|
|
|
void __init mem_init(void)
|
|
|
{
|
|
|
long codesize, reservedpages, datasize, initsize;
|
|
|
+ unsigned long absent_pages;
|
|
|
|
|
|
start_periodic_check_for_corruption();
|
|
|
|
|
@@ -899,8 +900,9 @@ void __init mem_init(void)
|
|
|
#else
|
|
|
totalram_pages = free_all_bootmem();
|
|
|
#endif
|
|
|
- reservedpages = max_pfn - totalram_pages -
|
|
|
- absent_pages_in_range(0, max_pfn);
|
|
|
+
|
|
|
+ absent_pages = absent_pages_in_range(0, max_pfn);
|
|
|
+ reservedpages = max_pfn - totalram_pages - absent_pages;
|
|
|
after_bootmem = 1;
|
|
|
|
|
|
codesize = (unsigned long) &_etext - (unsigned long) &_text;
|
|
@@ -917,10 +919,11 @@ void __init mem_init(void)
|
|
|
VSYSCALL_END - VSYSCALL_START);
|
|
|
|
|
|
printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
|
|
|
- "%ldk reserved, %ldk data, %ldk init)\n",
|
|
|
+ "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n",
|
|
|
(unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
|
|
|
max_pfn << (PAGE_SHIFT-10),
|
|
|
codesize >> 10,
|
|
|
+ absent_pages << (PAGE_SHIFT-10),
|
|
|
reservedpages << (PAGE_SHIFT-10),
|
|
|
datasize >> 10,
|
|
|
initsize >> 10);
|