sched/fair: prevent meaningless active migration

At present need_active_balance() determines whether active upmigration
is needed by using capacity_of().  CPU's capacity can be reduced by RT
tasks load therefore distinguishing cluster difference with
capacity_of() is wrong and leads suboptimal active migration within
same cluster.  Use capacity_orig_of() to distinguish different
clusters.

Change-Id: I3e1435246a8edc3ad618ef98a34866cfbd8c16a5
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 6fb615e..3363e22 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -8876,12 +8876,12 @@
 			return 1;
 	}
 
-	if (energy_aware() && (capacity_of(env->src_cpu) < capacity_of(env->dst_cpu)) &&
-				env->src_rq->cfs.h_nr_running == 1 &&
-				cpu_overutilized(env->src_cpu) &&
-				!cpu_overutilized(env->dst_cpu)) {
-			return 1;
-	}
+	if (energy_aware() &&
+	    capacity_of(env->src_cpu) < capacity_of(env->dst_cpu) &&
+	    capacity_orig_of(env->src_cpu) < capacity_orig_of(env->dst_cpu) &&
+	    env->src_rq->cfs.h_nr_running == 1 &&
+	    cpu_overutilized(env->src_cpu) && !cpu_overutilized(env->dst_cpu))
+		return 1;
 
 	return unlikely(sd->nr_balance_failed >
 			sd->cache_nice_tries + NEED_ACTIVE_BALANCE_THRESHOLD);