changeset 091531fa23ad in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=091531fa23ad
description:
        mem: Check the XBar's port queues on functional snoops

        The CoherentXBar currently doesn't check its queued slave ports when
        receiving a functional snoop. This caused data corruption in cases
        when a modified cache lines is forwarded between two caches.

        Add the required functional calls into the queued slave ports.

diffstat:

 src/mem/coherent_xbar.cc |  8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diffs (18 lines):

diff -r 854e61d5390e -r 091531fa23ad src/mem/coherent_xbar.cc
--- a/src/mem/coherent_xbar.cc  Wed Nov 04 12:36:28 2015 -0600
+++ b/src/mem/coherent_xbar.cc  Fri Nov 06 03:26:09 2015 -0500
@@ -832,6 +832,14 @@
                 pkt->cmdString());
     }
 
+    for (const auto& p : slavePorts) {
+        if (p->checkFunctional(pkt)) {
+            if (pkt->needsResponse())
+                pkt->makeResponse();
+            return;
+        }
+    }
+
     // forward to all snoopers
     forwardFunctional(pkt, InvalidPortID);
 }
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to