Hi, I am currently experimenting with the timing CPU in X86_FS, and I have encountered an assertion failure while booting Linux (using Linux boot as a test): m5.debug: build/X86_FS/cpu/simple/timing.cc:900: void TimingSimpleCPU::completeDataAccess(Packet*): Assertion `_status == DcacheWaitResponse || _status == DTBWaitResponse' failed. I have attached a stack trace (note that completeDataAccess is called twice in the trace). The current macro-instruction is a POP_M, and the current uop is the Cda. In timing mode since the Cda doesn't access memory (the Request::NO_ACCESS flag is set by Cda), it doesn't wait on a memory access or TLB, so the status of the CPU before the assertion is _status = Running. I've tried adding "|| _status == Running" to the conditional in the assertion, and the simulation gets past that point, but crashes later. I'm not sure if this is a sound fix, or if there is a better way to handle this. While browsing the code, I noticed that further up in the call stack, TimingSimpleCPU::write is called, and when executing this same test using the atomic CPU, AtomicSimpleCPU::write is called. In the AtomicSimpleCPU::write code, there is a special case test for when the Request::NO_ACCESS flag is set. I wonder if the same should occur in TimingSimpleCPU::write? Thanks, Joel
-- Joel Hestness PhD Student, Computer Architecture Dept. of Computer Science, University of Texas - Austin http://www.cs.utexas.edu/~hestness
Starting program: /home/jhestnes/work/m5/build/X86_FS/m5.debug --outdir=$OUTDIR ./configs/example/fs.py --timing [Thread debugging using libthread_db enabled] Program received signal SIGABRT, Aborted. 0x00007ffff65f2a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. in ../nptl/sysdeps/unix/sysv/linux/raise.c #0 0x00007ffff65f2a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00007ffff65f65c0 in *__GI_abort () at abort.c:92 #2 0x00007ffff65eb941 in *__GI___assert_fail (assertion=0xd5ef38 "_status == DcacheWaitResponse || _status == DTBWaitResponse", file=<value optimized out>, line=900, function=0xd5fca0 "void TimingSimpleCPU::completeDataAccess(Packet*)") at assert.c:81 #3 0x0000000000486796 in TimingSimpleCPU::completeDataAccess (this=0x1d13830, pkt=0x1d1fa90) at build/X86_FS/cpu/simple/timing.cc:900 #4 0x0000000000483f49 in TimingSimpleCPU::sendData (this=0x1d13830, req=0x1d1f5b0, data=0x2882b70 "", res=0x0, read=false) at build/X86_FS/cpu/simple/timing.cc:280 #5 0x0000000000484c57 in TimingSimpleCPU::finishTranslation (this=0x1d13830, state=0x2878270) at build/X86_FS/cpu/simple/timing.cc:659 #6 0x000000000048caf9 in DataTranslation<TimingSimpleCPU>::finish (this=0x2882f00, fault=..., req=0x1d1f5b0, tc=0x1d154a0, mode=BaseTLB::Write) at build/X86_FS/cpu/translation.hh:233 #7 0x000000000063be1d in X86ISA::TLB::translateTiming (this=0x1d10080, req=0x1d1f5b0, tc=0x1d154a0, translation=0x2882f00, mode=BaseTLB::Write) at build/X86_FS/arch/x86/tlb.cc:721 #8 0x000000000048badd in TimingSimpleCPU::write<unsigned long> (this=0x1d13830, data=0, addr=18446744071571259048, flags=524291, res=0x0) at build/X86_FS/cpu/simple/timing.cc:580 #9 0x0000000000ab143d in X86ISA::LdStOp::write<TimingSimpleCPU, unsigned long> (this=0x2882cf0, xc=0x1d13830, m...@0x7fffffffc198, EA=18446744071571259048, flags=524291) at build/X86_FS/arch/x86/insts/microldstop.hh:141 #10 0x0000000000aa3bfc in X86ISAInst::Cda::initiateAcc (this=0x2882cf0, xc=0x1d13830, traceData=0x0) at build/X86_FS/arch/x86/timing_simple_cpu_exec.cc:9199 #11 0x0000000000485e32 in TimingSimpleCPU::completeIfetch (this=0x1d13830, pkt=0x0) at build/X86_FS/cpu/simple/timing.cc:770 #12 0x00000000004853ac in TimingSimpleCPU::fetch (this=0x1d13830) at build/X86_FS/cpu/simple/timing.cc:690 #13 0x0000000000485696 in TimingSimpleCPU::advanceInst (this=0x1d13830, fault=...) at build/X86_FS/cpu/simple/timing.cc:735 #14 0x000000000048699e in TimingSimpleCPU::completeDataAccess (this=0x1d13830, pkt=0x1d1fa90) at build/X86_FS/cpu/simple/timing.cc:932 #15 0x0000000000487097 in TimingSimpleCPU::DcachePort::recvTiming (this=0x1d13b10, pkt=0x1d1fa90) at build/X86_FS/cpu/simple/timing.cc:964 #16 0x0000000000487f5e in Port::sendTiming (this=0x1d16760, pkt=0x1d1fa90) at build/X86_FS/mem/port.hh:186 #17 0x0000000000507f28 in Bus::recvTiming (this=0x1a4ce00, pkt=0x1d1fa90) at build/X86_FS/mem/bus.cc:243 #18 0x0000000000510777 in Bus::BusPort::recvTiming (this=0x1d11650, pkt=0x1d1fa90) at build/X86_FS/mem/bus.hh:89 #19 0x0000000000487f5e in Port::sendTiming (this=0x1d16170, pkt=0x1d1fa90) at build/X86_FS/mem/port.hh:186 #20 0x000000000053f7da in SimpleTimingPort::sendDeferredPacket (this=0x1d16170) at build/X86_FS/mem/tport.cc:150 #21 0x0000000000540431 in SimpleTimingPort::processSendEvent (this=0x1d16170) at build/X86_FS/mem/tport.cc:191 #22 0x0000000000541133 in EventWrapper<SimpleTimingPort, &(SimpleTimingPort::processSendEvent())>::process (this=0x1a4c1c8) at build/X86_FS/sim/eventq.hh:587 #23 0x00000000004a2dba in EventQueue::serviceOne (this=0x127f2c0) at build/X86_FS/sim/eventq.cc:203 #24 0x00000000004e93aa in simulate (num_cycles=9223372036854775807) at build/X86_FS/sim/simulate.cc:73 #25 0x000000000041fb8c in _wrap_simulate__SWIG_0 (args=0x193dd10) at build/X86_FS/python/swig/event_wrap.cc:4378 #26 0x000000000041fd4a in _wrap_simulate (self=0x0, args=0x193dd10) at build/X86_FS/python/swig/event_wrap.cc:4428 #27 0x00007ffff73fd313 in PyEval_EvalFrameEx () from /usr/lib/libpython2.6.so.1.0 #28 0x00007ffff73fed60 in PyEval_EvalCodeEx () from /usr/lib/libpython2.6.so.1.0 #29 0x00007ffff73fd0ab in PyEval_EvalFrameEx () from /usr/lib/libpython2.6.so.1.0 #30 0x00007ffff73fd928 in PyEval_EvalFrameEx () from /usr/lib/libpython2.6.so.1.0 #31 0x00007ffff73fed60 in PyEval_EvalCodeEx () from /usr/lib/libpython2.6.so.1.0 #32 0x00007ffff73fee32 in PyEval_EvalCode () from /usr/lib/libpython2.6.so.1.0 #33 0x00007ffff73fe0b9 in PyEval_EvalFrameEx () from /usr/lib/libpython2.6.so.1.0 #34 0x00007ffff73fed60 in PyEval_EvalCodeEx () from /usr/lib/libpython2.6.so.1.0 #35 0x00007ffff73fd0ab in PyEval_EvalFrameEx () from /usr/lib/libpython2.6.so.1.0 #36 0x00007ffff73fed60 in PyEval_EvalCodeEx () from /usr/lib/libpython2.6.so.1.0 #37 0x00007ffff73fee32 in PyEval_EvalCode () from /usr/lib/libpython2.6.so.1.0 #38 0x00007ffff741cd1c in PyRun_StringFlags () from /usr/lib/libpython2.6.so.1.0 #39 0x00000000004adfe9 in m5Main (argc=4, argv=0x7fffffffe178) at build/X86_FS/sim/init.cc:194 #40 0x000000000040954b in main (argc=4, argv=0x7fffffffe178) at build/X86_FS/sim/main.cc:57
_______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev