util: Add DVFS perfLevel to checkpoint upgrade script
authorRadhika Jagtap <radhika.jagtap@ARM.com>
Tue, 1 Jul 2014 15:58:22 +0000 (11:58 -0400)
committerRadhika Jagtap <radhika.jagtap@ARM.com>
Tue, 1 Jul 2014 15:58:22 +0000 (11:58 -0400)
This patch updates the checkpoint upgrader script. It adds the _perfLevel
variable in the clock domain and voltage domain simObjects used for DVFS.

src/sim/serialize.hh
util/cpt_upgrader.py

index 5fc9d7b55f49691b4e7f120b76aad92c1ffe59e7..05cb7c50f611c7c162fe8b3c25e1fe1e917744d8 100644 (file)
@@ -58,7 +58,7 @@ class EventQueue;
  * SimObject shouldn't cause the version number to increase, only changes to
  * existing objects such as serializing/unserializing more state, changing sizes
  * of serialized arrays, etc. */
-static const uint64_t gem5CheckpointVersion = 0x000000000000000a;
+static const uint64_t gem5CheckpointVersion = 0x000000000000000b;
 
 template <class T>
 void paramOut(std::ostream &os, const std::string &name, const T &param);
index e1427480690b47cce13583495f3e143ac2d77906..914de02b46fce9cccc9c1a47e537c46fa07e474c 100755 (executable)
@@ -553,6 +553,22 @@ def from_9(cpt):
             # upgraded checkpoints were not taken with block-size 64!
             cpt.set(sec, 'block_size_bytes', '64')
 
+# Checkpoint version 11 (0xB) adds the perfLevel variable in the clock domain
+# and voltage domain simObjects used for DVFS and is serialized and
+# unserialized.
+def from_A(cpt):
+    for sec in cpt.sections():
+        import re
+
+        if re.match('^.*sys.*[._]clk_domain$', sec):
+            # Make _perfLevel equal to 0 which means best performance
+            cpt.set(sec, '_perfLevel', ' '.join('0'))
+        elif re.match('^.*sys.*[._]voltage_domain$', sec):
+            # Make _perfLevel equal to 0 which means best performance
+            cpt.set(sec, '_perfLevel', ' '.join('0'))
+        else:
+            continue
+
 migrations = []
 migrations.append(from_0)
 migrations.append(from_1)
@@ -564,6 +580,7 @@ migrations.append(from_6)
 migrations.append(from_7)
 migrations.append(from_8)
 migrations.append(from_9)
+migrations.append(from_A)
 
 verbose_print = False