summaryrefslogtreecommitdiff
path: root/src/mem/cache/mshr.hh
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@arm.com>2018-03-17 00:52:52 +0000
committerNikos Nikoleris <nikos.nikoleris@arm.com>2018-06-22 17:39:16 +0000
commite656eeb288f8de94cc293012ba74c9c05fd75da3 (patch)
tree8b18642ed0c318ef280508166282cca4058dce99 /src/mem/cache/mshr.hh
parent97075b9982537b8d7cf7f921b8e0e667ffa7691c (diff)
downloadgem5-e656eeb288f8de94cc293012ba74c9c05fd75da3.tar.xz
mem-cache: Fix promoting of targets that need writable
There are cases where a request which does not need a writable copy gets an response upgraded reponse and fills in a writable copy. When this happens, we promote deferred MSHR targets that were deferred because they needed a writable copy to service them immediately. Previously, we would uncoditionally promote deferred targets. Since the deferred targets might contain a cache invalidation operation, we have to make sure that any targets following the cache invalidation is not promoted. Change-Id: I1f7b28f7d35f84329e065c8f63117db21852365a Reviewed-on: https://gem5-review.googlesource.com/11016 Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/mem/cache/mshr.hh')
-rw-r--r--src/mem/cache/mshr.hh7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mem/cache/mshr.hh b/src/mem/cache/mshr.hh
index f93d3c0f5..71c2da2c4 100644
--- a/src/mem/cache/mshr.hh
+++ b/src/mem/cache/mshr.hh
@@ -385,6 +385,13 @@ class MSHR : public QueueEntry, public Printable
bool promoteDeferredTargets();
+ /**
+ * Promotes deferred targets that do not require writable
+ *
+ * Requests in the deferred target list are moved to the target
+ * list up until the first target that is a cache maintenance
+ * operation or needs a writable copy of the block
+ */
void promoteWritable();
bool checkFunctional(PacketPtr pkt);