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

Review request for Default.


Repository: gem5


Description
-------

Changeset 10510:ef000bfc0a87
---------------------------
Minor Draining Bug

Fixes a bug where Minor drains in the midst of committing a conditional store.  

While committing a conditional store, lastCommitWasEndOfMacroop is true (from 
the previous instruction) as we still haven't finished the conditional store. 
If a drain occurs before the cache response, Minor would check just 
lastCommitWasEndOfMacroop, which was true, and set drainState=DrainHaltFetch, 
which increases the streamSeqNum.  This caused the conditional store to be 
squashed when the memory responded and it completed.  However, to the memory 
the store succeeded, while to the instruction sequence it never occurred. 

In the case of an LLSC, the instruction sequence will replay the squashed 
STREX, which will fail as the cache is no longer in LLSC.  Then the instruction 
sequence will loop back to a LDREX, which receives the updated (incorrect) 
value.  


Diffs
-----

  src/cpu/minor/execute.cc 5e0a421e2031 

Diff: http://reviews.gem5.org/r/2470/diff/


Testing
-------


Thanks,

Andrew Lukefahr

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

Reply via email to