From: David Daney <david.daney@xxxxxxxxxx> Found on 3.2-rc4, if jump label things are enabled, the kernel will not boot on MIPS. As noted in patch 5/5, this was caused by: commit 97ce2c88f9ad42e3c60a9beb9fca87abf3639faa (jump-label: initialize jump-label subsystem much earlier). The fix is to make flush_icache_range() usable earlier. I do this by calling cpu_cache_init() from setup_arch(). For the boot CPU we can no longer call this from per_cpu_trap_init(), so I add a flag to that function so we can skip the call if on the boot CPU. Some of the code in the various cpu_cache_init() functions however could not be called this early, so I moved it into functions called by the new board_cache_error_setup() hook. Tested on Octeon and ip32-R5000 David Daney (5): MIPS: Introduce board_cache_error_setup() hook. MIPS: Make set_handler() __cpuinit. MIPS: Octeon: Use board_cache_error_setup for cache error handler setup. MIPS: Use board_cache_error_setup for r4k cache error handler setup. MIPS: Move cache setup to setup_arch(). arch/mips/include/asm/system.h | 2 +- arch/mips/include/asm/traps.h | 1 + arch/mips/kernel/setup.c | 3 +++ arch/mips/kernel/smp.c | 2 +- arch/mips/kernel/traps.c | 15 ++++++++++----- arch/mips/mm/c-octeon.c | 14 ++++++++------ arch/mips/mm/c-r4k.c | 14 ++++++++++---- 7 files changed, 34 insertions(+), 17 deletions(-) -- 1.7.2.3