summaryrefslogtreecommitdiff
path: root/src/mem/qport.hh
diff options
context:
space:
mode:
authorAli Jafri <ali.jafri@arm.com>2015-11-06 03:26:37 -0500
committerAli Jafri <ali.jafri@arm.com>2015-11-06 03:26:37 -0500
commit52c8ae5187cb6ba8d15a8de6526f56defe541f5b (patch)
tree640bbc8a9d75c731939354a716cd734acad8f909 /src/mem/qport.hh
parent6b70afd0d4ec8821105e506d7a20f9af01b8eafb (diff)
downloadgem5-52c8ae5187cb6ba8d15a8de6526f56defe541f5b.tar.xz
mem: Enforce insertion order on the cache response path
This patch enforces insertion order transmission of packets on the response path in the cache. Note that the logic to enforce order is already present in the packet queue, this patch simply turns it on for queues in the response path. Without this patch, there are corner cases where a request-response is faster than a response-response forwarded through the cache. This violation of queuing order causes problems in the snoop filter leaving it with inaccurate information. This causes assert failures in the snoop filter later on. A follow on patch relaxes the order enforcement in the packet queue to limit the performance impact.
Diffstat (limited to 'src/mem/qport.hh')
-rw-r--r--src/mem/qport.hh4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mem/qport.hh b/src/mem/qport.hh
index 94bcc53fd..b15bdfec2 100644
--- a/src/mem/qport.hh
+++ b/src/mem/qport.hh
@@ -88,8 +88,8 @@ class QueuedSlavePort : public SlavePort
* @param pkt Packet to send
* @param when Absolute time (in ticks) to send packet
*/
- void schedTimingResp(PacketPtr pkt, Tick when)
- { respQueue.schedSendTiming(pkt, when); }
+ void schedTimingResp(PacketPtr pkt, Tick when, bool force_order = false)
+ { respQueue.schedSendTiming(pkt, when, force_order); }
/** Check the list of buffered packets against the supplied
* functional request. */