diff -r 55f345f251a2 -r 9166b2ea07f0 src/mem/cache/cache.cc --- a/src/mem/cache/cache.cc Wed Dec 09 23:48:26 2015 +0000 +++ b/src/mem/cache/cache.cc Wed Dec 09 23:48:39 2015 +0000 @@ -2336,6 +2336,10 @@ // dirty one. Packet snoop_pkt(tgt_pkt, true, false); snoop_pkt.setExpressSnoop(); + // We are sending this packet upwards, but if it hits we will + // get a snoop response that we end up treating just like a + // normal response, hence it needs the MSHR as its sender + // state snoop_pkt.senderState = mshr; cpuSidePort->sendTimingSnoopReq(&snoop_pkt); @@ -2405,7 +2409,9 @@ } assert(pkt != NULL); - pkt->senderState = mshr; + // play it safe an append (rather than set) the sender state, as + // forwarded packets may already have existing state + pkt->pushSenderState(mshr); return pkt; }