O3 CPU: Adding thread specific wakeup functionality
Review Request #2823 - Created May 11, 2015 and discarded
| Information | |
|---|---|
| Tony Gutierrez | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10866:4d871ca1c568 --------------------------- O3 CPU: Adding thread specific wakeup functionality The existing "wakeup" implementation was activating only thread 0's thread context. This patch adds functionality to activate any thread's thread context.
Issue Summary
| Description | From | Last Updated | Status |
|---|---|---|---|
| Just because I ended up debugging similar things.. it might be worthwhile checking that indeed tc->threadId() always corresponds to the ... | Stephan Diestelhorst | June 1, 2015, 6:09 a.m. | Open |
I assume there is another patch that will make use of this functionality later?
Currently for MT stuff, I've been allowing the wakeup to wake all threads on a core (this is acceptable, but not ideal, behavior under the ARM ISA).
-
src/cpu/base.hh (Diff revision 1) -
For each of this patch's changes, TC should be lower-case to be consistent with the rest of the file.
Description: |
|
||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+31) |
-
src/cpu/o3/cpu.cc (Diff revision 2) -
Just because I ended up debugging similar things.. it might be worthwhile checking that indeed tc->threadId() always corresponds to the position of the tc in the core's threadContexts vector.
I could not convince myself of that (thanks to the many layers of wrapping here), so I think you should explicitly describe why this is reasonable to expect / not expect it here.
Actually, upon second read... I'd like to remove my "Ship It" for now...
Why are we adding a seperate "wakeup" call path? We have "wakeup" and "wakeupThread" if we add this patch. Is that really necessary? Why not have wakeup just accept a thread id to wakeup? For the SMT patches here, that's what I've done after adding per-thread intterrupt controllers, etc. So the interrupt controllers/memory system can directly wake the proper thread.
From what I've seen in the code base, there is no reason to ever call "wakeup" without specifying a thread anyway.
