Review Board 2.0.15


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.