diff options
author | Ali Jafri <ali.jafri@arm.com> | 2015-11-06 03:26:37 -0500 |
---|---|---|
committer | Ali Jafri <ali.jafri@arm.com> | 2015-11-06 03:26:37 -0500 |
commit | 52c8ae5187cb6ba8d15a8de6526f56defe541f5b (patch) | |
tree | 640bbc8a9d75c731939354a716cd734acad8f909 /src/mem/dram_ctrl.cc | |
parent | 6b70afd0d4ec8821105e506d7a20f9af01b8eafb (diff) | |
download | gem5-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/dram_ctrl.cc')
-rw-r--r-- | src/mem/dram_ctrl.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index abf570910..2364834e3 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -860,7 +860,7 @@ DRAMCtrl::accessAndRespond(PacketPtr pkt, Tick static_latency) // queue the packet in the response queue to be sent out after // the static latency has passed - port.schedTimingResp(pkt, response_time); + port.schedTimingResp(pkt, response_time, true); } else { // @todo the packet is going to be deleted, and the DRAMPacket // is still having a pointer to it |