]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - arch/mips/kernel/smp-cps.c
MIPS: smp-cps: Fix entry code cache flush for systems with coherent I/O
[mirror_ubuntu-hirsute-kernel.git] / arch / mips / kernel / smp-cps.c
index f9b53b4eaccb7230c2c15ca373c2423430f861a9..e6e16a1d4add0e9b785e99ba992547ad3f169917 100644 (file)
 #include <linux/smp.h>
 #include <linux/types.h>
 
-#include <asm/cacheflush.h>
+#include <asm/bcache.h>
 #include <asm/gic.h>
 #include <asm/mips-cm.h>
 #include <asm/mips-cpc.h>
 #include <asm/mips_mt.h>
 #include <asm/mipsregs.h>
 #include <asm/pm-cps.h>
+#include <asm/r4kcache.h>
 #include <asm/smp-cps.h>
 #include <asm/time.h>
 #include <asm/uasm.h>
@@ -132,8 +133,11 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
        entry_code = (u32 *)&mips_cps_core_entry;
        UASM_i_LA(&entry_code, 3, (long)mips_cm_base);
        uasm_i_addiu(&entry_code, 16, 0, cca);
-       dma_cache_wback_inv((unsigned long)&mips_cps_core_entry,
-                           (void *)entry_code - (void *)&mips_cps_core_entry);
+       blast_dcache_range((unsigned long)&mips_cps_core_entry,
+                          (unsigned long)entry_code);
+       bc_wback_inv((unsigned long)&mips_cps_core_entry,
+                    (void *)entry_code - (void *)&mips_cps_core_entry);
+       __sync();
 
        /* Allocate core boot configuration structs */
        mips_cps_core_bootcfg = kcalloc(ncores, sizeof(*mips_cps_core_bootcfg),