Recent changes to functionalRead() in the memory system was not correct.
The change allowed for returning data from the first message found in
the buffers of the memory system. This is not correct since it is possible
that a timing message has data from an older state of the block.
The changes are being reverted.
}
}
- // Since we are here, this means that none of the controllers hold this
- // address in a stable/base state. The function searches through all the
- // buffers that exist in different cache, directory and memory
- // controllers, and in the network components and reads the data portion
- // of the first message that holds address specified in the packet.
- for (unsigned int i = 0; i < num_controllers;++i) {
- if (m_abs_cntrl_vec[i]->functionalReadBuffers(pkt)) {
- return true;
- }
- }
-
- for (unsigned int i = 0; i < m_memory_controller_vec.size(); ++i) {
- if (m_memory_controller_vec[i]->functionalReadBuffers(pkt)) {
- return true;
- }
- }
-
- if (m_network_ptr->functionalRead(pkt)) {
- return true;
- }
return false;
}