mem: Do not set cacheResponding on MSHR snoop if not responding
authorAndreas Hansson <andreas.hansson@arm.com>
Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)
committerAndreas Hansson <andreas.hansson@arm.com>
Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)
This patch changes the flow control for HSHR::handleSnoop to ensure
that we only set cacheResponding on the snoop packet if we are
actually responding. This avoids situations where a responder is
stalling indefinitely on a response that never arrives.

Change-Id: I691dd01755b614b30203581aa74fc743b350eacc
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
src/mem/cache/mshr.cc

index 56284dcc60748ab7141b489c184a8a5957b069b4..71cfca7bdb5b513f2382fbf99c2cc4083f5e54ba 100644 (file)
@@ -400,7 +400,7 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
         PacketPtr cp_pkt = will_respond ? new Packet(pkt, true, true) :
             new Packet(new Request(*pkt->req), pkt->cmd);
 
-        if (isPendingModified()) {
+        if (will_respond) {
             // we are the ordering point, and will consequently
             // respond, and depending on whether the packet
             // needsWritable or not we either pass a Shared line or a