changeset ebb3d0737aa7 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=ebb3d0737aa7
description:
        mem: Add check for express snoop in packet destructor

        Snoop packets share the request pointer with the originating
        packets. We need to ensure that the snoop packet destruction does not
        delete the request. Snoops are used for reads, invalidations,
        HardPFReqs, Writebacks and CleansEvicts. Reads, invalidations, and
        HardPFReqs need a response so their snoops do not delete the
        request. For Writebacks and CleanEvicts we need to check explicitly
        for whethere the current packet is an express snoop, in whcih case do
        not delete the request.

diffstat:

 src/mem/packet.hh |  15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diffs (26 lines):

diff -r 119cfadf2203 -r ebb3d0737aa7 src/mem/packet.hh
--- a/src/mem/packet.hh Tue Jun 09 09:21:17 2015 -0400
+++ b/src/mem/packet.hh Tue Jun 09 09:21:18 2015 -0400
@@ -692,11 +692,18 @@
      */
     ~Packet()
     {
-        // If this is a request packet for which there's no response,
-        // delete the request object here, since the requester will
-        // never get the chance.
-        if (req && isRequest() && !needsResponse())
+        // Delete the request object if this is a request packet which
+        // does not need a response, because the requester will not get
+        // a chance. If the request packet needs a response then the
+        // request will be deleted on receipt of the response
+        // packet. We also make sure to never delete the request for
+        // express snoops, even for cases when responses are not
+        // needed (CleanEvict and Writeback), since the snoop packet
+        // re-uses the same request.
+        if (req && isRequest() && !needsResponse() &&
+            !isExpressSnoop()) {
             delete req;
+        }
         deleteData();
     }
 
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to