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:
parent
496a8c6c92
commit
7958f34797
1 changed files with 2 additions and 1 deletions
3
src/mem/cache/cache.cc
vendored
3
src/mem/cache/cache.cc
vendored
|
@ -966,7 +966,8 @@ Cache::getBusPacket(PacketPtr cpu_pkt, CacheBlk *blk,
|
||||||
// where the determination the StoreCond fails is delayed due to
|
// where the determination the StoreCond fails is delayed due to
|
||||||
// all caches not being on the same local bus.
|
// all caches not being on the same local bus.
|
||||||
cmd = MemCmd::SCUpgradeFailReq;
|
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
|
// forward as invalidate to all other caches, this gives us
|
||||||
// the line in Exclusive state, and invalidates all other
|
// the line in Exclusive state, and invalidates all other
|
||||||
// copies
|
// copies
|
||||||
|
|
Loading…
Reference in a new issue