From 7958f34797857fecf803fa4a2fcd018a8fffb640 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Wed, 24 Feb 2016 04:16:57 -0500 Subject: mem: Ensure that InvalidateReq is not forwarded as ReadExReq This patch fixes an issue where an InvalidationReq only traversed one level of the cache hierarchy, and was subsequently turned into a ReadExReq due to it needing writable, and the command not being checked for explicitly. --- src/mem/cache/cache.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mem') diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc index e9b909646..724ccc7d6 100644 --- a/src/mem/cache/cache.cc +++ b/src/mem/cache/cache.cc @@ -966,7 +966,8 @@ Cache::getBusPacket(PacketPtr cpu_pkt, CacheBlk *blk, // where the determination the StoreCond fails is delayed due to // all caches not being on the same local bus. cmd = MemCmd::SCUpgradeFailReq; - } else if (cpu_pkt->cmd == MemCmd::WriteLineReq) { + } else if (cpu_pkt->cmd == MemCmd::WriteLineReq || + cpu_pkt->cmd == MemCmd::InvalidateReq) { // forward as invalidate to all other caches, this gives us // the line in Exclusive state, and invalidates all other // copies -- cgit v1.2.3