diff --git a/src/mem/ruby/protocol/MESI_Three_Level-msg.sm b/src/mem/ruby/protocol/MESI_Three_Level-msg.sm index a16e374fd6..740011ac83 100644 --- a/src/mem/ruby/protocol/MESI_Three_Level-msg.sm +++ b/src/mem/ruby/protocol/MESI_Three_Level-msg.sm @@ -81,8 +81,9 @@ structure(CoherenceMsg, desc="...", interface="Message") { PrefetchBit Prefetch, desc="Is this a prefetch request"; bool functionalRead(Packet *pkt) { - // Only PUTX messages contains the data block - if (Class == CoherenceClass:PUTX) { + // Valid data block is only present in message with following types + if (Class == CoherenceClass:PUTX || + Class == CoherenceClass:DATA_EXCLUSIVE) { return testAndRead(addr, DataBlk, pkt); }