config: Move CPU handover logic to m5.switchCpus()
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 15 Feb 2013 22:40:08 +0000 (17:40 -0500)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 15 Feb 2013 22:40:08 +0000 (17:40 -0500)
commite5dca84c3f15c63fe19195510d342458402a0716
tree6ec39ac06144a2a4113c6dd12d75014cf1c92a62
parente9f66dceac5ce2665001f9f74222964ef0aef74b
config: Move CPU handover logic to m5.switchCpus()

CPU switching consists of the following steps:
 1. Drain the system
 2. Switch out old CPUs (cpu.switchOut())
 3. Change the system timing mode to the mode the new CPUs require
 4. Flush caches if switching to hardware virtualization
 5. Inform new CPUs of the handover (cpu.takeOverFrom())
 6. Resume the system

m5.switchCpus() previously only did step 2 & 5. Since information
about the new processors' memory system requirements is now exposed,
do all of the steps above.

This patch adds automatic memory system switching and flush (if
needed) to switchCpus(). Additionally, it adds optional draining to
switchCpus(). This has the following implications:

* changeToTiming and changeToAtomic are no longer needed, so they have
  been removed.

* changeMemoryMode is only used internally, so it is has been renamed
  to be private.

* switchCpus requires a reference to the system containing the CPUs as
  its first parameter.

WARNING: This changeset breaks compatibility with existing
configuration scripts since it changes the signature of
m5.switchCpus().
configs/common/Simulation.py
src/python/m5/simulate.py
tests/configs/switcheroo.py