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.
This commit is contained in:
Andreas Hansson 2016-02-24 04:16:57 -05:00
parent 496a8c6c92
commit 7958f34797

View file

@ -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