diff options
Diffstat (limited to 'src/mem/cache')
-rw-r--r-- | src/mem/cache/cache.cc | 12 | ||||
-rw-r--r-- | src/mem/cache/mshr.cc | 3 |
2 files changed, 5 insertions, 10 deletions
diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc index 1a169c8ea..9079606cf 100644 --- a/src/mem/cache/cache.cc +++ b/src/mem/cache/cache.cc @@ -1783,9 +1783,6 @@ Cache::handleFill(PacketPtr pkt, CacheBlk *blk, PacketList &writebacks, // dirty as part of satisfyRequest if (pkt->cmd == MemCmd::WriteLineReq) { assert(!pkt->hasSharers()); - // at the moment other caches do not respond to the - // invalidation requests corresponding to a whole-line write - assert(!pkt->cacheResponding()); } // here we deal with setting the appropriate state of the line, @@ -1985,11 +1982,10 @@ Cache::handleSnoop(PacketPtr pkt, CacheBlk *blk, bool is_timing, // We may end up modifying both the block state and the packet (if // we respond in atomic mode), so just figure out what to do now - // and then do it later. If we find dirty data while snooping for - // an invalidate, we don't need to send a response. The + // and then do it later. We respond to all snoops that need + // responses provided we have the block in dirty state. The // invalidation itself is taken care of below. - bool respond = blk->isDirty() && pkt->needsResponse() && - pkt->cmd != MemCmd::InvalidateReq; + bool respond = blk->isDirty() && pkt->needsResponse(); bool have_writable = blk->isWritable(); // Invalidate any prefetch's from below that would strip write permissions @@ -2160,7 +2156,7 @@ Cache::recvTimingSnoopReq(PacketPtr pkt) // state to determine if it is dirty and writable, we use the // command and fields of the writeback packet bool respond = wb_pkt->cmd == MemCmd::WritebackDirty && - pkt->needsResponse() && pkt->cmd != MemCmd::InvalidateReq; + pkt->needsResponse(); bool have_writable = !wb_pkt->hasSharers(); bool invalidate = pkt->isInvalidate(); 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 |