From 3be4f4b846f991c98fe1909631996c5b58d52437 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Wed, 3 Sep 2014 07:42:50 -0400 Subject: 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.hh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/mem/cache/base.hh') diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh index c1c77cde9..1567aaa62 100644 --- a/src/mem/cache/base.hh +++ b/src/mem/cache/base.hh @@ -182,7 +182,10 @@ class BaseCache : public MemObject private: - EventWrapper sendRetryEvent; + void processSendRetry(); + + EventWrapper sendRetryEvent; }; -- cgit v1.2.3