summaryrefslogtreecommitdiff
path: root/src/mem/cache/mshr.cc
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@arm.com>2016-12-05 16:48:29 -0500
committerNikos Nikoleris <nikos.nikoleris@arm.com>2016-12-05 16:48:29 -0500
commit0054f1ad53f00621df82d201b38c03f088786d27 (patch)
treeafa111820f0bd5582bb7b12629649c2a9d67e08a /src/mem/cache/mshr.cc
parent9916e4276cf7d5354e8e95c239698ee38a7f8674 (diff)
downloadgem5-0054f1ad53f00621df82d201b38c03f088786d27.tar.xz
mem: Respond to InvalidateReq when the block is (pending) dirty
Previously when an InvalidateReq snooped a cache with a dirty block or a pending modified MSHR, it would invalidate the block or set the postInv flag. The cache would not send an InvalidateResp. though, causing memory order violations. This patches changes this behavior, making the cache with the dirty block or pending modified MSHR the ordering point. Change-Id: Ib4c31012f4f6693ffb137cd77258b160fbc239ca Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Diffstat (limited to 'src/mem/cache/mshr.cc')
-rw-r--r--src/mem/cache/mshr.cc3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc
index 7c560095c..577e8eb79 100644
--- a/src/mem/cache/mshr.cc
+++ b/src/mem/cache/mshr.cc
@@ -402,8 +402,7 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
// Start by determining if we will eventually respond or not,
// matching the conditions checked in Cache::handleSnoop
- bool will_respond = isPendingModified() && pkt->needsResponse() &&
- pkt->cmd != MemCmd::InvalidateReq;
+ bool will_respond = isPendingModified() && pkt->needsResponse();
// The packet we are snooping may be deleted by the time we
// actually process the target, and we consequently need to