undo my previous bus change, it can make the bus deadlock.. so it still constantly...
authorAli Saidi <saidi@eecs.umich.edu>
Thu, 10 May 2007 02:23:01 +0000 (22:23 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Thu, 10 May 2007 02:23:01 +0000 (22:23 -0400)
--HG--
extra : convert_revision : b5ef1aa0a6a2e32bd775d2dbcad9cd9505ad9b78

src/mem/bus.cc

index 6682ade5585a79f72c9347847c7bdc3f276c74bd..95d4e2873af9679247cb36d82a12dbc89e4929b9 100644 (file)
@@ -171,8 +171,9 @@ bool
 Bus::recvTiming(PacketPtr pkt)
 {
     Port *port;
-    DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n",
-            pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString());
+    DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s result %d\n",
+            pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString(),
+            pkt->result);
 
     BusPort *pktPort;
     if (pkt->getSrc() == defaultId)
@@ -272,20 +273,14 @@ Bus::recvRetry(int id)
             retryList.pop_front();
             inRetry = false;
 
-            if (id != -1) {
-                //Bring tickNextIdle up to the present
-                while (tickNextIdle < curTick)
-                    tickNextIdle += clock;
-
-                //Burn a cycle for the missed grant.
+            //Bring tickNextIdle up to the present
+            while (tickNextIdle < curTick)
                 tickNextIdle += clock;
 
-                if (!busIdle.scheduled()) {
-                    busIdle.schedule(tickNextIdle);
-                } else {
-                    busIdle.reschedule(tickNextIdle);
-                }
-            } // id != -1
+            //Burn a cycle for the missed grant.
+            tickNextIdle += clock;
+
+            busIdle.reschedule(tickNextIdle, true);
         }
     }
     //If we weren't able to drain before, we might be able to now.