Hello Anouk Van Laer,

I'd like you to do a code review. Please visit

    https://gem5-review.googlesource.com/5052

to review the following change.


Change subject: mem: Allow CMOs as snooping requests in the snoop filter
......................................................................

mem: Allow CMOs as snooping requests in the snoop filter

The snoop filter performs sanity checks of the type of packets that
are expected to snoop caches above. Cache maintenace operations are
expected to perform a clean and or invalidate on all caches down to
the specified point of reference and therefore could also generate
snoops.

Change-Id: I7f8fef246a85faa87ccd289c28b49686ed7caa08
Reviewed-by: Stephan Diestelhorst <[email protected]>
Reviewed-by: Anouk Van Laer <[email protected]>
---
M src/mem/snoop_filter.cc
1 file changed, 7 insertions(+), 4 deletions(-)



diff --git a/src/mem/snoop_filter.cc b/src/mem/snoop_filter.cc
index e8f4495..68e05a0 100755
--- a/src/mem/snoop_filter.cc
+++ b/src/mem/snoop_filter.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016 ARM Limited
+ * Copyright (c) 2013-2017 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -215,10 +215,13 @@
// ReadEx and Writes require both invalidation and exlusivity, while reads // require neither. Writebacks on the other hand require exclusivity but
     // not the invalidation. Previously Writebacks did not generate upward
- // snoops so this was never an aissue. Now that Writebacks generate snoops
-    // we need to special case for Writebacks.
+ // snoops so this was never an issue. Now that Writebacks generate snoops + // we need a special case for Writebacks. Additionally cache maintenance
+    // operations can generate snoops as they clean and/or invalidate all
+    // caches down to the specified point of reference.
     assert(cpkt->isWriteback() || cpkt->req->isUncacheable() ||
-           (cpkt->isInvalidate() == cpkt->needsWritable()));
+           (cpkt->isInvalidate() == cpkt->needsWritable()) ||
+           cpkt->req->isCacheMaintenance());
     if (cpkt->isInvalidate() && !sf_item.requested) {
// Early clear of the holder, if no other request is currently going on // @todo: This should possibly be updated even though we do not filter

--
To view, visit https://gem5-review.googlesource.com/5052
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7f8fef246a85faa87ccd289c28b49686ed7caa08
Gerrit-Change-Number: 5052
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris <[email protected]>
Gerrit-Reviewer: Anouk Van Laer <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to