changeset 8c9ed0314ed1 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=8c9ed0314ed1
description:
        mem: Fix bug in cache request retry mechanism

        This patch ensures that inhibited packets that are about to be turned
        into express snoops do not update the retry flag in the cache.

diffstat:

 src/mem/cache/cache_impl.hh |  11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diffs (22 lines):

diff -r 899c0e7e85f1 -r 8c9ed0314ed1 src/mem/cache/cache_impl.hh
--- a/src/mem/cache/cache_impl.hh       Tue Jan 20 08:11:58 2015 -0500
+++ b/src/mem/cache/cache_impl.hh       Tue Jan 20 08:12:01 2015 -0500
@@ -2029,11 +2029,14 @@
 
     bool success = false;
 
-    // always let inhibited requests through, even if blocked
+    // always let inhibited requests through, even if blocked,
+    // ultimately we should check if this is an express snoop, but at
+    // the moment that flag is only set in the cache itself
     if (pkt->memInhibitAsserted()) {
-        // this should always succeed
-        success = cache->recvTimingReq(pkt);
-        assert(success);
+        // do not change the current retry state
+        bool M5_VAR_USED bypass_success = cache->recvTimingReq(pkt);
+        assert(bypass_success);
+        return true;
     } else if (blocked || mustSendRetry) {
         // either already committed to send a retry, or blocked
         success = false;
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to