Anthony Gutierrez has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/19708 )
Change subject: mem-ruby: Remove assertion with incorrect assumption
......................................................................
mem-ruby: Remove assertion with incorrect assumption
Current code assumes that only one cacheline would either be in
RW. This is not true for GPU protocols, and may not be true
for some CPU-only protocols with state violations.
Change-Id: I70db4fbb4e80663551e8635307bb937a4db8dc63
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19708
Reviewed-by: Jason Lowe-Power <ja...@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutier...@amd.com>
Reviewed-by: Nikos Nikoleris <nikos.nikole...@arm.com>
Maintainer: Jason Lowe-Power <ja...@lowepower.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/mem/ruby/system/RubySystem.cc
1 file changed, 8 insertions(+), 2 deletions(-)
Approvals:
Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
Nikos Nikoleris: Looks good to me, approved
Anthony Gutierrez: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/mem/ruby/system/RubySystem.cc
b/src/mem/ruby/system/RubySystem.cc
index 572f5fe..83fa4c7 100644
--- a/src/mem/ruby/system/RubySystem.cc
+++ b/src/mem/ruby/system/RubySystem.cc
@@ -432,7 +432,6 @@
access_perm == AccessPermission_NotPresent)
num_invalid++;
}
- assert(num_rw <= 1);
// This if case is meant to capture what happens in a Broadcast/Snoop
// protocol where the block does not exist in the cache hierarchy. You
@@ -451,7 +450,14 @@
return true;
}
}
- } else if (num_ro > 0 || num_rw == 1) {
+ } else if (num_ro > 0 || num_rw >= 1) {
+ if (num_rw > 1) {
+ // We iterate over the vector of abstract controllers, and
return
+ // the first copy found. If we have more than one cache with
block
+ // in writable permission, the first one found would be
returned.
+ warn("More than one Abstract Controller with RW permission
for "
+ "addr: %#x on cacheline: %#x.", address, line_address);
+ }
// In Broadcast/Snoop protocols, this covers if you know the block
// exists somewhere in the caching hierarchy, then you want to
read any
// valid RO or RW block. In directory protocols, same thing, you
want
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19708
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I70db4fbb4e80663551e8635307bb937a4db8dc63
Gerrit-Change-Number: 19708
Gerrit-PatchSet: 5
Gerrit-Owner: Pouya Fotouhi <pfoto...@ucdavis.edu>
Gerrit-Reviewer: Anthony Gutierrez <anthony.gutier...@amd.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Nikos Nikoleris <nikos.nikole...@arm.com>
Gerrit-Reviewer: Pouya Fotouhi <pfoto...@ucdavis.edu>
Gerrit-Reviewer: Tiago Mück <tiago.m...@arm.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev