These patches collect together various SMP cache management fixes & refactorings, particularly to fix the missing SMP calls for indexed cache ops on MIPS Coherence Manager (CM) based SMP systems since commit cccf34e9411c ("MIPS: c-r4k: Fix cache flushing for MT cores"). Patches 1-6 fix various issues in the SMP code and cache management code (all in relation to cache management). Patches 7-12 then prepare r4k_on_each_cpu() and its various callers/callees to distinguish hit/index cache ops so SMP calls can be avoided. Finally patch 13 makes the change for CM so that indexed cache ops are performed on each core via SMP calls. Patch 9 should also work around the SMP 34Kc regression Felix saw recently, but __flush_anon_page() and r4k_flush_data_cache_page() definitely still need looking at too. All feedback & testing gratefully received. James Hogan (13): MIPS: SMP: Clear ASID without confusing has_valid_asid() MIPS: SMP: Update cpu_foreign_map on CPU disable MIPS: SMP: Drop stop_this_cpu() cpu_foreign_map hack MIPS: c-r4k: Fix protected_writeback_scache_line for EVA MIPS: c-r4k: Fix sigtramp SMP call to use kmap MIPS: c-r4k: Avoid dcache flush for sigtramps MIPS: c-r4k: Add r4k_on_each_cpu cache op type arg MIPS: c-r4k: Fix valid ASID optimisation MIPS: c-r4k: Exclude sibling CPUs in SMP calls MIPS: c-r4k: Split r4k_flush_kernel_vmap_range() MIPS: c-r4k: Local flush_icache_range cache op override MIPS: c-r4k: Avoid small flush_icache_range SMP calls MIPS: c-r4k: Use SMP calls for CM indexed cache ops arch/mips/cavium-octeon/smp.c | 1 + arch/mips/include/asm/r4kcache.h | 4 + arch/mips/include/asm/smp.h | 4 +- arch/mips/kernel/smp-bmips.c | 1 + arch/mips/kernel/smp-cps.c | 1 + arch/mips/kernel/smp.c | 34 +++-- arch/mips/loongson64/loongson-3/smp.c | 1 + arch/mips/mm/c-r4k.c | 274 ++++++++++++++++++++++++++++------ 8 files changed, 257 insertions(+), 63 deletions(-) Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Paul Burton <paul.burton@xxxxxxxxxx> Cc: Leonid Yegoshin <leonid.yegoshin@xxxxxxxxxx> Cc: Felix Fietkau <nbd@xxxxxxxx> Cc: David Daney <david.daney@xxxxxxxxxx> Cc: Florian Fainelli <f.fainelli@xxxxxxxxx> Cc: Hongliang Tao <taohl@xxxxxxxxxx> Cc: Huacai Chen <chenhc@xxxxxxxxxx> Cc: Hua Yan <yanh@xxxxxxxxxx> Cc: Jayachandran C. <jchandra@xxxxxxxxxxxx> Cc: Kevin Cernekee <cernekee@xxxxxxxxx> Cc: linux-mips@xxxxxxxxxxxxxx -- 2.4.10