commit | 1dfd319d9891dc65c59d786c22cfe28864ef9ad5 | [log] [tgz] |
---|---|---|
author | Tiago Mück <tiago.muck@arm.com> | Fri Apr 08 10:44:03 2022 -0500 |
committer | Tiago Muck <tiago.muck@arm.com> | Wed Jun 01 15:23:47 2022 +0000 |
tree | c8ef128e0e83ff4655a57ba990c80b9f91247e98 | |
parent | dc33a16993d1b13977eebfe19119b931dddd17db [diff] |
mem-ruby: fix data state for partial WU When receiving data from a WriteUniquePtl we were wrongfully clearing the data valid flag. JIRA: https://gem5.atlassian.net/browse/GEM5-1195 Change-Id: I5c17433f1cfb706e443a0169a9f0e99ff5c1fcc0 Signed-off-by: Tiago Mück <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59989 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com>
diff --git a/src/mem/ruby/protocol/chi/CHI-cache-actions.sm b/src/mem/ruby/protocol/chi/CHI-cache-actions.sm index 968cdf2..7208fc2 100644 --- a/src/mem/ruby/protocol/chi/CHI-cache-actions.sm +++ b/src/mem/ruby/protocol/chi/CHI-cache-actions.sm
@@ -1934,7 +1934,12 @@ peek(datInPort, CHIDataMsg) { assert(in_msg.type == CHIDataType:NCBWrData); tbe.dataDirty := true; - tbe.dataValid := tbe.accSize == blockSize; + if (tbe.reqType == CHIRequestType:WriteUniquePtl) { + // we are just updating any valid data we already had + tbe.dataValid := tbe.dataValid || (tbe.accSize == blockSize); + } else { + tbe.dataValid := tbe.accSize == blockSize; + } } } printTBEState(tbe);