diff options
author | Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> | 2018-01-17 16:39:17 +0300 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2018-01-17 12:26:52 -0800 |
commit | 8bbfbc2df6e9a37bc5c9ee674c496ea277b0bd39 (patch) | |
tree | 13bf6d3b72b8de53edc2167d1a624b3bf2ec0180 | |
parent | b2cd1df66037e7c4697c7e40496bf7e4a5e16a2d (diff) | |
download | linux-8bbfbc2df6e9a37bc5c9ee674c496ea277b0bd39.tar.bz2 |
ARCv2: cache: fix slc_entire_op: flush only instead of flush-n-inv
slc_entire_op with OP_FLUSH command also invalidates it.
This is a preventive fix as the current use of slc_entire_op is only
with OP_FLUSH_N_INV where the invalidate is required.
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
[vgupta: fixed changelog]
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
-rw-r--r-- | arch/arc/mm/cache.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c index eee924dfffa6..2072f3451e9c 100644 --- a/arch/arc/mm/cache.c +++ b/arch/arc/mm/cache.c @@ -780,7 +780,10 @@ noinline static void slc_entire_op(const int op) write_aux_reg(r, ctrl); - write_aux_reg(ARC_REG_SLC_INVALIDATE, 1); + if (op & OP_INV) /* Inv or flush-n-inv use same cmd reg */ + write_aux_reg(ARC_REG_SLC_INVALIDATE, 0x1); + else + write_aux_reg(ARC_REG_SLC_FLUSH, 0x1); /* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */ read_aux_reg(r); |