Just to make sure I'm interpreting this correctly, I should be able to
suspend a halted CPU to go directly to suspended, correct? The simple
CPU asserts in that case. The attached patch fixes it, but I want to
make sure I'm not getting the status stuff turned around again.
Gabe
Lisa Hsu wrote:
> No, we don't support that. O3 is too complicated, has too much state
> to checkpoint, so we only checkpoint and restore AtomicCPU, then move
> into the desired CPU model post-checkpoint.
>
> On Fri, Apr 17, 2009 at 7:26 PM, Gabriel Michael Black
> <[email protected] <mailto:[email protected]>> wrote:
>
> Quoting Steve Reinhardt <[email protected] <mailto:[email protected]>>:
>
> > On Fri, Apr 17, 2009 at 1:43 PM, Gabriel Michael Black <
> > [email protected] <mailto:[email protected]>> wrote:
> >
> >>
> >> You should also be sure to test starting from a checkpoint which I
> >> believe is different from a switchover, although I'm not sure.
> >
> >
> > It shouldn't be different from O3's perspective; we always
> restore from a
> > checkpoint into a SimpleCPU model and then switch over to O3,
> since you
> > can't directly restore a SimpleCPU checkpoint into and O3 model.
>
> But you could checkpoint O3 and then restore directly, couldn't you?
>
> Gabe
>
> _______________________________________________
> m5-dev mailing list
> [email protected] <mailto:[email protected]>
> http://m5sim.org/mailman/listinfo/m5-dev
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>
diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc
--- a/src/cpu/simple/atomic.cc
+++ b/src/cpu/simple/atomic.cc
@@ -270,6 +270,9 @@
assert(thread_num == 0);
assert(thread);
+
+ if (_status == Idle)
+ return;
assert(_status == Running);
diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc
+++ b/src/cpu/simple/timing.cc
@@ -232,6 +232,9 @@
assert(thread_num == 0);
assert(thread);
+
+ if (_status == Idle)
+ return;
assert(_status == Running);
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev