mem-ruby: fix possible MOESI_CMP deadlock

Freeing the L2 block only after local invalidates are acked in the OLSF
state may lead to a deadlock.

Change-Id: Ia4b60e5bc9e2d3315b874a8c6616478db6eb38c1
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21929
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Tiago Mück
2019-06-20 19:06:20 -05:00
parent a0130e741b
commit d9cb548d83

View File

@@ -1910,6 +1910,9 @@ machine(MachineType:L2Cache, "Token protocol")
i_allocateTBE;
t_recordFwdXID;
ee_sendLocalInv;
gg_clearLocalSharers;
checkCacheNoSharersNoOwner;
rr_deallocateL2CacheBlock;
m_popRequestQueue;
}
@@ -1921,10 +1924,7 @@ machine(MachineType:L2Cache, "Token protocol")
transition(OLSF, All_Acks, I) {
c_sendDataFromTBEToFwdGETX;
gg_clearLocalSharers;
s_deallocateTBE;
checkCacheNoSharersNoOwner;
rr_deallocateL2CacheBlock;
n_popTriggerQueue;
wa_wakeUpDependents;
}