mem-ruby: Fixing MESI Three Level
Adding back some changes done in patch 676ae57827.
Transient state IS_I, STALE_DATA, Data_Stale event are necessary.
Issue: (cacheline A, initial state for P0 and P1 is I)
| P0 | P1 |
|GETX (A)| |
| |GETS (A)|
|Inv_All | |
P1 never sends the ACK - deadlock
It should ACK, later upon data use it as stale data, and got to I.
Inv_All: IS->IS_I, Send ACK
Data: IS_I->I, STALE_DATA to L0
Signed-off-by: Pouya Fotouhi <email@example.com>
Reviewed-by: Jason Lowe-Power <firstname.lastname@example.org>
Reviewed-by: Nikos Nikoleris <email@example.com>
Maintainer: Jason Lowe-Power <firstname.lastname@example.org>
3 files changed