sim: fold checkpoint restore code into instantiate()
authorSteve Reinhardt <steve.reinhardt@amd.com>
Tue, 17 Aug 2010 12:17:06 +0000 (05:17 -0700)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Tue, 17 Aug 2010 12:17:06 +0000 (05:17 -0700)
The separate restoreCheckpoint() call is gone; just pass
the checkpoint dir as an optional arg to instantiate().
This change is a precursor to some more extensive
reworking of the startup code.

configs/common/Simulation.py
src/python/m5/simulate.py

index 8e1f84cdf4e849169ef9dec1d818b395df144bc1..79e3066a8ca20a92c34d8c69df6e5d2d60c7ad6b 100644 (file)
@@ -190,8 +190,7 @@ def run(options, root, testsys, cpu_class):
             for i in xrange(np):
                 testsys.cpu[i].max_insts_any_thread = offset
 
-    m5.instantiate()
-
+    checkpoint_dir = None
     if options.checkpoint_restore != None:
         from os.path import isdir, exists
         from os import listdir
@@ -212,10 +211,6 @@ def run(options, root, testsys, cpu_class):
                                       "cpt.%s.%s" % (options.bench, inst))
             if not exists(checkpoint_dir):
                 fatal("Unable to find checkpoint directory %s", checkpoint_dir)
-
-            print "Restoring checkpoint ..."
-            m5.restoreCheckpoint(checkpoint_dir)
-            print "Done."
         else:
             dirs = listdir(cptdir)
             expr = re.compile('cpt\.([0-9]*)')
@@ -234,10 +229,9 @@ def run(options, root, testsys, cpu_class):
 
             ## Adjust max tick based on our starting tick
             maxtick = maxtick - int(cpts[cpt_num - 1])
+            checkpoint_dir = joinpath(cptdir, "cpt.%s" % cpts[cpt_num - 1])
 
-            ## Restore the checkpoint
-            m5.restoreCheckpoint(joinpath(cptdir,
-                                          "cpt.%s" % cpts[cpt_num - 1]))
+    m5.instantiate(checkpoint_dir)
 
     if options.standard_switch or cpu_class:
         if options.standard_switch:
index 28ba10c0de6bff36b1b14f42a3b8aa9c60fa134a..0cf0a254e9734c2432bf31a6e00dd34c70cf8a11 100644 (file)
@@ -46,7 +46,7 @@ MaxTick = 2**63 - 1
 
 # The final hook to generate .ini files.  Called from the user script
 # once the config is built.
-def instantiate():
+def instantiate(ckpt_dir=None):
     root = objects.Root.getInstance()
 
     if not root:
@@ -86,6 +86,11 @@ def instantiate():
     # We're done registering statistics.  Enable the stats package now.
     stats.enable()
 
+    # Restore checkpoint (if any)
+    if ckpt_dir:
+        internal.core.unserializeAll(ckpt_dir)
+        need_resume.append(root)
+
     # Reset to put the stats in a consistent state.
     stats.reset()
 
@@ -160,13 +165,6 @@ def checkpoint(dir):
     internal.core.serializeAll(dir)
     resume(root)
 
-def restoreCheckpoint(dir):
-    root = objects.Root.getInstance()
-    print "Restoring from checkpoint"
-    internal.core.unserializeAll(dir)
-    need_resume.append(root)
-    stats.reset()
-
 def changeToAtomic(system):
     if not isinstance(system, (objects.Root, objects.System)):
         raise TypeError, "Parameter of type '%s'.  Must be type %s or %s." % \