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