mem: Fix scheduling bug in SimpleMemory

This patch ensures that a dequeue event is not scheduled if the memory
controller is waiting for a retry already. Without this check it is
possible for the controller to attempt sending something whilst
already having one packet that is in retry, thus causing the bus to
have an assertion failure.
This commit is contained in:
Andreas Hansson 2013-09-18 08:46:33 -04:00
parent cecb951f60
commit 9aa939891f

View file

@ -155,7 +155,7 @@ SimpleMemory::recvTimingReq(PacketPtr pkt)
// the end even if the latency suggests it should be sent
// before the packet(s) before it
packetQueue.push_back(DeferredPacket(pkt, curTick() + getLatency()));
if (!dequeueEvent.scheduled())
if (!retryResp && !dequeueEvent.scheduled())
schedule(dequeueEvent, packetQueue.back().tick);
} else {
pendingDelete.push_back(pkt);