sim: tag-based checkpoint versioning
authorCurtis Dunham <Curtis.Dunham@arm.com>
Wed, 2 Sep 2015 20:23:30 +0000 (15:23 -0500)
committerCurtis Dunham <Curtis.Dunham@arm.com>
Wed, 2 Sep 2015 20:23:30 +0000 (15:23 -0500)
commit87b9da2df4d4dc0028566a7803ee55159343d735
tree17c4cb920dafff6f77d57e31029ccba38e2c267d
parent62e0344aefd56cb1878cdbc27dbed11d6cc73ba4
sim: tag-based checkpoint versioning

This commit addresses gem5 checkpoints' linear versioning bottleneck.
Since development is distributed across many private trees, there exists
a sort of 'race' for checkpoint version numbers: internally a checkpoint
version may be used but then resynchronizing with the external tree causes
a conflict on that version.  This change replaces the linear version number
with a set of unique strings called tags.  Now the only conflicts that can
arise are of tag names, where collisions are much easier to avoid.

The checkpoint upgrader (util/cpt_upgrader.py) upgrades the version
representation, as one would expect. Each tag version implements its
upgrader code in a python file in the util/cpt_upgraders directory
rather than adding a function to the upgrader script itself.

The version tags are stored in the 'Globals' section rather than 'root'
(as the version was previously) because 'Globals' gets unserialized
first and can provide a warning before any other unserialization errors
can occur.
20 files changed:
src/SConscript
src/sim/SConscript
src/sim/root.cc
src/sim/serialize.cc
src/sim/serialize.hh
util/cpt_upgrader.py
util/cpt_upgraders/arm-ccregs.py [new file with mode: 0644]
util/cpt_upgraders/arm-contextidr-el2.py [new file with mode: 0644]
util/cpt_upgraders/arm-miscreg-teehbr.py [new file with mode: 0644]
util/cpt_upgraders/armv8.py [new file with mode: 0644]
util/cpt_upgraders/cpu-pid.py [new file with mode: 0644]
util/cpt_upgraders/dvfs-perflevel.py [new file with mode: 0644]
util/cpt_upgraders/ide-dma-abort.py [new file with mode: 0644]
util/cpt_upgraders/isa-is-simobject.py [new file with mode: 0644]
util/cpt_upgraders/memory-per-range.py [new file with mode: 0644]
util/cpt_upgraders/multiple-event-queues.py [new file with mode: 0644]
util/cpt_upgraders/process-fdmap-rename.py [new file with mode: 0644]
util/cpt_upgraders/remove-arm-cpsr-mode-miscreg.py [new file with mode: 0644]
util/cpt_upgraders/ruby-block-size-bytes.py [new file with mode: 0644]
util/cpt_upgraders/x86-add-tlb.py [new file with mode: 0644]