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

Reply via email to