From: Andreas Hansson Date: Thu, 26 May 2016 10:56:24 +0000 (+0100) Subject: mem: Do not set cacheResponding on MSHR snoop if not responding X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4ff4f9c531feb99561105117b6ceeb4eb85d7829;p=gem5.git mem: Do not set cacheResponding on MSHR snoop if not responding 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 --- diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc index 56284dcc6..71cfca7bd 100644 --- a/src/mem/cache/mshr.cc +++ b/src/mem/cache/mshr.cc @@ -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