summaryrefslogtreecommitdiff
path: root/src/mem/dramsim2.cc
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2015-11-06 03:26:35 -0500
committerAndreas Hansson <andreas.hansson@arm.com>2015-11-06 03:26:35 -0500
commit8bc925e36d0e5de7e70a6d5bf2b1824649932599 (patch)
tree8ffddb6d34d4c574e9d43b75c5be804a1d0d328e /src/mem/dramsim2.cc
parent8e55d51aaa71d71c7058e8ee15c89d3482991ba2 (diff)
downloadgem5-8bc925e36d0e5de7e70a6d5bf2b1824649932599.tar.xz
mem: Align rules for sinking inhibited packets at the slave
This patch aligns how the memory-system slaves, i.e. the various memory controllers and the bridge, identify and deal with sinking of inhibited packets that are only useful within the coherent part of the memory system. In the future we could shift the onus to the crossbar, and add a parameter "is_point_of_coherence" that would allow it to sink the aforementioned packets.
Diffstat (limited to 'src/mem/dramsim2.cc')
-rw-r--r--src/mem/dramsim2.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mem/dramsim2.cc b/src/mem/dramsim2.cc
index cd0f45b23..58227e06a 100644
--- a/src/mem/dramsim2.cc
+++ b/src/mem/dramsim2.cc
@@ -175,16 +175,18 @@ DRAMSim2::recvFunctional(PacketPtr pkt)
bool
DRAMSim2::recvTimingReq(PacketPtr pkt)
{
- // we should never see a new request while in retry
- assert(!retryReq);
-
+ // sink inhibited packets without further action
if (pkt->memInhibitAsserted()) {
- // snooper will supply based on copy of packet
- // still target's responsibility to delete packet
pendingDelete.reset(pkt);
return true;
}
+ // we should not get a new request after committing to retry the
+ // current one, but unfortunately the CPU violates this rule, so
+ // simply ignore it for now
+ if (retryReq)
+ return false;
+
// if we cannot accept we need to send a retry once progress can
// be made
bool can_accept = nbrOutstanding() < wrapper.queueSize();