2545c2545
< Cache::CpuSidePort::recvTimingReq(PacketPtr pkt)
---
> Cache::CpuSidePort::tryTiming(PacketPtr pkt)
2549c2549,2559
< bool success = false;
---
> // always let express snoop packets through if even if blocked
> if (pkt->isExpressSnoop()) {
> return true;
> } else if (isBlocked() || mustSendRetry) {
> // either already committed to send a retry, or blocked
> mustSendRetry = true;
> return false;
> }
> mustSendRetry = false;
> return true;
> }
2550a2561,2565
> bool
> Cache::CpuSidePort::recvTimingReq(PacketPtr pkt)
> {
> assert(!cache->system->bypassCaches());
>
2553d2567
< // do not change the current retry state
2557,2563d2570
< } else if (blocked || mustSendRetry) {
< // either already committed to send a retry, or blocked
< success = false;
< } else {
< // pass it on to the cache, and let the cache decide if we
< // have to retry or not
< success = cache->recvTimingReq(pkt);
2566,2568c2573
< // remember if we have to retry
< mustSendRetry = !success;
< return success;
---
> return tryTiming(pkt) && cache->recvTimingReq(pkt);