changeset 4d8b7783a692 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=4d8b7783a692
description:
        mem: Tidy up the snoop state-transition logic

        Remove broken and unused option to pass dirty data on non-exclusive
        snoops. Also beef up the comments a bit.

diffstat:

 src/mem/cache/cache.cc |  21 +++++++++------------
 1 files changed, 9 insertions(+), 12 deletions(-)

diffs (40 lines):

diff -r 31ab5ca6836d -r 4d8b7783a692 src/mem/cache/cache.cc
--- a/src/mem/cache/cache.cc    Fri Sep 04 13:13:55 2015 -0400
+++ b/src/mem/cache/cache.cc    Fri Sep 04 13:13:58 2015 -0400
@@ -1828,17 +1828,13 @@
     }
 
     if (!pkt->req->isUncacheable() && pkt->isRead() && !invalidate) {
+        // reading non-exclusive shared data, note that we retain
+        // the block in owned state if it is dirty, with the response
+        // taken care of below, and otherwhise simply downgrade to
+        // shared
         assert(!needs_exclusive);
         pkt->assertShared();
-        int bits_to_clear = BlkWritable;
-        const bool haveOwnershipState = true; // for now
-        if (!haveOwnershipState) {
-            // if we don't support pure ownership (dirty && !writable),
-            // have to clear dirty bit here, assume memory snarfs data
-            // on cache-to-cache xfer
-            bits_to_clear |= BlkDirty;
-        }
-        blk->status &= ~bits_to_clear;
+        blk->status &= ~BlkWritable;
     }
 
     if (respond) {
@@ -1850,9 +1846,10 @@
         // will write it back at a later point
         pkt->assertMemInhibit();
         if (have_exclusive) {
-            // in the case of an uncacheable request there is no need
-            // to set the exclusive flag, but since the recipient does
-            // not care there is no harm in doing so
+            // in the case of an uncacheable request there is no point
+            // in setting the exclusive flag, but since the recipient
+            // does not care there is no harm in doing so, in any case
+            // it is just a hint
             pkt->setSupplyExclusive();
         }
         if (is_timing) {
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to