The next patch in this series will remove the arch-independent clearing of the pgdat's. This first patch removes the i386 dependency on that behavior. The new i386 function, remapped_pgdat_init() takes care of initializing the pgdats which are finally mapped after paging_init() is done. The zone_sizes_init() call has to occur after the pgdat clearing. zone_sizes_init() is currently called from the end of paging_init(), because that's the first place where the pgdats could have been zeroed. However, zone_sizes_init() really doesn't have anything to do with paging, and probably shouldn't be in paging_init(). Moving this call into setup_memory() allows the declaration of zone_sizes_init() to change files as well, which means a net removal of one #ifdef. It also provides a handy place to put the new function, far away from the paging code that it really has nothing to do with. Moving files required only using highend_pfn inside of the HIGHMEM ifdef, but this saves a line of code anyway. Fixes from: Yasunori Goto Signed-off-by: Dave Hansen --- memhotplug-dave/arch/i386/kernel/setup.c | 42 +++++++++++++++++++++++++++++++ memhotplug-dave/arch/i386/mm/discontig.c | 4 -- memhotplug-dave/arch/i386/mm/init.c | 26 ------------------- 3 files changed, 43 insertions(+), 29 deletions(-) diff -puN arch/i386/kernel/setup.c~A2.1-re-memset-i386-pgdats arch/i386/kernel/setup.c --- memhotplug/arch/i386/kernel/setup.c~A2.1-re-memset-i386-pgdats 2005-02-17 15:25:29.000000000 -0800 +++ memhotplug-dave/arch/i386/kernel/setup.c 2005-02-17 15:25:29.000000000 -0800 @@ -40,6 +40,7 @@ #include #include #include +#include #include