Standard Switch: Drain the system before switching CPUs

When switching from an atomic CPU to any of the timing CPUs, a drain is
unnecessary since no events are scheduled in atomic mode. However, when
trying to switch CPUs starting with a timing CPU, there may be events
scheduled. This change ensures that all events are drained from the system
by calling m5.drain before switching CPUs.
This commit is contained in:
Joel Hestness 2012-09-12 21:41:37 -05:00
parent 16dcb723c1
commit 234fa4cf7e
2 changed files with 2 additions and 2 deletions

View file

@ -453,6 +453,7 @@ def run(options, root, testsys, cpu_class):
# manually. You DON'T need to resume after just switching
# CPUs if you haven't changed anything on the system level.
m5.doDrain(testsys)
m5.changeToTiming(testsys)
m5.switchCpus(switch_cpu_list)
m5.resume(testsys)
@ -469,7 +470,7 @@ def run(options, root, testsys, cpu_class):
print "Switching CPUS @ tick %s" % (m5.curTick())
print "Simulation ends instruction count:%d" % \
(testsys.switch_cpus_1[0].max_insts_any_thread)
m5.drain(testsys)
m5.doDrain(testsys)
m5.switchCpus(switch_cpu_list1)
m5.resume(testsys)

View file

@ -203,7 +203,6 @@ def changeToTiming(system):
(type(system), objects.Root, objects.System)
if system.getMemoryMode() != objects.params.timing:
doDrain(system)
print "Changing memory mode to timing"
for obj in system.descendants():
obj.changeTiming(objects.params.timing)