-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/65/
-----------------------------------------------------------

Review request for Default.


Summary
-------

SIMPLE TIMING: when a request is NO_ACCESS (x86 CDA microinstruction), 
TimingSimpleCPU::completeDataAccess must still complete
./cpu/simple/timing.cc: fix for x86 CDA microop
 - since CDA doesn't read or update memory, completeDataAccess needs to handle 
the case where the current status of the CPU is _status = Running caused by a 
request NO_ACCESS

This change is RE: Booting Linux, X86_FS Timing CPU 
(http://www.mail-archive.com/m5-dev@m5sim.org/msg07290.html)
Gabe Black:
"The assert is, as you said, from NO_ACCESS skipping the call out to the
memory system and going right to the code that finishes off execution of
that instruction, surprising that code by never having left the Running
state. Under any other circumstance, though, the CPU shouldn't be in the
Running state, and if we just added that to the assert we wouldn't catch
those bugs. What I think would be a better fix is to move the assert
(but not the assignment to _status) up above the code that aggregates
the components of a split packet  and add
pkt->req->getFlags().isSet(Request::NO_ACCESS) or something similar to
the or. This isn't perfect because it asserts every time the function is
called and not just once all the fragments (should be only two) are
gathered, but it's safer and the overhead should be minimal."

This change seems to have fixed the problem for X86_FS.  Since no other 
architectures use the request NO_ACCESS flag, it is unlikely they will be 
impacted, though they still need to be tested.


Diffs
-----

  src/cpu/simple/timing.cc a75564db03c3 

Diff: http://reviews.m5sim.org/r/65/diff


Testing
-------


Thanks,

Joel

_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to