Update of /cvsroot/linux-vax/kernel-2.5/arch/vax/mm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31645/arch/vax/mm
Modified Files:
init.c
Log Message:
The handling of struct page's refcount changes in 2.6.7. Adapt to this
change, and make free_initmem() look more like Alpha's.
Index: init.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.5/arch/vax/mm/init.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- init.c 28 Aug 2003 22:48:53 -0000 1.14
+++ init.c 29 Jul 2004 00:28:54 -0000 1.15
@@ -129,20 +129,25 @@
return;
}
+static void free_reserved_mem(void *start, void *end)
+{
+ void *__start = start;
+ for (; __start < end; __start += PAGE_SIZE) {
+ ClearPageReserved(virt_to_page(__start));
+ set_page_count(virt_to_page(__start), 1);
+ free_page((long)__start);
+ totalram_pages++;
+ }
+}
+
void free_initmem(void)
{
- extern char __init_begin, __init_end;
- unsigned long addr;
+ extern char __init_begin, __init_end;
- addr = (unsigned long) (&__init_begin);
- for (; addr < (unsigned long) (&__init_end); addr += PAGE_SIZE) {
- mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved);
- atomic_set(&mem_map[MAP_NR(addr)].count, 1);
- kill_page(addr);
- free_page(addr);
- }
- printk("Freeing unused kernel memory: %dk freed\n",
- (&__init_end - &__init_begin) >> 10);
+ free_reserved_mem(&__init_begin, &__init_end);
+
+ printk("Freeing unused kernel memory: %dk freed\n",
+ (&__init_end - &__init_begin) >> 10);
}
void
@@ -164,7 +169,7 @@
else if (!page_count(mem_map+i))
free++;
else
- shared += atomic_read(&mem_map[i].count) - 1;
+ shared += page_count(mem_map + i) - 1;
}
printk("%ld pages of RAM\n",total);
printk("%ld free pages\n",free);
|