No need to keep trying to request the data bus if we are already waiting.
authorRon Dreslinski <rdreslin@umich.edu>
Sat, 7 Oct 2006 16:20:29 +0000 (12:20 -0400)
committerRon Dreslinski <rdreslin@umich.edu>
Sat, 7 Oct 2006 16:20:29 +0000 (12:20 -0400)
--HG--
extra : convert_revision : dbaad52ed8d0841dc9224661e3df0d8ef4989aa3

src/mem/cache/base_cache.cc

index fd97ea3aa5fcd72c698d7c6d0f9af67f8c6d8a75..4b62073d8e0706e0f2fd374abd00ba398a778be1 100644 (file)
@@ -211,7 +211,11 @@ BaseCache::CacheEvent::process()
     //Know the packet to send
     pkt->result = Packet::Success;
     pkt->makeTimingResponse();
-    if (!cachePort->sendTiming(pkt)) {
+    if (!drainList.empty()) {
+        //Already blocked waiting for bus, just append
+        cachePort->drainList.push_back(pkt);
+    }
+    else if (!cachePort->sendTiming(pkt)) {
         //It failed, save it to list of drain events
         cachePort->drainList.push_back(pkt);
     }