diff -ur linux-2.6.16.14/arch/alpha/kernel/setup.c linux-2.6.16.14.susp2/arch/alpha/kernel/setup.c --- linux-2.6.16.14/arch/alpha/kernel/setup.c 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/arch/alpha/kernel/setup.c 2006-05-06 00:20:36.000000000 +0200 @@ -453,7 +453,7 @@ extern void setup_memory(void *); #endif /* !CONFIG_DISCONTIGMEM */ -int __init +int page_is_ram(unsigned long pfn) { struct memclust_struct * cluster; diff -ur linux-2.6.16.14/arch/alpha/mm/init.c linux-2.6.16.14.susp2/arch/alpha/mm/init.c --- linux-2.6.16.14/arch/alpha/mm/init.c 2006-05-05 16:35:37.000000000 +0200 +++ linux-2.6.16.14.susp2/arch/alpha/mm/init.c 2006-05-06 00:21:11.000000000 +0200 @@ -315,7 +315,7 @@ printk_memory_info(void) { unsigned long codesize, reservedpages, datasize, initsize, tmp; - extern int page_is_ram(unsigned long) __init; + extern int page_is_ram(unsigned long); extern char _text, _etext, _data, _edata; extern char __init_begin, __init_end; diff -ur linux-2.6.16.14/arch/alpha/mm/numa.c linux-2.6.16.14.susp2/arch/alpha/mm/numa.c --- linux-2.6.16.14/arch/alpha/mm/numa.c 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/arch/alpha/mm/numa.c 2006-05-06 00:21:19.000000000 +0200 @@ -323,7 +323,7 @@ void __init mem_init(void) { unsigned long codesize, reservedpages, datasize, initsize, pfn; - extern int page_is_ram(unsigned long) __init; + extern int page_is_ram(unsigned long); extern char _text, _etext, _data, _edata; extern char __init_begin, __init_end; unsigned long nid, i; diff -ur linux-2.6.16.14/arch/sparc/mm/init.c linux-2.6.16.14.susp2/arch/sparc/mm/init.c --- linux-2.6.16.14/arch/sparc/mm/init.c 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/arch/sparc/mm/init.c 2006-05-06 00:23:20.000000000 +0200 @@ -469,6 +469,11 @@ totalhigh_pages << (PAGE_SHIFT-10)); } +int page_is_ram(int pfn) +{ + return pfn_valid(pfn); +} + void free_initmem (void) { unsigned long addr; diff -ur linux-2.6.16.14/arch/sparc64/mm/init.c linux-2.6.16.14.susp2/arch/sparc64/mm/init.c --- linux-2.6.16.14/arch/sparc64/mm/init.c 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/arch/sparc64/mm/init.c 2006-05-06 00:23:59.000000000 +0200 @@ -1633,6 +1633,11 @@ cheetah_ecache_flush_init(); } +int page_is_ram(unsigned long pfn) +{ + return pfn_valid(pfn); +} + void free_initmem(void) { unsigned long addr, initend; diff -ur linux-2.6.16.14/include/asm-alpha/page.h linux-2.6.16.14.susp2/include/asm-alpha/page.h --- linux-2.6.16.14/include/asm-alpha/page.h 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/include/asm-alpha/page.h 2006-05-06 00:27:23.000000000 +0200 @@ -43,6 +43,8 @@ #define __pgd(x) ((pgd_t) { (x) } ) #define __pgprot(x) ((pgprot_t) { (x) } ) +extern int page_is_ram(unsigned long pfn); + #else /* * .. while these make it easier on the compiler diff -ur linux-2.6.16.14/include/asm-sparc/page.h linux-2.6.16.14.susp2/include/asm-sparc/page.h --- linux-2.6.16.14/include/asm-sparc/page.h 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/include/asm-sparc/page.h 2006-05-06 00:28:11.000000000 +0200 @@ -64,6 +64,8 @@ extern struct cache_palias *sparc_aliases; +extern int page_is_ram(int pfn); + /* passing structs on the Sparc slow us down tremendously... */ /* #define STRICT_MM_TYPECHECKS */ diff -ur linux-2.6.16.14/include/asm-sparc64/page.h linux-2.6.16.14.susp2/include/asm-sparc64/page.h --- linux-2.6.16.14/include/asm-sparc64/page.h 2006-05-05 02:03:45.000000000 +0200 +++ linux-2.6.16.14.susp2/include/asm-sparc64/page.h 2006-05-06 00:28:24.000000000 +0200 @@ -39,6 +39,8 @@ #define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE) extern void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage); +extern int page_is_ram(unsigned long pfn); + /* Unlike sparc32, sparc64's parameter passing API is more * sane in that structures which as small enough are passed * in registers instead of on the stack. Thus, setting