summaryrefslogtreecommitdiff
path: root/kernel/sched/fair.c
diff options
context:
space:
mode:
authorChris Redpath <chris.redpath@arm.com>2015-01-30 14:12:26 +0900
committerSeung-Woo Kim <sw0312.kim@samsung.com>2016-12-14 13:41:32 +0900
commit6ed51146283c61e5cd460ca67cc272005c45ff89 (patch)
treeac15209848e3e43278ffe0a9754573ab20cd1a75 /kernel/sched/fair.c
parent62e4f273b9b4565f31bff3296b8771a53740d4a3 (diff)
sched: Do not ignore grouped tasks during HMP forced migration.
If the entity is not a task, it is a cfs group rq. Iterate up to find the task entity. Signed-off-by: Chris Redpath <chris.redpath@arm.com> [k.kozlowski: rebased on 4.1, no signed-off-by of previous committer] Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r--kernel/sched/fair.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 3fe12d0924ba..24ce81cc392e 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -8179,10 +8179,19 @@ static void hmp_force_up_migration(int this_cpu)
target = cpu_rq(cpu);
raw_spin_lock_irqsave(&target->lock, flags);
curr = target->cfs.curr;
- if (!curr || !entity_is_task(curr)) {
+ if (!curr) {
raw_spin_unlock_irqrestore(&target->lock, flags);
continue;
}
+ if (!entity_is_task(curr)) {
+ struct cfs_rq *cfs_rq;
+
+ cfs_rq = group_cfs_rq(curr);
+ while (cfs_rq) {
+ curr = cfs_rq->curr;
+ cfs_rq = group_cfs_rq(curr);
+ }
+ }
p = task_of(curr);
if (hmp_up_migration(cpu, curr)) {
if (!target->active_balance) {