diff -r ccc2118da290 -r 8a66aa3d7866 src/mem/ruby/system/System.hh --- a/src/mem/ruby/system/System.hh Wed Oct 03 23:06:21 2012 -0500 +++ b/src/mem/ruby/system/System.hh Wed Oct 03 23:08:47 2012 -0500 @@ -152,12 +152,12 @@ static int m_memory_size_bits; Network* m_network_ptr; - MemoryControl *m_memory_controller; + std::vector m_memory_controller_vec; + std::vector m_abs_cntrl_vec; public: Profiler* m_profiler_ptr; MemoryVector* m_mem_vec_ptr; - std::vector m_abs_cntrl_vec; bool m_warmup_enabled; bool m_cooldown_enabled; CacheRecorder* m_cache_recorder; diff -r ccc2118da290 -r 8a66aa3d7866 src/mem/ruby/system/System.cc --- a/src/mem/ruby/system/System.cc Wed Oct 03 23:06:21 2012 -0500 +++ b/src/mem/ruby/system/System.cc Wed Oct 03 23:08:47 2012 -0500 @@ -119,7 +119,7 @@ void RubySystem::registerMemController(MemoryControl *mc) { - m_memory_controller = mc; + m_memory_controller_vec.push_back(mc); } RubySystem::~RubySystem() @@ -365,9 +365,13 @@ delete m_cache_recorder; m_cache_recorder = NULL; m_warmup_enabled = false; + // reset DRAM so that it's not waiting for events on the old event // queue - m_memory_controller->reset(); + for (int i = 0; i < m_memory_controller_vec.size(); ++i) { + m_memory_controller_vec[i]->reset(); + } + // Restore eventq head eventq_head = eventq->replaceHead(eventq_head); // Restore curTick and Ruby System's clock