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>
This commit is contained in:
Tiago Mück
2022-04-08 10:44:03 -05:00
committed by Tiago Muck
parent dc33a16993
commit 1dfd319d98

View File

@@ -1934,7 +1934,12 @@ action(UpdateDataState_FromWUDataResp, desc="") {
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);