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