Re: [PATCH] MIPS: Remove a temporary hack for debugging cache flushes in SMTC configuration

From: Ralf Baechle
Date: Thu Nov 20 2014 - 16:46:18 EST


On Fri, Sep 05, 2014 at 07:27:38PM -0700, Leonid Yegoshin wrote:

> This patch removes a temporary hack for debugging SMTC configuration from
>
> commit 41c594ab65fc89573af296d192aa5235d09717ab
> Author: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
> Date: Wed Apr 5 09:45:45 2006 +0100
>
> which is dropped now. Some performance degradation for multi-VPE systems
> is removed.

Your patch removes the sole location from where PROTECT_CACHE_FLUSHES
was defined leaving all the #ifdef'ed PROTECT_CACHE_FLUSHES code unused.
So I'm more thinking of something like below.

Ralf

Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx>

arch/mips/include/asm/r4kcache.h | 59 ----------------------------------------
1 file changed, 59 deletions(-)

diff --git a/arch/mips/include/asm/r4kcache.h b/arch/mips/include/asm/r4kcache.h
index cd6e0af..e293a8d 100644
--- a/arch/mips/include/asm/r4kcache.h
+++ b/arch/mips/include/asm/r4kcache.h
@@ -47,79 +47,20 @@ extern void (*r4k_blast_icache)(void);

#ifdef CONFIG_MIPS_MT

-/*
- * Optionally force single-threaded execution during I-cache flushes.
- */
-#define PROTECT_CACHE_FLUSHES 1
-
-#ifdef PROTECT_CACHE_FLUSHES
-
-extern int mt_protiflush;
-extern int mt_protdflush;
-extern void mt_cflush_lockdown(void);
-extern void mt_cflush_release(void);
-
-#define BEGIN_MT_IPROT \
- unsigned long flags = 0; \
- unsigned long mtflags = 0; \
- if(mt_protiflush) { \
- local_irq_save(flags); \
- ehb(); \
- mtflags = dvpe(); \
- mt_cflush_lockdown(); \
- }
-
-#define END_MT_IPROT \
- if(mt_protiflush) { \
- mt_cflush_release(); \
- evpe(mtflags); \
- local_irq_restore(flags); \
- }
-
-#define BEGIN_MT_DPROT \
- unsigned long flags = 0; \
- unsigned long mtflags = 0; \
- if(mt_protdflush) { \
- local_irq_save(flags); \
- ehb(); \
- mtflags = dvpe(); \
- mt_cflush_lockdown(); \
- }
-
-#define END_MT_DPROT \
- if(mt_protdflush) { \
- mt_cflush_release(); \
- evpe(mtflags); \
- local_irq_restore(flags); \
- }
-
-#else
-
-#define BEGIN_MT_IPROT
-#define BEGIN_MT_DPROT
-#define END_MT_IPROT
-#define END_MT_DPROT
-
-#endif /* PROTECT_CACHE_FLUSHES */
-
#define __iflush_prologue \
unsigned long redundance; \
extern int mt_n_iflushes; \
- BEGIN_MT_IPROT \
for (redundance = 0; redundance < mt_n_iflushes; redundance++) {

#define __iflush_epilogue \
- END_MT_IPROT \
}

#define __dflush_prologue \
unsigned long redundance; \
extern int mt_n_dflushes; \
- BEGIN_MT_DPROT \
for (redundance = 0; redundance < mt_n_dflushes; redundance++) {

#define __dflush_epilogue \
- END_MT_DPROT \
}

#define __inv_dflush_prologue __dflush_prologue
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/