mem: Fix a bug in the cache port flow control
authorAndreas Hansson <andreas.hansson@arm.com>
Wed, 3 Sep 2014 11:42:50 +0000 (07:42 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Wed, 3 Sep 2014 11:42:50 +0000 (07:42 -0400)
commit3be4f4b846f991c98fe1909631996c5b58d52437
treed9e603e739e999def333ae04c2386af0c1dd1fdb
parent5d029463eef3cfafa507dacadccd33402f82029a
mem: Fix a bug in the cache port flow control

This patch fixes a bug in the cache port where the retry flag was
reset too early, allowing new requests to arrive before the retry was
actually sent, but with the event already scheduled. This caused a
deadlock in the interactions with the O3 LSQ.

The patche fixes the underlying issue by shifting the resetting of the
flag to be done by the event that also calls sendRetry(). The patch
also tidies up the flow control in recvTimingReq and ensures that we
also check if we already have a retry outstanding.
src/mem/cache/base.cc
src/mem/cache/base.hh
src/mem/cache/cache_impl.hh