ruby: Fix protocol deadlock with RMW operations
Review Request #2983 - Created July 21, 2015 and updated - Latest diff uploaded
| Information | |
|---|---|
| Lena Olson | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10926:97dc170a3064 --------------------------- ruby: Fix protocol deadlock with RMW operations Previously, if there was a memory operation between the read part and the write part of a RMW transaction, a deadlock could occur. There was logic to allow the write part of the RMW transaction to bypass the blocked controller, but it also allowed other operations to bypass as well. Thus, only the write parts of a RMW operation can bypass. This patch adds a new function to the message class which controls whether a block can bypass the blocked controller. It is possible that an IFETCH is issued between the read and write parts of the RMW transaction.
Tested with the ruby random tester as well as running some multiprogrammed workloads, including ones where this deadlock manifested. The multicore tests I have are for x86, so if those with more knowledge of other ISAs could comment that would be helpful.
Many thanks to Jason Power for help in tracking this down and fixing it.
