mem-ruby: Fix MOESI_CMP_directory blocked line handling
authorTiago Muck <tiago.muck@arm.com>
Thu, 24 Jan 2019 21:03:21 +0000 (15:03 -0600)
committerTiago Mück <tiago.muck@arm.com>
Thu, 9 May 2019 15:39:27 +0000 (15:39 +0000)
commit8c34a1a6773db8d539b29f3f8fc3addfb2b54be7
tree5801f34458a64c809f729748d1f8adeb50daabce
parentbf0a722acdd8247602e83720a5f81a0b69c76250
mem-ruby: Fix MOESI_CMP_directory blocked line handling

Using recycle in the L2 controllers to put messages back into the buffer
may lead to starvation when there are many L1 requests for the same line.
This can easily trigger the deadlock detection mechanism in configurations
with many cores (16+). Replacing recycle by stall_and_wait for L1
requests avoids this issue. wakeUpBuffers calls were added to all
transitions from transient to stable states.

Change-Id: I28b8aeacc48919ccf38e69653cd9205a4153514b
Signed-off-by: Tiago Muck <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17568
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Matthew Poremba <matthew.poremba@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/protocol/MOESI_CMP_directory-L2cache.sm