mem-ruby: Clear the atomic log from the DataBlock in CHI
The new far atomics implementation [1] didn't take into consideration it was supposed to manually clear the atomic log. This caused a memory leak where the log queue was getting bigger and bigger as no cleaning was happening [1]: https://github.com/gem5/gem5/pull/177 Change-Id: I4a74fbf15d21e35caec69c29117e2d98cc86d5ff Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
@@ -2299,6 +2299,7 @@ action(UpdateDataState_FromADataResp, desc="") {
|
||||
|
||||
tbe.oldDataBlk := tbe.dataBlk;
|
||||
tbe.dataBlk.atomicPartial(tbe.dataBlk, tbe.atomic_op);
|
||||
tbe.dataBlk.clearAtomicLogEntries();
|
||||
tbe.dataDirty := true;
|
||||
|
||||
DPRINTF(RubySlicc, "Atomic after %s\n", tbe.dataBlk);
|
||||
@@ -3424,6 +3425,7 @@ action(Callback_AtomicHit, desc="") {
|
||||
DataBlock oldDataBlk;
|
||||
oldDataBlk := tbe.dataBlk;
|
||||
tbe.dataBlk.atomicPartial(tbe.dataBlk, tbe.atomic_op);
|
||||
tbe.dataBlk.clearAtomicLogEntries();
|
||||
|
||||
sequencer.atomicCallback(tbe.addr, oldDataBlk, false);
|
||||
DPRINTF(RubySlicc, "Atomic after %s\n", tbe.dataBlk);
|
||||
@@ -3490,6 +3492,7 @@ action(Callback_Miss, desc="") {
|
||||
DataBlock oldDataBlk;
|
||||
oldDataBlk := tbe.dataBlk;
|
||||
tbe.dataBlk.atomicPartial(tbe.dataBlk, tbe.atomic_op);
|
||||
tbe.dataBlk.clearAtomicLogEntries();
|
||||
|
||||
sequencer.atomicCallback(tbe.addr, oldDataBlk, false);
|
||||
DPRINTF(RubySlicc, "Atomic after %s\n", tbe.dataBlk);
|
||||
|
||||
Reference in New Issue
Block a user