From: Peter Zijlstra Move initialization of the replacement policy's variables into the implementation. API: initialize the implementation's per zone variables void page_replace_init_zone(struct zone *); Signed-off-by: Peter Zijlstra include/linux/mm_page_replace.h | 2 ++ init/main.c | 2 ++ mm/lru.c | 13 +++++++++++++ mm/page_alloc.c | 7 ++----- 4 files changed, 19 insertions(+), 5 deletions(-) Index: linux-2.6-uml/include/linux/mm_page_replace.h =================================================================== --- linux-2.6-uml.orig/include/linux/mm_page_replace.h 2006-02-23 22:02:17.000000000 +0100 +++ linux-2.6-uml/include/linux/mm_page_replace.h 2006-02-23 22:02:20.000000000 +0100 @@ -38,6 +38,8 @@ #define prefetchw_prev_lru_page(_page, _base, _field) do { } while (0) #endif +extern void page_replace_init(void); +extern void page_replace_init_zone(struct zone *); /* void page_replace_hint_active(struct page *); */ /* void page_replace_hint_use_once(struct page *); */ extern void fastcall page_replace_add(struct page *); Index: linux-2.6-uml/mm/lru.c =================================================================== --- linux-2.6-uml.orig/mm/lru.c 2006-02-23 22:02:15.000000000 +0100 +++ linux-2.6-uml/mm/lru.c 2006-02-23 22:02:20.000000000 +0100 @@ -6,6 +6,19 @@ #include /* for try_to_release_page(), buffer_heads_over_limit */ +void __init page_replace_init(void) +{ + /* empty hook */ +} + +void __init page_replace_init_zone(struct zone *zone) +{ + INIT_LIST_HEAD(&zone->active_list); + INIT_LIST_HEAD(&zone->inactive_list); + zone->nr_scan_active = 0; + zone->nr_active = 0; + zone->nr_inactive = 0; +} static inline void add_page_to_active_list(struct zone *zone, struct page *page) Index: linux-2.6-uml/mm/page_alloc.c =================================================================== --- linux-2.6-uml.orig/mm/page_alloc.c 2006-02-23 22:01:41.000000000 +0100 +++ linux-2.6-uml/mm/page_alloc.c 2006-02-23 22:02:20.000000000 +0100 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "internal.h" @@ -2073,11 +2074,7 @@ static void __init free_area_init_core(s zone->temp_priority = zone->prev_priority = DEF_PRIORITY; zone_pcp_init(zone); - INIT_LIST_HEAD(&zone->active_list); - INIT_LIST_HEAD(&zone->inactive_list); - zone->nr_scan_active = 0; - zone->nr_active = 0; - zone->nr_inactive = 0; + page_replace_init_zone(zone); atomic_set(&zone->reclaim_in_progress, 0); if (!size) continue; Index: linux-2.6-uml/init/main.c =================================================================== --- linux-2.6-uml.orig/init/main.c 2006-02-23 22:01:31.000000000 +0100 +++ linux-2.6-uml/init/main.c 2006-02-23 22:02:20.000000000 +0100 @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -507,6 +508,7 @@ asmlinkage void __init start_kernel(void #endif vfs_caches_init_early(); cpuset_init_early(); + page_replace_init(); mem_init(); kmem_cache_init(); setup_per_cpu_pageset();