diff options
author | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-07-21 17:19:16 +0100 |
---|---|---|
committer | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-07-21 17:19:16 +0100 |
commit | 752f1c1fe9e74ebb0d373276b332b3242e589208 (patch) | |
tree | 66681f689812f3bba1b8c5f9b1cd301fe5490310 /src/cpu/minor/decode.cc | |
parent | ff4009ac005be0347015f8ba5a8e37a3aa930e69 (diff) | |
download | gem5-752f1c1fe9e74ebb0d373276b332b3242e589208.tar.xz |
cpu: Fix Minor SMT WFI/drain interaction issues
The behavior of WFI is to cause minor to cease evaluating
pipeline logic until an interrupt is observed, however
a user may wish to drain the system while a core is sleeping
due to a WFI. This patch makes WFI drain. If an actual
drain occurs during a WFI, the CPU is already drained and will
immediately be ready for swapping, checkpointing, etc. This
should not negatively impact performance as WFI instructions
are 'stream-changing' (treated like unpredicted branches), so
all remaining instructions are wrong-path and will be squashed
rapidly.
Change-Id: I63833d5acb53d8dde78f9f0c9611de0ece385e45
Diffstat (limited to 'src/cpu/minor/decode.cc')
-rw-r--r-- | src/cpu/minor/decode.cc | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/cpu/minor/decode.cc b/src/cpu/minor/decode.cc index 6243bca01..a8a33d989 100644 --- a/src/cpu/minor/decode.cc +++ b/src/cpu/minor/decode.cc @@ -313,8 +313,7 @@ Decode::getScheduledThread() } for (auto tid : priority_list) { - if (cpu.getContext(tid)->status() == ThreadContext::Active && - getInput(tid) && !decodeInfo[tid].blocked) { + if (getInput(tid) && !decodeInfo[tid].blocked) { threadPriority = tid; return tid; } |