# Node ID cf108c6a0aa0a37d4ee6df161df82ca3b9d3d038 # Parent b09e5d4ea2b3753dea9e583875625a89c8a33d10 diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -1807,7 +1807,7 @@ Tick nextReady = std::min(mshrQueue.nextMSHRReadyTime(), writeBuffer.nextMSHRReadyTime()); - if (prefetcher) { + if (prefetcher && !mshrQueue.isFull()) { nextReady = std::min(nextReady, prefetcher->nextPrefetchReadyTime()); } diff --git a/src/mem/packet_queue.cc b/src/mem/packet_queue.cc --- a/src/mem/packet_queue.cc +++ b/src/mem/packet_queue.cc @@ -180,7 +180,7 @@ // if the sendTiming caused someone else to call our // recvTiming we could already have an event scheduled, check if (!sendEvent.scheduled()) - em.schedule(&sendEvent, std::max(nextReady, curTick() + 1)); + em.schedule(&sendEvent, std::max(nextReady, curTick())); } else { // no more to send, so if we're draining, we may be done if (drainManager && transmitList.empty() && !sendEvent.scheduled()) {