Make the bus work if the other sides recvRetry doesn't call sendTiming for some reason.
--HG-- extra : convert_revision : e722ddb0354a5c021dc7c44a3e2f0a64e962442b
This commit is contained in:
parent
c9102b08fa
commit
a139e4394d
|
@ -214,9 +214,24 @@ Bus::recvRetry(int id)
|
|||
retryList.front()->sendRetry();
|
||||
// If inRetry is still true, sendTiming wasn't called
|
||||
if (inRetry)
|
||||
panic("Port %s didn't call sendTiming in it's recvRetry\n",\
|
||||
retryList.front()->getPeer()->name());
|
||||
//assert(!inRetry);
|
||||
{
|
||||
retryList.front()->onRetryList(false);
|
||||
retryList.pop_front();
|
||||
inRetry = false;
|
||||
|
||||
//Bring tickNextIdle up to the present
|
||||
while (tickNextIdle < curTick)
|
||||
tickNextIdle += clock;
|
||||
|
||||
//Burn a cycle for the missed grant.
|
||||
tickNextIdle += clock;
|
||||
|
||||
if (!busIdle.scheduled()) {
|
||||
busIdle.schedule(tickNextIdle);
|
||||
} else {
|
||||
busIdle.reschedule(tickNextIdle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue