Hi,

I'm getting an assertion failure whenever I fast-forward and then
switch CPUs to O3.  I have not tested Full System mode, only SE mode.
I have tested in ALPHA and MIPS and the failure occurs for both.
The failure is very easy to reproduce.  I'm just running:

build/ALPHA_SE/m5.debug configs/example/se.py \
  -c any_alpha_binary -d --caches -F 10

The assertion failure comes when the CPUs are being switched.  Here is
the assertion failure message:

m5.debug: build/ALPHA_SE/cpu/o3/thread_context_impl.hh:58: void
O3ThreadContext< <template-parameter-1-1>
>::takeOverFrom(ThreadContext*) [with Impl = O3CPUImpl]: Assertion
`getSystemPtr() == old_context->getSystemPtr()' failed.

I do not get the failure if I switch to the Simple Timing CPU
model instead of the O3 model (i.e. if I use '-t' instead of '-d').
Wrapping an '#if FULL_SYSTEM' statement around the line of code
containing the assertion seems to work just fine (though, like I said,
I haven't tested Full System mode).

Also, as I was looking into this problem I came across a bit of code
that I don't understand.  In the class definition of FullO3CPU (in
src/cpu/o3/cpu.hh) there are these lines:

#if FULL_SYSTEM
    /** Pointer to the system. */
    System *system;
#endif

The class FullO3CPU is derived from BaseO3CPU, which is derived from
BaseCPU.  BaseCPU defines the same member variable (system) but
without the '#if FULL_SYSTEM' wrapper (see line 251 of
src/cpu/base.hh).  Why the redundant declarations of this variable and
why is only one wrapped in '#if FULL_SYSTEM'?

Thanks.

-- 
Cheers,
Matt
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to