}
// Once you're done emptying the write queue, check if there's
- // anything in the read queue, and call schedule if required
- schedule(nextReqEvent, busBusyUntil);
+ // anything in the read queue, and call schedule if required. The
+ // retry above could already have caused it to be scheduled, so
+ // first check
+ if (!nextReqEvent.scheduled())
+ schedule(nextReqEvent, busBusyUntil);
}
void
// next tick
port.schedTimingResp(pkt, curTick() + 1);
} else {
+ // @todo the packet is going to be deleted, and the DRAMPacket
+ // is still having a pointer to it
+ pendingDelete.push_back(pkt);
}
DPRINTF(DRAM, "Done\n");