While looking at traces, I discovered some odd behavior with the DMA ports.
After successfully sending a packet, it keeps trying to send it. I
determined that the problem is that even though the DmaPort pops the packet
off the queue, it does not get the new front. This does not typically cause
a problem, because the attempt to send the packet a second time will always
fail, but it doesn't change the fact that it is a bug. It is present from
2.0b5 to the latest unstable. I have included a simple patch below.
- Clint Smullen
--- io_device.cc 2008-08-25 16:05:51.321310000 -0400
+++ io_device.cc 2008-08-25 17:12:14.139920000 -0400
@@ -190,9 +190,9 @@
DmaPort::recvRetry()
{
assert(transmitList.size());
- PacketPtr pkt = transmitList.front();
bool result = true;
do {
+ PacketPtr pkt = transmitList.front();
DPRINTF(DMA, "Retry on %s addr %#x\n",
pkt->cmdString(), pkt->getAddr());
result = sendTiming(pkt);
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev