Austin Harris has submitted this change and it was merged. ( https://gem5-review.googlesource.com/5901 )

Change subject: sim: Fix need to save address space info during serialization.
......................................................................

sim: Fix need to save address space info during serialization.

This fixes a fatal already mapped error in
FuncPageTable::allocate that occurs in some cases
when restoring from a checkpoint.

Change-Id: Ib726a69358118626663e42b7f14889b0d3a98de0
Reported-by: Ruohuang Zheng <zhengruohu...@gmail.com>
Signed-off-by: Austin Harris <austinhar...@utexas.edu>
Reviewed-on: https://gem5-review.googlesource.com/5901
Reviewed-by: Gabe Black <gabebl...@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandb...@arm.com>
Maintainer: Jason Lowe-Power <ja...@lowepower.com>
---
M src/sim/mem_state.hh
M src/sim/process.cc
2 files changed, 28 insertions(+), 1 deletion(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  Jason Lowe-Power: Looks good to me, approved



diff --git a/src/sim/mem_state.hh b/src/sim/mem_state.hh
index 03a7197..ca07a64 100644
--- a/src/sim/mem_state.hh
+++ b/src/sim/mem_state.hh
@@ -31,6 +31,8 @@
 #ifndef SRC_SIM_MEM_STATE_HH
 #define SRC_SIM_MEM_STATE_HH

+#include "sim/serialize.hh"
+
 /**
  * This class holds the memory state for the Process class and all of its
  * derived, architecture-specific children.
@@ -45,7 +47,7 @@
* pointer interface because two process can potentially share their virtual
  * address space if certain options are passed into the clone(2).
  */
-class MemState
+class MemState : public Serializable
 {
   public:
     MemState(Addr brk_point, Addr stack_base, Addr max_stack_size,
@@ -87,6 +89,29 @@
     void setNextThreadStackBase(Addr ntsb) { _nextThreadStackBase = ntsb; }
     void setMmapEnd(Addr mmap_end) { _mmapEnd = mmap_end; }

+    void
+    serialize(CheckpointOut &cp) const override
+    {
+        paramOut(cp, "brkPoint", _brkPoint);
+        paramOut(cp, "stackBase", _stackBase);
+        paramOut(cp, "stackSize", _stackSize);
+        paramOut(cp, "maxStackSize", _maxStackSize);
+        paramOut(cp, "stackMin", _stackMin);
+        paramOut(cp, "nextThreadStackBase", _nextThreadStackBase);
+        paramOut(cp, "mmapEnd", _mmapEnd);
+    }
+    void
+    unserialize(CheckpointIn &cp) override
+    {
+        paramIn(cp, "brkPoint", _brkPoint);
+        paramIn(cp, "stackBase", _stackBase);
+        paramIn(cp, "stackSize", _stackSize);
+        paramIn(cp, "maxStackSize", _maxStackSize);
+        paramIn(cp, "stackMin", _stackMin);
+        paramIn(cp, "nextThreadStackBase", _nextThreadStackBase);
+        paramIn(cp, "mmapEnd", _mmapEnd);
+    }
+
   private:
     Addr _brkPoint;
     Addr _stackBase;
diff --git a/src/sim/process.cc b/src/sim/process.cc
index bfc52c3..ee90667 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -367,6 +367,7 @@
 void
 Process::serialize(CheckpointOut &cp) const
 {
+    memState->serialize(cp);
     pTable->serialize(cp);
     /**
      * Checkpoints for file descriptors currently do not work. Need to
@@ -384,6 +385,7 @@
 void
 Process::unserialize(CheckpointIn &cp)
 {
+    memState->unserialize(cp);
     pTable->unserialize(cp);
     /**
      * Checkpoints for file descriptors currently do not work. Need to

--
To view, visit https://gem5-review.googlesource.com/5901
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib726a69358118626663e42b7f14889b0d3a98de0
Gerrit-Change-Number: 5901
Gerrit-PatchSet: 3
Gerrit-Owner: Austin Harris <austin.dane.har...@gmail.com>
Gerrit-Assignee: Brandon Potter <brandon.pot...@amd.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Austin Harris <austin.dane.har...@gmail.com>
Gerrit-Reviewer: Brandon Potter <brandon.pot...@amd.com>
Gerrit-Reviewer: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to