aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mm/c-r4k.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mm/c-r4k.c')
-rw-r--r--arch/mips/mm/c-r4k.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 7f660dc67596..fbea4432f3f2 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -37,6 +37,7 @@
37#include <asm/cacheflush.h> /* for run_uncached() */ 37#include <asm/cacheflush.h> /* for run_uncached() */
38#include <asm/traps.h> 38#include <asm/traps.h>
39#include <asm/dma-coherence.h> 39#include <asm/dma-coherence.h>
40#include <asm/mips-cm.h>
40 41
41/* 42/*
42 * Special Variant of smp_call_function for use by cache functions: 43 * Special Variant of smp_call_function for use by cache functions:
@@ -51,9 +52,16 @@ static inline void r4k_on_each_cpu(void (*func) (void *info), void *info)
51{ 52{
52 preempt_disable(); 53 preempt_disable();
53 54
54#ifndef CONFIG_MIPS_MT_SMP 55 /*
55 smp_call_function(func, info, 1); 56 * The Coherent Manager propagates address-based cache ops to other
56#endif 57 * cores but not index-based ops. However, r4k_on_each_cpu is used
58 * in both cases so there is no easy way to tell what kind of op is
59 * executed to the other cores. The best we can probably do is
60 * to restrict that call when a CM is not present because both
61 * CM-based SMP protocols (CMP & CPS) restrict index-based cache ops.
62 */
63 if (!mips_cm_present())
64 smp_call_function_many(&cpu_foreign_map, func, info, 1);
57 func(info); 65 func(info);
58 preempt_enable(); 66 preempt_enable();
59} 67}
@@ -937,7 +945,9 @@ static void b5k_instruction_hazard(void)
937} 945}
938 946
939static char *way_string[] = { NULL, "direct mapped", "2-way", 947static char *way_string[] = { NULL, "direct mapped", "2-way",
940 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" 948 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way",
949 "9-way", "10-way", "11-way", "12-way",
950 "13-way", "14-way", "15-way", "16-way",
941}; 951};
942 952
943static void probe_pcache(void) 953static void probe_pcache(void)