If someone runs page_address() before page_address_init(), the kernel locks up over uninitialised spinlocks. This only happens with the 4:4 patch, but it is more robust to run page_address_init() before setup_arch(). page_address_init() simply initialises statically allocated storage. --- 25-akpm/init/main.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN init/main.c~earlier-page_address_init init/main.c --- 25/init/main.c~earlier-page_address_init Mon Mar 29 16:34:51 2004 +++ 25-akpm/init/main.c Mon Mar 29 16:34:51 2004 @@ -463,6 +463,7 @@ asmlinkage void __init start_kernel(void * enable them */ lock_kernel(); + page_address_init(); printk(linux_banner); setup_arch(&command_line); setup_per_cpu_areas(); @@ -513,7 +514,6 @@ asmlinkage void __init start_kernel(void initrd_start = 0; } #endif - page_address_init(); mem_init(); kmem_cache_init(); if (late_time_init) _