OK, this code passes the long regressions (for me, anyway), and I also did an ad-hoc test of checkpoint/resume/switchover and fast-forward and those seemed to go OK as well.
Steve On Fri, Apr 17, 2009 at 4:59 PM, Steve Reinhardt <[email protected]>wrote: > changeset fc2e234b4404 in /z/repo/m5 > details: http://repo.m5sim.org/m5?cmd=changeset;node=fc2e234b4404 > description: > o3, inorder: fix FS bug due to initializing ThreadState to Halted. > For some reason o3 FS init() only called initCPU if the thread state > was Suspended, which was no longer the case. There's no apparent > reason to check, so I whacked the test completely rather than > changing the check to Halted. > The inorder init() was also updated to be symmetric, though the > previous code was just a fancy no-op. > > diffstat: > > 2 files changed, 9 insertions(+), 20 deletions(-) > src/cpu/inorder/cpu.cc | 14 ++++++-------- > src/cpu/o3/cpu.cc | 15 +++------------ > > diffs (61 lines): > > diff -r f1a9f7f6e7c6 -r fc2e234b4404 src/cpu/inorder/cpu.cc > --- a/src/cpu/inorder/cpu.cc Wed Apr 15 23:12:00 2009 -0700 > +++ b/src/cpu/inorder/cpu.cc Fri Apr 17 16:54:58 2009 -0700 > @@ -29,6 +29,8 @@ > * > */ > > +#include "config/full_system.hh" > + > #include "arch/utility.hh" > #include "cpu/exetrace.hh" > #include "cpu/activity.hh" > @@ -420,16 +422,12 @@ > for (int i = 0; i < number_of_threads; ++i) > thread[i]->inSyscall = true; > > +#if FULL_SYSTEM > for (int tid=0; tid < number_of_threads; tid++) { > - > - ThreadContext *src_tc = thread[tid]->getTC(); > - > - // Threads start in the Suspended State > - if (src_tc->status() != ThreadContext::Suspended) { > - continue; > - } > - > + ThreadContext *src_tc = threadContexts[tid]; > + TheISA::initCPU(src_tc, src_tc->contextId()); > } > +#endif > > // Clear inSyscall. > for (int i = 0; i < number_of_threads; ++i) > diff -r f1a9f7f6e7c6 -r fc2e234b4404 src/cpu/o3/cpu.cc > --- a/src/cpu/o3/cpu.cc Wed Apr 15 23:12:00 2009 -0700 > +++ b/src/cpu/o3/cpu.cc Fri Apr 17 16:54:58 2009 -0700 > @@ -568,21 +568,12 @@ > for (int i = 0; i < number_of_threads; ++i) > thread[i]->inSyscall = true; > > +#if FULL_SYSTEM > for (int tid=0; tid < number_of_threads; tid++) { > -#if FULL_SYSTEM > ThreadContext *src_tc = threadContexts[tid]; > -#else > - ThreadContext *src_tc = thread[tid]->getTC(); > + TheISA::initCPU(src_tc, src_tc->contextId()); > + } > #endif > - // Threads start in the Suspended State > - if (src_tc->status() != ThreadContext::Suspended) { > - continue; > - } > - > -#if FULL_SYSTEM > - TheISA::initCPU(src_tc, src_tc->contextId()); > -#endif > - } > > // Clear inSyscall. > for (int i = 0; i < number_of_threads; ++i) > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev >
_______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
