diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/cache/mshr.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc index 13a50169c..4241fa375 100644 --- a/src/mem/cache/mshr.cc +++ b/src/mem/cache/mshr.cc @@ -612,8 +612,10 @@ MSHR::promoteReadable() void MSHR::promoteWritable() { + PacketPtr def_tgt_pkt = deferredTargets.front().pkt; if (deferredTargets.needsWritable && - !(hasPostInvalidate() || hasPostDowngrade())) { + !(hasPostInvalidate() || hasPostDowngrade()) && + !def_tgt_pkt->req->isCacheInvalidate()) { // We got a writable response, but we have deferred targets // which are waiting to request a writable copy (not because // of a pending invalidate). This can happen if the original |