sim: fold checkpoint restore code into instantiate()
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.
This commit is contained in:
parent
cfaddd5fd3
commit
2519d116c9
2 changed files with 9 additions and 17 deletions
|
@ -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:
|
||||
|
|
|
@ -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." % \
|
||||
|
|
Loading…
Reference in a new issue