HMP: Access runqueue task clocks directly.
[firefly-linux-kernel-4.4.55.git] / kernel / sched / fair.c
1 /*
2  * Completely Fair Scheduling (CFS) Class (SCHED_NORMAL/SCHED_BATCH)
3  *
4  *  Copyright (C) 2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
5  *
6  *  Interactivity improvements by Mike Galbraith
7  *  (C) 2007 Mike Galbraith <efault@gmx.de>
8  *
9  *  Various enhancements by Dmitry Adamushko.
10  *  (C) 2007 Dmitry Adamushko <dmitry.adamushko@gmail.com>
11  *
12  *  Group scheduling enhancements by Srivatsa Vaddagiri
13  *  Copyright IBM Corporation, 2007
14  *  Author: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
15  *
16  *  Scaled math optimizations by Thomas Gleixner
17  *  Copyright (C) 2007, Thomas Gleixner <tglx@linutronix.de>
18  *
19  *  Adaptive scheduling granularity, math enhancements by Peter Zijlstra
20  *  Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com>
21  */
22
23 #include <linux/latencytop.h>
24 #include <linux/sched.h>
25 #include <linux/cpumask.h>
26 #include <linux/slab.h>
27 #include <linux/profile.h>
28 #include <linux/interrupt.h>
29 #include <linux/mempolicy.h>
30 #include <linux/migrate.h>
31 #include <linux/task_work.h>
32
33 #include <trace/events/sched.h>
34 #ifdef CONFIG_HMP_VARIABLE_SCALE
35 #include <linux/sysfs.h>
36 #include <linux/vmalloc.h>
37 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
38 /* Include cpufreq header to add a notifier so that cpu frequency
39  * scaling can track the current CPU frequency
40  */
41 #include <linux/cpufreq.h>
42 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
43 #endif /* CONFIG_HMP_VARIABLE_SCALE */
44
45 #include "sched.h"
46
47
48 /*
49  * Targeted preemption latency for CPU-bound tasks:
50  * (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
51  *
52  * NOTE: this latency value is not the same as the concept of
53  * 'timeslice length' - timeslices in CFS are of variable length
54  * and have no persistent notion like in traditional, time-slice
55  * based scheduling concepts.
56  *
57  * (to see the precise effective timeslice length of your workload,
58  *  run vmstat and monitor the context-switches (cs) field)
59  */
60 unsigned int sysctl_sched_latency = 6000000ULL;
61 unsigned int normalized_sysctl_sched_latency = 6000000ULL;
62
63 /*
64  * The initial- and re-scaling of tunables is configurable
65  * (default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus))
66  *
67  * Options are:
68  * SCHED_TUNABLESCALING_NONE - unscaled, always *1
69  * SCHED_TUNABLESCALING_LOG - scaled logarithmical, *1+ilog(ncpus)
70  * SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus
71  */
72 enum sched_tunable_scaling sysctl_sched_tunable_scaling
73         = SCHED_TUNABLESCALING_LOG;
74
75 /*
76  * Minimal preemption granularity for CPU-bound tasks:
77  * (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
78  */
79 unsigned int sysctl_sched_min_granularity = 750000ULL;
80 unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
81
82 /*
83  * is kept at sysctl_sched_latency / sysctl_sched_min_granularity
84  */
85 static unsigned int sched_nr_latency = 8;
86
87 /*
88  * After fork, child runs first. If set to 0 (default) then
89  * parent will (try to) run first.
90  */
91 unsigned int sysctl_sched_child_runs_first __read_mostly;
92
93 /*
94  * SCHED_OTHER wake-up granularity.
95  * (default: 1 msec * (1 + ilog(ncpus)), units: nanoseconds)
96  *
97  * This option delays the preemption effects of decoupled workloads
98  * and reduces their over-scheduling. Synchronous workloads will still
99  * have immediate wakeup/sleep latencies.
100  */
101 unsigned int sysctl_sched_wakeup_granularity = 1000000UL;
102 unsigned int normalized_sysctl_sched_wakeup_granularity = 1000000UL;
103
104 const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
105
106 /*
107  * The exponential sliding  window over which load is averaged for shares
108  * distribution.
109  * (default: 10msec)
110  */
111 unsigned int __read_mostly sysctl_sched_shares_window = 10000000UL;
112
113 #ifdef CONFIG_CFS_BANDWIDTH
114 /*
115  * Amount of runtime to allocate from global (tg) to local (per-cfs_rq) pool
116  * each time a cfs_rq requests quota.
117  *
118  * Note: in the case that the slice exceeds the runtime remaining (either due
119  * to consumption or the quota being specified to be smaller than the slice)
120  * we will always only issue the remaining available time.
121  *
122  * default: 5 msec, units: microseconds
123   */
124 unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
125 #endif
126
127 /*
128  * Increase the granularity value when there are more CPUs,
129  * because with more CPUs the 'effective latency' as visible
130  * to users decreases. But the relationship is not linear,
131  * so pick a second-best guess by going with the log2 of the
132  * number of CPUs.
133  *
134  * This idea comes from the SD scheduler of Con Kolivas:
135  */
136 static int get_update_sysctl_factor(void)
137 {
138         unsigned int cpus = min_t(int, num_online_cpus(), 8);
139         unsigned int factor;
140
141         switch (sysctl_sched_tunable_scaling) {
142         case SCHED_TUNABLESCALING_NONE:
143                 factor = 1;
144                 break;
145         case SCHED_TUNABLESCALING_LINEAR:
146                 factor = cpus;
147                 break;
148         case SCHED_TUNABLESCALING_LOG:
149         default:
150                 factor = 1 + ilog2(cpus);
151                 break;
152         }
153
154         return factor;
155 }
156
157 static void update_sysctl(void)
158 {
159         unsigned int factor = get_update_sysctl_factor();
160
161 #define SET_SYSCTL(name) \
162         (sysctl_##name = (factor) * normalized_sysctl_##name)
163         SET_SYSCTL(sched_min_granularity);
164         SET_SYSCTL(sched_latency);
165         SET_SYSCTL(sched_wakeup_granularity);
166 #undef SET_SYSCTL
167 }
168
169 void sched_init_granularity(void)
170 {
171         update_sysctl();
172 }
173
174 #if BITS_PER_LONG == 32
175 # define WMULT_CONST    (~0UL)
176 #else
177 # define WMULT_CONST    (1UL << 32)
178 #endif
179
180 #define WMULT_SHIFT     32
181
182 /*
183  * Shift right and round:
184  */
185 #define SRR(x, y) (((x) + (1UL << ((y) - 1))) >> (y))
186
187 /*
188  * delta *= weight / lw
189  */
190 static unsigned long
191 calc_delta_mine(unsigned long delta_exec, unsigned long weight,
192                 struct load_weight *lw)
193 {
194         u64 tmp;
195
196         /*
197          * weight can be less than 2^SCHED_LOAD_RESOLUTION for task group sched
198          * entities since MIN_SHARES = 2. Treat weight as 1 if less than
199          * 2^SCHED_LOAD_RESOLUTION.
200          */
201         if (likely(weight > (1UL << SCHED_LOAD_RESOLUTION)))
202                 tmp = (u64)delta_exec * scale_load_down(weight);
203         else
204                 tmp = (u64)delta_exec;
205
206         if (!lw->inv_weight) {
207                 unsigned long w = scale_load_down(lw->weight);
208
209                 if (BITS_PER_LONG > 32 && unlikely(w >= WMULT_CONST))
210                         lw->inv_weight = 1;
211                 else if (unlikely(!w))
212                         lw->inv_weight = WMULT_CONST;
213                 else
214                         lw->inv_weight = WMULT_CONST / w;
215         }
216
217         /*
218          * Check whether we'd overflow the 64-bit multiplication:
219          */
220         if (unlikely(tmp > WMULT_CONST))
221                 tmp = SRR(SRR(tmp, WMULT_SHIFT/2) * lw->inv_weight,
222                         WMULT_SHIFT/2);
223         else
224                 tmp = SRR(tmp * lw->inv_weight, WMULT_SHIFT);
225
226         return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX);
227 }
228
229
230 const struct sched_class fair_sched_class;
231
232 /**************************************************************
233  * CFS operations on generic schedulable entities:
234  */
235
236 #ifdef CONFIG_FAIR_GROUP_SCHED
237
238 /* cpu runqueue to which this cfs_rq is attached */
239 static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
240 {
241         return cfs_rq->rq;
242 }
243
244 /* An entity is a task if it doesn't "own" a runqueue */
245 #define entity_is_task(se)      (!se->my_q)
246
247 static inline struct task_struct *task_of(struct sched_entity *se)
248 {
249 #ifdef CONFIG_SCHED_DEBUG
250         WARN_ON_ONCE(!entity_is_task(se));
251 #endif
252         return container_of(se, struct task_struct, se);
253 }
254
255 /* Walk up scheduling entities hierarchy */
256 #define for_each_sched_entity(se) \
257                 for (; se; se = se->parent)
258
259 static inline struct cfs_rq *task_cfs_rq(struct task_struct *p)
260 {
261         return p->se.cfs_rq;
262 }
263
264 /* runqueue on which this entity is (to be) queued */
265 static inline struct cfs_rq *cfs_rq_of(struct sched_entity *se)
266 {
267         return se->cfs_rq;
268 }
269
270 /* runqueue "owned" by this group */
271 static inline struct cfs_rq *group_cfs_rq(struct sched_entity *grp)
272 {
273         return grp->my_q;
274 }
275
276 static void update_cfs_rq_blocked_load(struct cfs_rq *cfs_rq,
277                                        int force_update);
278
279 static inline void list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
280 {
281         if (!cfs_rq->on_list) {
282                 /*
283                  * Ensure we either appear before our parent (if already
284                  * enqueued) or force our parent to appear after us when it is
285                  * enqueued.  The fact that we always enqueue bottom-up
286                  * reduces this to two cases.
287                  */
288                 if (cfs_rq->tg->parent &&
289                     cfs_rq->tg->parent->cfs_rq[cpu_of(rq_of(cfs_rq))]->on_list) {
290                         list_add_rcu(&cfs_rq->leaf_cfs_rq_list,
291                                 &rq_of(cfs_rq)->leaf_cfs_rq_list);
292                 } else {
293                         list_add_tail_rcu(&cfs_rq->leaf_cfs_rq_list,
294                                 &rq_of(cfs_rq)->leaf_cfs_rq_list);
295                 }
296
297                 cfs_rq->on_list = 1;
298                 /* We should have no load, but we need to update last_decay. */
299                 update_cfs_rq_blocked_load(cfs_rq, 0);
300         }
301 }
302
303 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
304 {
305         if (cfs_rq->on_list) {
306                 list_del_rcu(&cfs_rq->leaf_cfs_rq_list);
307                 cfs_rq->on_list = 0;
308         }
309 }
310
311 /* Iterate thr' all leaf cfs_rq's on a runqueue */
312 #define for_each_leaf_cfs_rq(rq, cfs_rq) \
313         list_for_each_entry_rcu(cfs_rq, &rq->leaf_cfs_rq_list, leaf_cfs_rq_list)
314
315 /* Do the two (enqueued) entities belong to the same group ? */
316 static inline int
317 is_same_group(struct sched_entity *se, struct sched_entity *pse)
318 {
319         if (se->cfs_rq == pse->cfs_rq)
320                 return 1;
321
322         return 0;
323 }
324
325 static inline struct sched_entity *parent_entity(struct sched_entity *se)
326 {
327         return se->parent;
328 }
329
330 /* return depth at which a sched entity is present in the hierarchy */
331 static inline int depth_se(struct sched_entity *se)
332 {
333         int depth = 0;
334
335         for_each_sched_entity(se)
336                 depth++;
337
338         return depth;
339 }
340
341 static void
342 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
343 {
344         int se_depth, pse_depth;
345
346         /*
347          * preemption test can be made between sibling entities who are in the
348          * same cfs_rq i.e who have a common parent. Walk up the hierarchy of
349          * both tasks until we find their ancestors who are siblings of common
350          * parent.
351          */
352
353         /* First walk up until both entities are at same depth */
354         se_depth = depth_se(*se);
355         pse_depth = depth_se(*pse);
356
357         while (se_depth > pse_depth) {
358                 se_depth--;
359                 *se = parent_entity(*se);
360         }
361
362         while (pse_depth > se_depth) {
363                 pse_depth--;
364                 *pse = parent_entity(*pse);
365         }
366
367         while (!is_same_group(*se, *pse)) {
368                 *se = parent_entity(*se);
369                 *pse = parent_entity(*pse);
370         }
371 }
372
373 #else   /* !CONFIG_FAIR_GROUP_SCHED */
374
375 static inline struct task_struct *task_of(struct sched_entity *se)
376 {
377         return container_of(se, struct task_struct, se);
378 }
379
380 static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
381 {
382         return container_of(cfs_rq, struct rq, cfs);
383 }
384
385 #define entity_is_task(se)      1
386
387 #define for_each_sched_entity(se) \
388                 for (; se; se = NULL)
389
390 static inline struct cfs_rq *task_cfs_rq(struct task_struct *p)
391 {
392         return &task_rq(p)->cfs;
393 }
394
395 static inline struct cfs_rq *cfs_rq_of(struct sched_entity *se)
396 {
397         struct task_struct *p = task_of(se);
398         struct rq *rq = task_rq(p);
399
400         return &rq->cfs;
401 }
402
403 /* runqueue "owned" by this group */
404 static inline struct cfs_rq *group_cfs_rq(struct sched_entity *grp)
405 {
406         return NULL;
407 }
408
409 static inline void list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
410 {
411 }
412
413 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
414 {
415 }
416
417 #define for_each_leaf_cfs_rq(rq, cfs_rq) \
418                 for (cfs_rq = &rq->cfs; cfs_rq; cfs_rq = NULL)
419
420 static inline int
421 is_same_group(struct sched_entity *se, struct sched_entity *pse)
422 {
423         return 1;
424 }
425
426 static inline struct sched_entity *parent_entity(struct sched_entity *se)
427 {
428         return NULL;
429 }
430
431 static inline void
432 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
433 {
434 }
435
436 #endif  /* CONFIG_FAIR_GROUP_SCHED */
437
438 static __always_inline
439 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, unsigned long delta_exec);
440
441 /**************************************************************
442  * Scheduling class tree data structure manipulation methods:
443  */
444
445 static inline u64 max_vruntime(u64 max_vruntime, u64 vruntime)
446 {
447         s64 delta = (s64)(vruntime - max_vruntime);
448         if (delta > 0)
449                 max_vruntime = vruntime;
450
451         return max_vruntime;
452 }
453
454 static inline u64 min_vruntime(u64 min_vruntime, u64 vruntime)
455 {
456         s64 delta = (s64)(vruntime - min_vruntime);
457         if (delta < 0)
458                 min_vruntime = vruntime;
459
460         return min_vruntime;
461 }
462
463 static inline int entity_before(struct sched_entity *a,
464                                 struct sched_entity *b)
465 {
466         return (s64)(a->vruntime - b->vruntime) < 0;
467 }
468
469 static void update_min_vruntime(struct cfs_rq *cfs_rq)
470 {
471         u64 vruntime = cfs_rq->min_vruntime;
472
473         if (cfs_rq->curr)
474                 vruntime = cfs_rq->curr->vruntime;
475
476         if (cfs_rq->rb_leftmost) {
477                 struct sched_entity *se = rb_entry(cfs_rq->rb_leftmost,
478                                                    struct sched_entity,
479                                                    run_node);
480
481                 if (!cfs_rq->curr)
482                         vruntime = se->vruntime;
483                 else
484                         vruntime = min_vruntime(vruntime, se->vruntime);
485         }
486
487         /* ensure we never gain time by being placed backwards. */
488         cfs_rq->min_vruntime = max_vruntime(cfs_rq->min_vruntime, vruntime);
489 #ifndef CONFIG_64BIT
490         smp_wmb();
491         cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime;
492 #endif
493 }
494
495 /*
496  * Enqueue an entity into the rb-tree:
497  */
498 static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
499 {
500         struct rb_node **link = &cfs_rq->tasks_timeline.rb_node;
501         struct rb_node *parent = NULL;
502         struct sched_entity *entry;
503         int leftmost = 1;
504
505         /*
506          * Find the right place in the rbtree:
507          */
508         while (*link) {
509                 parent = *link;
510                 entry = rb_entry(parent, struct sched_entity, run_node);
511                 /*
512                  * We dont care about collisions. Nodes with
513                  * the same key stay together.
514                  */
515                 if (entity_before(se, entry)) {
516                         link = &parent->rb_left;
517                 } else {
518                         link = &parent->rb_right;
519                         leftmost = 0;
520                 }
521         }
522
523         /*
524          * Maintain a cache of leftmost tree entries (it is frequently
525          * used):
526          */
527         if (leftmost)
528                 cfs_rq->rb_leftmost = &se->run_node;
529
530         rb_link_node(&se->run_node, parent, link);
531         rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline);
532 }
533
534 static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
535 {
536         if (cfs_rq->rb_leftmost == &se->run_node) {
537                 struct rb_node *next_node;
538
539                 next_node = rb_next(&se->run_node);
540                 cfs_rq->rb_leftmost = next_node;
541         }
542
543         rb_erase(&se->run_node, &cfs_rq->tasks_timeline);
544 }
545
546 struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
547 {
548         struct rb_node *left = cfs_rq->rb_leftmost;
549
550         if (!left)
551                 return NULL;
552
553         return rb_entry(left, struct sched_entity, run_node);
554 }
555
556 static struct sched_entity *__pick_next_entity(struct sched_entity *se)
557 {
558         struct rb_node *next = rb_next(&se->run_node);
559
560         if (!next)
561                 return NULL;
562
563         return rb_entry(next, struct sched_entity, run_node);
564 }
565
566 #ifdef CONFIG_SCHED_DEBUG
567 struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
568 {
569         struct rb_node *last = rb_last(&cfs_rq->tasks_timeline);
570
571         if (!last)
572                 return NULL;
573
574         return rb_entry(last, struct sched_entity, run_node);
575 }
576
577 /**************************************************************
578  * Scheduling class statistics methods:
579  */
580
581 int sched_proc_update_handler(struct ctl_table *table, int write,
582                 void __user *buffer, size_t *lenp,
583                 loff_t *ppos)
584 {
585         int ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
586         int factor = get_update_sysctl_factor();
587
588         if (ret || !write)
589                 return ret;
590
591         sched_nr_latency = DIV_ROUND_UP(sysctl_sched_latency,
592                                         sysctl_sched_min_granularity);
593
594 #define WRT_SYSCTL(name) \
595         (normalized_sysctl_##name = sysctl_##name / (factor))
596         WRT_SYSCTL(sched_min_granularity);
597         WRT_SYSCTL(sched_latency);
598         WRT_SYSCTL(sched_wakeup_granularity);
599 #undef WRT_SYSCTL
600
601         return 0;
602 }
603 #endif
604
605 /*
606  * delta /= w
607  */
608 static inline unsigned long
609 calc_delta_fair(unsigned long delta, struct sched_entity *se)
610 {
611         if (unlikely(se->load.weight != NICE_0_LOAD))
612                 delta = calc_delta_mine(delta, NICE_0_LOAD, &se->load);
613
614         return delta;
615 }
616
617 /*
618  * The idea is to set a period in which each task runs once.
619  *
620  * When there are too many tasks (sched_nr_latency) we have to stretch
621  * this period because otherwise the slices get too small.
622  *
623  * p = (nr <= nl) ? l : l*nr/nl
624  */
625 static u64 __sched_period(unsigned long nr_running)
626 {
627         u64 period = sysctl_sched_latency;
628         unsigned long nr_latency = sched_nr_latency;
629
630         if (unlikely(nr_running > nr_latency)) {
631                 period = sysctl_sched_min_granularity;
632                 period *= nr_running;
633         }
634
635         return period;
636 }
637
638 /*
639  * We calculate the wall-time slice from the period by taking a part
640  * proportional to the weight.
641  *
642  * s = p*P[w/rw]
643  */
644 static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se)
645 {
646         u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq);
647
648         for_each_sched_entity(se) {
649                 struct load_weight *load;
650                 struct load_weight lw;
651
652                 cfs_rq = cfs_rq_of(se);
653                 load = &cfs_rq->load;
654
655                 if (unlikely(!se->on_rq)) {
656                         lw = cfs_rq->load;
657
658                         update_load_add(&lw, se->load.weight);
659                         load = &lw;
660                 }
661                 slice = calc_delta_mine(slice, se->load.weight, load);
662         }
663         return slice;
664 }
665
666 /*
667  * We calculate the vruntime slice of a to-be-inserted task.
668  *
669  * vs = s/w
670  */
671 static u64 sched_vslice(struct cfs_rq *cfs_rq, struct sched_entity *se)
672 {
673         return calc_delta_fair(sched_slice(cfs_rq, se), se);
674 }
675
676 /*
677  * Update the current task's runtime statistics. Skip current tasks that
678  * are not in our scheduling class.
679  */
680 static inline void
681 __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr,
682               unsigned long delta_exec)
683 {
684         unsigned long delta_exec_weighted;
685
686         schedstat_set(curr->statistics.exec_max,
687                       max((u64)delta_exec, curr->statistics.exec_max));
688
689         curr->sum_exec_runtime += delta_exec;
690         schedstat_add(cfs_rq, exec_clock, delta_exec);
691         delta_exec_weighted = calc_delta_fair(delta_exec, curr);
692
693         curr->vruntime += delta_exec_weighted;
694         update_min_vruntime(cfs_rq);
695 }
696
697 static void update_curr(struct cfs_rq *cfs_rq)
698 {
699         struct sched_entity *curr = cfs_rq->curr;
700         u64 now = rq_of(cfs_rq)->clock_task;
701         unsigned long delta_exec;
702
703         if (unlikely(!curr))
704                 return;
705
706         /*
707          * Get the amount of time the current task was running
708          * since the last time we changed load (this cannot
709          * overflow on 32 bits):
710          */
711         delta_exec = (unsigned long)(now - curr->exec_start);
712         if (!delta_exec)
713                 return;
714
715         __update_curr(cfs_rq, curr, delta_exec);
716         curr->exec_start = now;
717
718         if (entity_is_task(curr)) {
719                 struct task_struct *curtask = task_of(curr);
720
721                 trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime);
722                 cpuacct_charge(curtask, delta_exec);
723                 account_group_exec_runtime(curtask, delta_exec);
724         }
725
726         account_cfs_rq_runtime(cfs_rq, delta_exec);
727 }
728
729 static inline void
730 update_stats_wait_start(struct cfs_rq *cfs_rq, struct sched_entity *se)
731 {
732         schedstat_set(se->statistics.wait_start, rq_of(cfs_rq)->clock);
733 }
734
735 /*
736  * Task is being enqueued - update stats:
737  */
738 static void update_stats_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
739 {
740         /*
741          * Are we enqueueing a waiting task? (for current tasks
742          * a dequeue/enqueue event is a NOP)
743          */
744         if (se != cfs_rq->curr)
745                 update_stats_wait_start(cfs_rq, se);
746 }
747
748 static void
749 update_stats_wait_end(struct cfs_rq *cfs_rq, struct sched_entity *se)
750 {
751         schedstat_set(se->statistics.wait_max, max(se->statistics.wait_max,
752                         rq_of(cfs_rq)->clock - se->statistics.wait_start));
753         schedstat_set(se->statistics.wait_count, se->statistics.wait_count + 1);
754         schedstat_set(se->statistics.wait_sum, se->statistics.wait_sum +
755                         rq_of(cfs_rq)->clock - se->statistics.wait_start);
756 #ifdef CONFIG_SCHEDSTATS
757         if (entity_is_task(se)) {
758                 trace_sched_stat_wait(task_of(se),
759                         rq_of(cfs_rq)->clock - se->statistics.wait_start);
760         }
761 #endif
762         schedstat_set(se->statistics.wait_start, 0);
763 }
764
765 static inline void
766 update_stats_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
767 {
768         /*
769          * Mark the end of the wait period if dequeueing a
770          * waiting task:
771          */
772         if (se != cfs_rq->curr)
773                 update_stats_wait_end(cfs_rq, se);
774 }
775
776 /*
777  * We are picking a new current task - update its stats:
778  */
779 static inline void
780 update_stats_curr_start(struct cfs_rq *cfs_rq, struct sched_entity *se)
781 {
782         /*
783          * We are starting a new run period:
784          */
785         se->exec_start = rq_of(cfs_rq)->clock_task;
786 }
787
788 /**************************************************
789  * Scheduling class queueing methods:
790  */
791
792 #ifdef CONFIG_NUMA_BALANCING
793 /*
794  * numa task sample period in ms
795  */
796 unsigned int sysctl_numa_balancing_scan_period_min = 100;
797 unsigned int sysctl_numa_balancing_scan_period_max = 100*50;
798 unsigned int sysctl_numa_balancing_scan_period_reset = 100*600;
799
800 /* Portion of address space to scan in MB */
801 unsigned int sysctl_numa_balancing_scan_size = 256;
802
803 /* Scan @scan_size MB every @scan_period after an initial @scan_delay in ms */
804 unsigned int sysctl_numa_balancing_scan_delay = 1000;
805
806 static void task_numa_placement(struct task_struct *p)
807 {
808         int seq;
809
810         if (!p->mm)     /* for example, ksmd faulting in a user's mm */
811                 return;
812         seq = ACCESS_ONCE(p->mm->numa_scan_seq);
813         if (p->numa_scan_seq == seq)
814                 return;
815         p->numa_scan_seq = seq;
816
817         /* FIXME: Scheduling placement policy hints go here */
818 }
819
820 /*
821  * Got a PROT_NONE fault for a page on @node.
822  */
823 void task_numa_fault(int node, int pages, bool migrated)
824 {
825         struct task_struct *p = current;
826
827         if (!sched_feat_numa(NUMA))
828                 return;
829
830         /* FIXME: Allocate task-specific structure for placement policy here */
831
832         /*
833          * If pages are properly placed (did not migrate) then scan slower.
834          * This is reset periodically in case of phase changes
835          */
836         if (!migrated)
837                 p->numa_scan_period = min(sysctl_numa_balancing_scan_period_max,
838                         p->numa_scan_period + jiffies_to_msecs(10));
839
840         task_numa_placement(p);
841 }
842
843 static void reset_ptenuma_scan(struct task_struct *p)
844 {
845         ACCESS_ONCE(p->mm->numa_scan_seq)++;
846         p->mm->numa_scan_offset = 0;
847 }
848
849 /*
850  * The expensive part of numa migration is done from task_work context.
851  * Triggered from task_tick_numa().
852  */
853 void task_numa_work(struct callback_head *work)
854 {
855         unsigned long migrate, next_scan, now = jiffies;
856         struct task_struct *p = current;
857         struct mm_struct *mm = p->mm;
858         struct vm_area_struct *vma;
859         unsigned long start, end;
860         long pages;
861
862         WARN_ON_ONCE(p != container_of(work, struct task_struct, numa_work));
863
864         work->next = work; /* protect against double add */
865         /*
866          * Who cares about NUMA placement when they're dying.
867          *
868          * NOTE: make sure not to dereference p->mm before this check,
869          * exit_task_work() happens _after_ exit_mm() so we could be called
870          * without p->mm even though we still had it when we enqueued this
871          * work.
872          */
873         if (p->flags & PF_EXITING)
874                 return;
875
876         /*
877          * We do not care about task placement until a task runs on a node
878          * other than the first one used by the address space. This is
879          * largely because migrations are driven by what CPU the task
880          * is running on. If it's never scheduled on another node, it'll
881          * not migrate so why bother trapping the fault.
882          */
883         if (mm->first_nid == NUMA_PTE_SCAN_INIT)
884                 mm->first_nid = numa_node_id();
885         if (mm->first_nid != NUMA_PTE_SCAN_ACTIVE) {
886                 /* Are we running on a new node yet? */
887                 if (numa_node_id() == mm->first_nid &&
888                     !sched_feat_numa(NUMA_FORCE))
889                         return;
890
891                 mm->first_nid = NUMA_PTE_SCAN_ACTIVE;
892         }
893
894         /*
895          * Reset the scan period if enough time has gone by. Objective is that
896          * scanning will be reduced if pages are properly placed. As tasks
897          * can enter different phases this needs to be re-examined. Lacking
898          * proper tracking of reference behaviour, this blunt hammer is used.
899          */
900         migrate = mm->numa_next_reset;
901         if (time_after(now, migrate)) {
902                 p->numa_scan_period = sysctl_numa_balancing_scan_period_min;
903                 next_scan = now + msecs_to_jiffies(sysctl_numa_balancing_scan_period_reset);
904                 xchg(&mm->numa_next_reset, next_scan);
905         }
906
907         /*
908          * Enforce maximal scan/migration frequency..
909          */
910         migrate = mm->numa_next_scan;
911         if (time_before(now, migrate))
912                 return;
913
914         if (p->numa_scan_period == 0)
915                 p->numa_scan_period = sysctl_numa_balancing_scan_period_min;
916
917         next_scan = now + msecs_to_jiffies(p->numa_scan_period);
918         if (cmpxchg(&mm->numa_next_scan, migrate, next_scan) != migrate)
919                 return;
920
921         /*
922          * Do not set pte_numa if the current running node is rate-limited.
923          * This loses statistics on the fault but if we are unwilling to
924          * migrate to this node, it is less likely we can do useful work
925          */
926         if (migrate_ratelimited(numa_node_id()))
927                 return;
928
929         start = mm->numa_scan_offset;
930         pages = sysctl_numa_balancing_scan_size;
931         pages <<= 20 - PAGE_SHIFT; /* MB in pages */
932         if (!pages)
933                 return;
934
935         down_read(&mm->mmap_sem);
936         vma = find_vma(mm, start);
937         if (!vma) {
938                 reset_ptenuma_scan(p);
939                 start = 0;
940                 vma = mm->mmap;
941         }
942         for (; vma; vma = vma->vm_next) {
943                 if (!vma_migratable(vma))
944                         continue;
945
946                 /* Skip small VMAs. They are not likely to be of relevance */
947                 if (vma->vm_end - vma->vm_start < HPAGE_SIZE)
948                         continue;
949
950                 do {
951                         start = max(start, vma->vm_start);
952                         end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
953                         end = min(end, vma->vm_end);
954                         pages -= change_prot_numa(vma, start, end);
955
956                         start = end;
957                         if (pages <= 0)
958                                 goto out;
959                 } while (end != vma->vm_end);
960         }
961
962 out:
963         /*
964          * It is possible to reach the end of the VMA list but the last few VMAs are
965          * not guaranteed to the vma_migratable. If they are not, we would find the
966          * !migratable VMA on the next scan but not reset the scanner to the start
967          * so check it now.
968          */
969         if (vma)
970                 mm->numa_scan_offset = start;
971         else
972                 reset_ptenuma_scan(p);
973         up_read(&mm->mmap_sem);
974 }
975
976 /*
977  * Drive the periodic memory faults..
978  */
979 void task_tick_numa(struct rq *rq, struct task_struct *curr)
980 {
981         struct callback_head *work = &curr->numa_work;
982         u64 period, now;
983
984         /*
985          * We don't care about NUMA placement if we don't have memory.
986          */
987         if (!curr->mm || (curr->flags & PF_EXITING) || work->next != work)
988                 return;
989
990         /*
991          * Using runtime rather than walltime has the dual advantage that
992          * we (mostly) drive the selection from busy threads and that the
993          * task needs to have done some actual work before we bother with
994          * NUMA placement.
995          */
996         now = curr->se.sum_exec_runtime;
997         period = (u64)curr->numa_scan_period * NSEC_PER_MSEC;
998
999         if (now - curr->node_stamp > period) {
1000                 if (!curr->node_stamp)
1001                         curr->numa_scan_period = sysctl_numa_balancing_scan_period_min;
1002                 curr->node_stamp = now;
1003
1004                 if (!time_before(jiffies, curr->mm->numa_next_scan)) {
1005                         init_task_work(work, task_numa_work); /* TODO: move this into sched_fork() */
1006                         task_work_add(curr, work, true);
1007                 }
1008         }
1009 }
1010 #else
1011 static void task_tick_numa(struct rq *rq, struct task_struct *curr)
1012 {
1013 }
1014 #endif /* CONFIG_NUMA_BALANCING */
1015
1016 static void
1017 account_entity_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
1018 {
1019         update_load_add(&cfs_rq->load, se->load.weight);
1020         if (!parent_entity(se))
1021                 update_load_add(&rq_of(cfs_rq)->load, se->load.weight);
1022 #ifdef CONFIG_SMP
1023         if (entity_is_task(se))
1024                 list_add(&se->group_node, &rq_of(cfs_rq)->cfs_tasks);
1025 #endif
1026         cfs_rq->nr_running++;
1027 }
1028
1029 static void
1030 account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
1031 {
1032         update_load_sub(&cfs_rq->load, se->load.weight);
1033         if (!parent_entity(se))
1034                 update_load_sub(&rq_of(cfs_rq)->load, se->load.weight);
1035         if (entity_is_task(se))
1036                 list_del_init(&se->group_node);
1037         cfs_rq->nr_running--;
1038 }
1039
1040 #ifdef CONFIG_FAIR_GROUP_SCHED
1041 # ifdef CONFIG_SMP
1042 static inline long calc_tg_weight(struct task_group *tg, struct cfs_rq *cfs_rq)
1043 {
1044         long tg_weight;
1045
1046         /*
1047          * Use this CPU's actual weight instead of the last load_contribution
1048          * to gain a more accurate current total weight. See
1049          * update_cfs_rq_load_contribution().
1050          */
1051         tg_weight = atomic64_read(&tg->load_avg);
1052         tg_weight -= cfs_rq->tg_load_contrib;
1053         tg_weight += cfs_rq->load.weight;
1054
1055         return tg_weight;
1056 }
1057
1058 static long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg)
1059 {
1060         long tg_weight, load, shares;
1061
1062         tg_weight = calc_tg_weight(tg, cfs_rq);
1063         load = cfs_rq->load.weight;
1064
1065         shares = (tg->shares * load);
1066         if (tg_weight)
1067                 shares /= tg_weight;
1068
1069         if (shares < MIN_SHARES)
1070                 shares = MIN_SHARES;
1071         if (shares > tg->shares)
1072                 shares = tg->shares;
1073
1074         return shares;
1075 }
1076 # else /* CONFIG_SMP */
1077 static inline long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg)
1078 {
1079         return tg->shares;
1080 }
1081 # endif /* CONFIG_SMP */
1082 static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
1083                             unsigned long weight)
1084 {
1085         if (se->on_rq) {
1086                 /* commit outstanding execution time */
1087                 if (cfs_rq->curr == se)
1088                         update_curr(cfs_rq);
1089                 account_entity_dequeue(cfs_rq, se);
1090         }
1091
1092         update_load_set(&se->load, weight);
1093
1094         if (se->on_rq)
1095                 account_entity_enqueue(cfs_rq, se);
1096 }
1097
1098 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq);
1099
1100 static void update_cfs_shares(struct cfs_rq *cfs_rq)
1101 {
1102         struct task_group *tg;
1103         struct sched_entity *se;
1104         long shares;
1105
1106         tg = cfs_rq->tg;
1107         se = tg->se[cpu_of(rq_of(cfs_rq))];
1108         if (!se || throttled_hierarchy(cfs_rq))
1109                 return;
1110 #ifndef CONFIG_SMP
1111         if (likely(se->load.weight == tg->shares))
1112                 return;
1113 #endif
1114         shares = calc_cfs_shares(cfs_rq, tg);
1115
1116         reweight_entity(cfs_rq_of(se), se, shares);
1117 }
1118 #else /* CONFIG_FAIR_GROUP_SCHED */
1119 static inline void update_cfs_shares(struct cfs_rq *cfs_rq)
1120 {
1121 }
1122 #endif /* CONFIG_FAIR_GROUP_SCHED */
1123
1124 /* Only depends on SMP, FAIR_GROUP_SCHED may be removed when useful in lb */
1125 #if defined(CONFIG_SMP) && defined(CONFIG_FAIR_GROUP_SCHED)
1126 /*
1127  * We choose a half-life close to 1 scheduling period.
1128  * Note: The tables below are dependent on this value.
1129  */
1130 #define LOAD_AVG_PERIOD 32
1131 #define LOAD_AVG_MAX 47742 /* maximum possible load avg */
1132 #define LOAD_AVG_MAX_N 345 /* number of full periods to produce LOAD_MAX_AVG */
1133
1134 /* Precomputed fixed inverse multiplies for multiplication by y^n */
1135 static const u32 runnable_avg_yN_inv[] = {
1136         0xffffffff, 0xfa83b2da, 0xf5257d14, 0xefe4b99a, 0xeac0c6e6, 0xe5b906e6,
1137         0xe0ccdeeb, 0xdbfbb796, 0xd744fcc9, 0xd2a81d91, 0xce248c14, 0xc9b9bd85,
1138         0xc5672a10, 0xc12c4cc9, 0xbd08a39e, 0xb8fbaf46, 0xb504f333, 0xb123f581,
1139         0xad583ee9, 0xa9a15ab4, 0xa5fed6a9, 0xa2704302, 0x9ef5325f, 0x9b8d39b9,
1140         0x9837f050, 0x94f4efa8, 0x91c3d373, 0x8ea4398a, 0x8b95c1e3, 0x88980e80,
1141         0x85aac367, 0x82cd8698,
1142 };
1143
1144 /*
1145  * Precomputed \Sum y^k { 1<=k<=n }.  These are floor(true_value) to prevent
1146  * over-estimates when re-combining.
1147  */
1148 static const u32 runnable_avg_yN_sum[] = {
1149             0, 1002, 1982, 2941, 3880, 4798, 5697, 6576, 7437, 8279, 9103,
1150          9909,10698,11470,12226,12966,13690,14398,15091,15769,16433,17082,
1151         17718,18340,18949,19545,20128,20698,21256,21802,22336,22859,23371,
1152 };
1153
1154 /*
1155  * Approximate:
1156  *   val * y^n,    where y^32 ~= 0.5 (~1 scheduling period)
1157  */
1158 static __always_inline u64 decay_load(u64 val, u64 n)
1159 {
1160         unsigned int local_n;
1161
1162         if (!n)
1163                 return val;
1164         else if (unlikely(n > LOAD_AVG_PERIOD * 63))
1165                 return 0;
1166
1167         /* after bounds checking we can collapse to 32-bit */
1168         local_n = n;
1169
1170         /*
1171          * As y^PERIOD = 1/2, we can combine
1172          *    y^n = 1/2^(n/PERIOD) * k^(n%PERIOD)
1173          * With a look-up table which covers k^n (n<PERIOD)
1174          *
1175          * To achieve constant time decay_load.
1176          */
1177         if (unlikely(local_n >= LOAD_AVG_PERIOD)) {
1178                 val >>= local_n / LOAD_AVG_PERIOD;
1179                 local_n %= LOAD_AVG_PERIOD;
1180         }
1181
1182         val *= runnable_avg_yN_inv[local_n];
1183         /* We don't use SRR here since we always want to round down. */
1184         return val >> 32;
1185 }
1186
1187 /*
1188  * For updates fully spanning n periods, the contribution to runnable
1189  * average will be: \Sum 1024*y^n
1190  *
1191  * We can compute this reasonably efficiently by combining:
1192  *   y^PERIOD = 1/2 with precomputed \Sum 1024*y^n {for  n <PERIOD}
1193  */
1194 static u32 __compute_runnable_contrib(u64 n)
1195 {
1196         u32 contrib = 0;
1197
1198         if (likely(n <= LOAD_AVG_PERIOD))
1199                 return runnable_avg_yN_sum[n];
1200         else if (unlikely(n >= LOAD_AVG_MAX_N))
1201                 return LOAD_AVG_MAX;
1202
1203         /* Compute \Sum k^n combining precomputed values for k^i, \Sum k^j */
1204         do {
1205                 contrib /= 2; /* y^LOAD_AVG_PERIOD = 1/2 */
1206                 contrib += runnable_avg_yN_sum[LOAD_AVG_PERIOD];
1207
1208                 n -= LOAD_AVG_PERIOD;
1209         } while (n > LOAD_AVG_PERIOD);
1210
1211         contrib = decay_load(contrib, n);
1212         return contrib + runnable_avg_yN_sum[n];
1213 }
1214
1215 #ifdef CONFIG_HMP_VARIABLE_SCALE
1216
1217 #define HMP_VARIABLE_SCALE_SHIFT 16ULL
1218 struct hmp_global_attr {
1219         struct attribute attr;
1220         ssize_t (*show)(struct kobject *kobj,
1221                         struct attribute *attr, char *buf);
1222         ssize_t (*store)(struct kobject *a, struct attribute *b,
1223                         const char *c, size_t count);
1224         int *value;
1225         int (*to_sysfs)(int);
1226         int (*from_sysfs)(int);
1227 };
1228
1229 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1230 #define HMP_DATA_SYSFS_MAX 4
1231 #else
1232 #define HMP_DATA_SYSFS_MAX 3
1233 #endif
1234
1235 struct hmp_data_struct {
1236 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1237         int freqinvar_load_scale_enabled;
1238 #endif
1239         int multiplier; /* used to scale the time delta */
1240         struct attribute_group attr_group;
1241         struct attribute *attributes[HMP_DATA_SYSFS_MAX + 1];
1242         struct hmp_global_attr attr[HMP_DATA_SYSFS_MAX];
1243 } hmp_data;
1244
1245 static u64 hmp_variable_scale_convert(u64 delta);
1246 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1247 /* Frequency-Invariant Load Modification:
1248  * Loads are calculated as in PJT's patch however we also scale the current
1249  * contribution in line with the frequency of the CPU that the task was
1250  * executed on.
1251  * In this version, we use a simple linear scale derived from the maximum
1252  * frequency reported by CPUFreq. As an example:
1253  *
1254  * Consider that we ran a task for 100% of the previous interval.
1255  *
1256  * Our CPU was under asynchronous frequency control through one of the
1257  * CPUFreq governors.
1258  *
1259  * The CPUFreq governor reports that it is able to scale the CPU between
1260  * 500MHz and 1GHz.
1261  *
1262  * During the period, the CPU was running at 1GHz.
1263  *
1264  * In this case, our load contribution for that period is calculated as
1265  * 1 * (number_of_active_microseconds)
1266  *
1267  * This results in our task being able to accumulate maximum load as normal.
1268  *
1269  *
1270  * Consider now that our CPU was executing at 500MHz.
1271  *
1272  * We now scale the load contribution such that it is calculated as
1273  * 0.5 * (number_of_active_microseconds)
1274  *
1275  * Our task can only record 50% maximum load during this period.
1276  *
1277  * This represents the task consuming 50% of the CPU's *possible* compute
1278  * capacity. However the task did consume 100% of the CPU's *available*
1279  * compute capacity which is the value seen by the CPUFreq governor and
1280  * user-side CPU Utilization tools.
1281  *
1282  * Restricting tracked load to be scaled by the CPU's frequency accurately
1283  * represents the consumption of possible compute capacity and allows the
1284  * HMP migration's simple threshold migration strategy to interact more
1285  * predictably with CPUFreq's asynchronous compute capacity changes.
1286  */
1287 #define SCHED_FREQSCALE_SHIFT 10
1288 struct cpufreq_extents {
1289         u32 curr_scale;
1290         u32 min;
1291         u32 max;
1292         u32 flags;
1293 };
1294 /* Flag set when the governor in use only allows one frequency.
1295  * Disables scaling.
1296  */
1297 #define SCHED_LOAD_FREQINVAR_SINGLEFREQ 0x01
1298
1299 static struct cpufreq_extents freq_scale[CONFIG_NR_CPUS];
1300 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1301 #endif /* CONFIG_HMP_VARIABLE_SCALE */
1302
1303 /* We can represent the historical contribution to runnable average as the
1304  * coefficients of a geometric series.  To do this we sub-divide our runnable
1305  * history into segments of approximately 1ms (1024us); label the segment that
1306  * occurred N-ms ago p_N, with p_0 corresponding to the current period, e.g.
1307  *
1308  * [<- 1024us ->|<- 1024us ->|<- 1024us ->| ...
1309  *      p0            p1           p2
1310  *     (now)       (~1ms ago)  (~2ms ago)
1311  *
1312  * Let u_i denote the fraction of p_i that the entity was runnable.
1313  *
1314  * We then designate the fractions u_i as our co-efficients, yielding the
1315  * following representation of historical load:
1316  *   u_0 + u_1*y + u_2*y^2 + u_3*y^3 + ...
1317  *
1318  * We choose y based on the with of a reasonably scheduling period, fixing:
1319  *   y^32 = 0.5
1320  *
1321  * This means that the contribution to load ~32ms ago (u_32) will be weighted
1322  * approximately half as much as the contribution to load within the last ms
1323  * (u_0).
1324  *
1325  * When a period "rolls over" and we have new u_0`, multiplying the previous
1326  * sum again by y is sufficient to update:
1327  *   load_avg = u_0` + y*(u_0 + u_1*y + u_2*y^2 + ... )
1328  *            = u_0 + u_1*y + u_2*y^2 + ... [re-labeling u_i --> u_{i+1}]
1329  */
1330 static __always_inline int __update_entity_runnable_avg(u64 now,
1331                                                         struct sched_avg *sa,
1332                                                         int runnable,
1333                                                         int running,
1334                                                         int cpu)
1335 {
1336         u64 delta, periods;
1337         u32 runnable_contrib;
1338         int delta_w, decayed = 0;
1339 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1340         u64 scaled_delta;
1341         u32 scaled_runnable_contrib;
1342         int scaled_delta_w;
1343         u32 curr_scale = 1024;
1344 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1345
1346         delta = now - sa->last_runnable_update;
1347 #ifdef CONFIG_HMP_VARIABLE_SCALE
1348         delta = hmp_variable_scale_convert(delta);
1349 #endif
1350         /*
1351          * This should only happen when time goes backwards, which it
1352          * unfortunately does during sched clock init when we swap over to TSC.
1353          */
1354         if ((s64)delta < 0) {
1355                 sa->last_runnable_update = now;
1356                 return 0;
1357         }
1358
1359         /*
1360          * Use 1024ns as the unit of measurement since it's a reasonable
1361          * approximation of 1us and fast to compute.
1362          */
1363         delta >>= 10;
1364         if (!delta)
1365                 return 0;
1366         sa->last_runnable_update = now;
1367
1368 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1369         /* retrieve scale factor for load */
1370         if (hmp_data.freqinvar_load_scale_enabled)
1371                 curr_scale = freq_scale[cpu].curr_scale;
1372 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1373
1374         /* delta_w is the amount already accumulated against our next period */
1375         delta_w = sa->runnable_avg_period % 1024;
1376         if (delta + delta_w >= 1024) {
1377                 /* period roll-over */
1378                 decayed = 1;
1379
1380                 /*
1381                  * Now that we know we're crossing a period boundary, figure
1382                  * out how much from delta we need to complete the current
1383                  * period and accrue it.
1384                  */
1385                 delta_w = 1024 - delta_w;
1386                 /* scale runnable time if necessary */
1387 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1388                 scaled_delta_w = (delta_w * curr_scale)
1389                                 >> SCHED_FREQSCALE_SHIFT;
1390                 if (runnable)
1391                         sa->runnable_avg_sum += scaled_delta_w;
1392                 if (running)
1393                         sa->usage_avg_sum += scaled_delta_w;
1394 #else
1395                 if (runnable)
1396                         sa->runnable_avg_sum += delta_w;
1397                 if (running)
1398                         sa->usage_avg_sum += delta_w;
1399 #endif /* #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1400                 sa->runnable_avg_period += delta_w;
1401
1402                 delta -= delta_w;
1403
1404                 /* Figure out how many additional periods this update spans */
1405                 periods = delta / 1024;
1406                 delta %= 1024;
1407                 /* decay the load we have accumulated so far */
1408                 sa->runnable_avg_sum = decay_load(sa->runnable_avg_sum,
1409                                                   periods + 1);
1410                 sa->runnable_avg_period = decay_load(sa->runnable_avg_period,
1411                                                      periods + 1);
1412                 sa->usage_avg_sum = decay_load(sa->usage_avg_sum, periods + 1);
1413                 /* add the contribution from this period */
1414                 /* Efficiently calculate \sum (1..n_period) 1024*y^i */
1415                 runnable_contrib = __compute_runnable_contrib(periods);
1416                 /* Apply load scaling if necessary.
1417                  * Note that multiplying the whole series is same as
1418                  * multiplying all terms
1419                  */
1420 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1421                 scaled_runnable_contrib = (runnable_contrib * curr_scale)
1422                                 >> SCHED_FREQSCALE_SHIFT;
1423                 if (runnable)
1424                         sa->runnable_avg_sum += scaled_runnable_contrib;
1425                 if (running)
1426                         sa->usage_avg_sum += scaled_runnable_contrib;
1427 #else
1428                 if (runnable)
1429                         sa->runnable_avg_sum += runnable_contrib;
1430                 if (running)
1431                         sa->usage_avg_sum += runnable_contrib;
1432 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1433                 sa->runnable_avg_period += runnable_contrib;
1434         }
1435
1436         /* Remainder of delta accrued against u_0` */
1437         /* scale if necessary */
1438 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1439         scaled_delta = ((delta * curr_scale) >> SCHED_FREQSCALE_SHIFT);
1440         if (runnable)
1441                 sa->runnable_avg_sum += scaled_delta;
1442         if (running)
1443                 sa->usage_avg_sum += scaled_delta;
1444 #else
1445         if (runnable)
1446                 sa->runnable_avg_sum += delta;
1447         if (running)
1448                 sa->usage_avg_sum += delta;
1449 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */
1450         sa->runnable_avg_period += delta;
1451
1452         return decayed;
1453 }
1454
1455 /* Synchronize an entity's decay with its parenting cfs_rq.*/
1456 static inline u64 __synchronize_entity_decay(struct sched_entity *se)
1457 {
1458         struct cfs_rq *cfs_rq = cfs_rq_of(se);
1459         u64 decays = atomic64_read(&cfs_rq->decay_counter);
1460
1461         decays -= se->avg.decay_count;
1462         if (!decays)
1463                 return 0;
1464
1465         se->avg.load_avg_contrib = decay_load(se->avg.load_avg_contrib, decays);
1466         se->avg.decay_count = 0;
1467
1468         return decays;
1469 }
1470
1471 #ifdef CONFIG_FAIR_GROUP_SCHED
1472 static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq,
1473                                                  int force_update)
1474 {
1475         struct task_group *tg = cfs_rq->tg;
1476         s64 tg_contrib;
1477
1478         tg_contrib = cfs_rq->runnable_load_avg + cfs_rq->blocked_load_avg;
1479         tg_contrib -= cfs_rq->tg_load_contrib;
1480
1481         if (force_update || abs64(tg_contrib) > cfs_rq->tg_load_contrib / 8) {
1482                 atomic64_add(tg_contrib, &tg->load_avg);
1483                 cfs_rq->tg_load_contrib += tg_contrib;
1484         }
1485 }
1486
1487 /*
1488  * Aggregate cfs_rq runnable averages into an equivalent task_group
1489  * representation for computing load contributions.
1490  */
1491 static inline void __update_tg_runnable_avg(struct sched_avg *sa,
1492                                                   struct cfs_rq *cfs_rq)
1493 {
1494         struct task_group *tg = cfs_rq->tg;
1495         long contrib, usage_contrib;
1496
1497         /* The fraction of a cpu used by this cfs_rq */
1498         contrib = div_u64(sa->runnable_avg_sum << NICE_0_SHIFT,
1499                           sa->runnable_avg_period + 1);
1500         contrib -= cfs_rq->tg_runnable_contrib;
1501
1502         usage_contrib = div_u64(sa->usage_avg_sum << NICE_0_SHIFT,
1503                                 sa->runnable_avg_period + 1);
1504         usage_contrib -= cfs_rq->tg_usage_contrib;
1505
1506         /*
1507          * contrib/usage at this point represent deltas, only update if they
1508          * are substantive.
1509          */
1510         if ((abs(contrib) > cfs_rq->tg_runnable_contrib / 64) ||
1511             (abs(usage_contrib) > cfs_rq->tg_usage_contrib / 64)) {
1512                 atomic_add(contrib, &tg->runnable_avg);
1513                 cfs_rq->tg_runnable_contrib += contrib;
1514
1515                 atomic_add(usage_contrib, &tg->usage_avg);
1516                 cfs_rq->tg_usage_contrib += usage_contrib;
1517         }
1518 }
1519
1520 static inline void __update_group_entity_contrib(struct sched_entity *se)
1521 {
1522         struct cfs_rq *cfs_rq = group_cfs_rq(se);
1523         struct task_group *tg = cfs_rq->tg;
1524         int runnable_avg;
1525
1526         u64 contrib;
1527
1528         contrib = cfs_rq->tg_load_contrib * tg->shares;
1529         se->avg.load_avg_contrib = div64_u64(contrib,
1530                                              atomic64_read(&tg->load_avg) + 1);
1531
1532         /*
1533          * For group entities we need to compute a correction term in the case
1534          * that they are consuming <1 cpu so that we would contribute the same
1535          * load as a task of equal weight.
1536          *
1537          * Explicitly co-ordinating this measurement would be expensive, but
1538          * fortunately the sum of each cpus contribution forms a usable
1539          * lower-bound on the true value.
1540          *
1541          * Consider the aggregate of 2 contributions.  Either they are disjoint
1542          * (and the sum represents true value) or they are disjoint and we are
1543          * understating by the aggregate of their overlap.
1544          *
1545          * Extending this to N cpus, for a given overlap, the maximum amount we
1546          * understand is then n_i(n_i+1)/2 * w_i where n_i is the number of
1547          * cpus that overlap for this interval and w_i is the interval width.
1548          *
1549          * On a small machine; the first term is well-bounded which bounds the
1550          * total error since w_i is a subset of the period.  Whereas on a
1551          * larger machine, while this first term can be larger, if w_i is the
1552          * of consequential size guaranteed to see n_i*w_i quickly converge to
1553          * our upper bound of 1-cpu.
1554          */
1555         runnable_avg = atomic_read(&tg->runnable_avg);
1556         if (runnable_avg < NICE_0_LOAD) {
1557                 se->avg.load_avg_contrib *= runnable_avg;
1558                 se->avg.load_avg_contrib >>= NICE_0_SHIFT;
1559         }
1560 }
1561 #else
1562 static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq,
1563                                                  int force_update) {}
1564 static inline void __update_tg_runnable_avg(struct sched_avg *sa,
1565                                                   struct cfs_rq *cfs_rq) {}
1566 static inline void __update_group_entity_contrib(struct sched_entity *se) {}
1567 #endif
1568
1569 static inline void __update_task_entity_contrib(struct sched_entity *se)
1570 {
1571         u32 contrib;
1572
1573         /* avoid overflowing a 32-bit type w/ SCHED_LOAD_SCALE */
1574         contrib = se->avg.runnable_avg_sum * scale_load_down(se->load.weight);
1575         contrib /= (se->avg.runnable_avg_period + 1);
1576         se->avg.load_avg_contrib = scale_load(contrib);
1577         trace_sched_task_load_contrib(task_of(se), se->avg.load_avg_contrib);
1578         contrib = se->avg.runnable_avg_sum * scale_load_down(NICE_0_LOAD);
1579         contrib /= (se->avg.runnable_avg_period + 1);
1580         se->avg.load_avg_ratio = scale_load(contrib);
1581         trace_sched_task_runnable_ratio(task_of(se), se->avg.load_avg_ratio);
1582 }
1583
1584 /* Compute the current contribution to load_avg by se, return any delta */
1585 static long __update_entity_load_avg_contrib(struct sched_entity *se, long *ratio)
1586 {
1587         long old_contrib = se->avg.load_avg_contrib;
1588         long old_ratio   = se->avg.load_avg_ratio;
1589
1590         if (entity_is_task(se)) {
1591                 __update_task_entity_contrib(se);
1592         } else {
1593                 __update_tg_runnable_avg(&se->avg, group_cfs_rq(se));
1594                 __update_group_entity_contrib(se);
1595         }
1596
1597         if (ratio)
1598                 *ratio = se->avg.load_avg_ratio - old_ratio;
1599         return se->avg.load_avg_contrib - old_contrib;
1600 }
1601
1602 static inline void subtract_blocked_load_contrib(struct cfs_rq *cfs_rq,
1603                                                  long load_contrib)
1604 {
1605         if (likely(load_contrib < cfs_rq->blocked_load_avg))
1606                 cfs_rq->blocked_load_avg -= load_contrib;
1607         else
1608                 cfs_rq->blocked_load_avg = 0;
1609 }
1610
1611 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq);
1612
1613 /* Update a sched_entity's runnable average */
1614 static inline void update_entity_load_avg(struct sched_entity *se,
1615                                           int update_cfs_rq)
1616 {
1617         struct cfs_rq *cfs_rq = cfs_rq_of(se);
1618         long contrib_delta, ratio_delta;
1619         u64 now;
1620         int cpu = -1;   /* not used in normal case */
1621
1622 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1623         cpu = cfs_rq->rq->cpu;
1624 #endif
1625         /*
1626          * For a group entity we need to use their owned cfs_rq_clock_task() in
1627          * case they are the parent of a throttled hierarchy.
1628          */
1629         if (entity_is_task(se))
1630                 now = cfs_rq_clock_task(cfs_rq);
1631         else
1632                 now = cfs_rq_clock_task(group_cfs_rq(se));
1633
1634         if (!__update_entity_runnable_avg(now, &se->avg, se->on_rq,
1635                         cfs_rq->curr == se, cpu))
1636                 return;
1637
1638         contrib_delta = __update_entity_load_avg_contrib(se, &ratio_delta);
1639
1640         if (!update_cfs_rq)
1641                 return;
1642
1643         if (se->on_rq) {
1644                 cfs_rq->runnable_load_avg += contrib_delta;
1645                 rq_of(cfs_rq)->avg.load_avg_ratio += ratio_delta;
1646         } else {
1647                 subtract_blocked_load_contrib(cfs_rq, -contrib_delta);
1648         }
1649 }
1650
1651 /*
1652  * Decay the load contributed by all blocked children and account this so that
1653  * their contribution may appropriately discounted when they wake up.
1654  */
1655 static void update_cfs_rq_blocked_load(struct cfs_rq *cfs_rq, int force_update)
1656 {
1657         u64 now = cfs_rq_clock_task(cfs_rq) >> 20;
1658         u64 decays;
1659
1660         decays = now - cfs_rq->last_decay;
1661         if (!decays && !force_update)
1662                 return;
1663
1664         if (atomic64_read(&cfs_rq->removed_load)) {
1665                 u64 removed_load = atomic64_xchg(&cfs_rq->removed_load, 0);
1666                 subtract_blocked_load_contrib(cfs_rq, removed_load);
1667         }
1668
1669         if (decays) {
1670                 cfs_rq->blocked_load_avg = decay_load(cfs_rq->blocked_load_avg,
1671                                                       decays);
1672                 atomic64_add(decays, &cfs_rq->decay_counter);
1673                 cfs_rq->last_decay = now;
1674         }
1675
1676         __update_cfs_rq_tg_load_contrib(cfs_rq, force_update);
1677 }
1678
1679 static inline void update_rq_runnable_avg(struct rq *rq, int runnable)
1680 {
1681         int cpu = -1;   /* not used in normal case */
1682
1683 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
1684         cpu = rq->cpu;
1685 #endif
1686         __update_entity_runnable_avg(rq->clock_task, &rq->avg, runnable,
1687                                      runnable, cpu);
1688         __update_tg_runnable_avg(&rq->avg, &rq->cfs);
1689         trace_sched_rq_runnable_ratio(cpu_of(rq), rq->avg.load_avg_ratio);
1690         trace_sched_rq_runnable_load(cpu_of(rq), rq->cfs.runnable_load_avg);
1691 }
1692
1693 /* Add the load generated by se into cfs_rq's child load-average */
1694 static inline void enqueue_entity_load_avg(struct cfs_rq *cfs_rq,
1695                                                   struct sched_entity *se,
1696                                                   int wakeup)
1697 {
1698         /*
1699          * We track migrations using entity decay_count <= 0, on a wake-up
1700          * migration we use a negative decay count to track the remote decays
1701          * accumulated while sleeping.
1702          */
1703         if (unlikely(se->avg.decay_count <= 0)) {
1704                 se->avg.last_runnable_update = rq_of(cfs_rq)->clock_task;
1705                 if (se->avg.decay_count) {
1706                         /*
1707                          * In a wake-up migration we have to approximate the
1708                          * time sleeping.  This is because we can't synchronize
1709                          * clock_task between the two cpus, and it is not
1710                          * guaranteed to be read-safe.  Instead, we can
1711                          * approximate this using our carried decays, which are
1712                          * explicitly atomically readable.
1713                          */
1714                         se->avg.last_runnable_update -= (-se->avg.decay_count)
1715                                                         << 20;
1716                         update_entity_load_avg(se, 0);
1717                         /* Indicate that we're now synchronized and on-rq */
1718                         se->avg.decay_count = 0;
1719                 }
1720                 wakeup = 0;
1721         } else {
1722                 __synchronize_entity_decay(se);
1723         }
1724
1725         /* migrated tasks did not contribute to our blocked load */
1726         if (wakeup) {
1727                 subtract_blocked_load_contrib(cfs_rq, se->avg.load_avg_contrib);
1728                 update_entity_load_avg(se, 0);
1729         }
1730
1731         cfs_rq->runnable_load_avg += se->avg.load_avg_contrib;
1732         rq_of(cfs_rq)->avg.load_avg_ratio += se->avg.load_avg_ratio;
1733
1734         /* we force update consideration on load-balancer moves */
1735         update_cfs_rq_blocked_load(cfs_rq, !wakeup);
1736 }
1737
1738 /*
1739  * Remove se's load from this cfs_rq child load-average, if the entity is
1740  * transitioning to a blocked state we track its projected decay using
1741  * blocked_load_avg.
1742  */
1743 static inline void dequeue_entity_load_avg(struct cfs_rq *cfs_rq,
1744                                                   struct sched_entity *se,
1745                                                   int sleep)
1746 {
1747         update_entity_load_avg(se, 1);
1748         /* we force update consideration on load-balancer moves */
1749         update_cfs_rq_blocked_load(cfs_rq, !sleep);
1750
1751         cfs_rq->runnable_load_avg -= se->avg.load_avg_contrib;
1752         rq_of(cfs_rq)->avg.load_avg_ratio -= se->avg.load_avg_ratio;
1753
1754         if (sleep) {
1755                 cfs_rq->blocked_load_avg += se->avg.load_avg_contrib;
1756                 se->avg.decay_count = atomic64_read(&cfs_rq->decay_counter);
1757         } /* migrations, e.g. sleep=0 leave decay_count == 0 */
1758 }
1759
1760 /*
1761  * Update the rq's load with the elapsed running time before entering
1762  * idle. if the last scheduled task is not a CFS task, idle_enter will
1763  * be the only way to update the runnable statistic.
1764  */
1765 void idle_enter_fair(struct rq *this_rq)
1766 {
1767         update_rq_runnable_avg(this_rq, 1);
1768 }
1769
1770 /*
1771  * Update the rq's load with the elapsed idle time before a task is
1772  * scheduled. if the newly scheduled task is not a CFS task, idle_exit will
1773  * be the only way to update the runnable statistic.
1774  */
1775 void idle_exit_fair(struct rq *this_rq)
1776 {
1777         update_rq_runnable_avg(this_rq, 0);
1778 }
1779
1780 #else
1781 static inline void update_entity_load_avg(struct sched_entity *se,
1782                                           int update_cfs_rq) {}
1783 static inline void update_rq_runnable_avg(struct rq *rq, int runnable) {}
1784 static inline void enqueue_entity_load_avg(struct cfs_rq *cfs_rq,
1785                                            struct sched_entity *se,
1786                                            int wakeup) {}
1787 static inline void dequeue_entity_load_avg(struct cfs_rq *cfs_rq,
1788                                            struct sched_entity *se,
1789                                            int sleep) {}
1790 static inline void update_cfs_rq_blocked_load(struct cfs_rq *cfs_rq,
1791                                               int force_update) {}
1792 #endif
1793
1794 static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
1795 {
1796 #ifdef CONFIG_SCHEDSTATS
1797         struct task_struct *tsk = NULL;
1798
1799         if (entity_is_task(se))
1800                 tsk = task_of(se);
1801
1802         if (se->statistics.sleep_start) {
1803                 u64 delta = rq_of(cfs_rq)->clock - se->statistics.sleep_start;
1804
1805                 if ((s64)delta < 0)
1806                         delta = 0;
1807
1808                 if (unlikely(delta > se->statistics.sleep_max))
1809                         se->statistics.sleep_max = delta;
1810
1811                 se->statistics.sleep_start = 0;
1812                 se->statistics.sum_sleep_runtime += delta;
1813
1814                 if (tsk) {
1815                         account_scheduler_latency(tsk, delta >> 10, 1);
1816                         trace_sched_stat_sleep(tsk, delta);
1817                 }
1818         }
1819         if (se->statistics.block_start) {
1820                 u64 delta = rq_of(cfs_rq)->clock - se->statistics.block_start;
1821
1822                 if ((s64)delta < 0)
1823                         delta = 0;
1824
1825                 if (unlikely(delta > se->statistics.block_max))
1826                         se->statistics.block_max = delta;
1827
1828                 se->statistics.block_start = 0;
1829                 se->statistics.sum_sleep_runtime += delta;
1830
1831                 if (tsk) {
1832                         if (tsk->in_iowait) {
1833                                 se->statistics.iowait_sum += delta;
1834                                 se->statistics.iowait_count++;
1835                                 trace_sched_stat_iowait(tsk, delta);
1836                         }
1837
1838                         trace_sched_stat_blocked(tsk, delta);
1839
1840                         /*
1841                          * Blocking time is in units of nanosecs, so shift by
1842                          * 20 to get a milliseconds-range estimation of the
1843                          * amount of time that the task spent sleeping:
1844                          */
1845                         if (unlikely(prof_on == SLEEP_PROFILING)) {
1846                                 profile_hits(SLEEP_PROFILING,
1847                                                 (void *)get_wchan(tsk),
1848                                                 delta >> 20);
1849                         }
1850                         account_scheduler_latency(tsk, delta >> 10, 0);
1851                 }
1852         }
1853 #endif
1854 }
1855
1856 static void check_spread(struct cfs_rq *cfs_rq, struct sched_entity *se)
1857 {
1858 #ifdef CONFIG_SCHED_DEBUG
1859         s64 d = se->vruntime - cfs_rq->min_vruntime;
1860
1861         if (d < 0)
1862                 d = -d;
1863
1864         if (d > 3*sysctl_sched_latency)
1865                 schedstat_inc(cfs_rq, nr_spread_over);
1866 #endif
1867 }
1868
1869 static void
1870 place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
1871 {
1872         u64 vruntime = cfs_rq->min_vruntime;
1873
1874         /*
1875          * The 'current' period is already promised to the current tasks,
1876          * however the extra weight of the new task will slow them down a
1877          * little, place the new task so that it fits in the slot that
1878          * stays open at the end.
1879          */
1880         if (initial && sched_feat(START_DEBIT))
1881                 vruntime += sched_vslice(cfs_rq, se);
1882
1883         /* sleeps up to a single latency don't count. */
1884         if (!initial) {
1885                 unsigned long thresh = sysctl_sched_latency;
1886
1887                 /*
1888                  * Halve their sleep time's effect, to allow
1889                  * for a gentler effect of sleepers:
1890                  */
1891                 if (sched_feat(GENTLE_FAIR_SLEEPERS))
1892                         thresh >>= 1;
1893
1894                 vruntime -= thresh;
1895         }
1896
1897         /* ensure we never gain time by being placed backwards. */
1898         se->vruntime = max_vruntime(se->vruntime, vruntime);
1899 }
1900
1901 static void check_enqueue_throttle(struct cfs_rq *cfs_rq);
1902
1903 static void
1904 enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
1905 {
1906         /*
1907          * Update the normalized vruntime before updating min_vruntime
1908          * through callig update_curr().
1909          */
1910         if (!(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_WAKING))
1911                 se->vruntime += cfs_rq->min_vruntime;
1912
1913         /*
1914          * Update run-time statistics of the 'current'.
1915          */
1916         update_curr(cfs_rq);
1917         enqueue_entity_load_avg(cfs_rq, se, flags & ENQUEUE_WAKEUP);
1918         account_entity_enqueue(cfs_rq, se);
1919         update_cfs_shares(cfs_rq);
1920
1921         if (flags & ENQUEUE_WAKEUP) {
1922                 place_entity(cfs_rq, se, 0);
1923                 enqueue_sleeper(cfs_rq, se);
1924         }
1925
1926         update_stats_enqueue(cfs_rq, se);
1927         check_spread(cfs_rq, se);
1928         if (se != cfs_rq->curr)
1929                 __enqueue_entity(cfs_rq, se);
1930         se->on_rq = 1;
1931
1932         if (cfs_rq->nr_running == 1) {
1933                 list_add_leaf_cfs_rq(cfs_rq);
1934                 check_enqueue_throttle(cfs_rq);
1935         }
1936 }
1937
1938 static void __clear_buddies_last(struct sched_entity *se)
1939 {
1940         for_each_sched_entity(se) {
1941                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
1942                 if (cfs_rq->last == se)
1943                         cfs_rq->last = NULL;
1944                 else
1945                         break;
1946         }
1947 }
1948
1949 static void __clear_buddies_next(struct sched_entity *se)
1950 {
1951         for_each_sched_entity(se) {
1952                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
1953                 if (cfs_rq->next == se)
1954                         cfs_rq->next = NULL;
1955                 else
1956                         break;
1957         }
1958 }
1959
1960 static void __clear_buddies_skip(struct sched_entity *se)
1961 {
1962         for_each_sched_entity(se) {
1963                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
1964                 if (cfs_rq->skip == se)
1965                         cfs_rq->skip = NULL;
1966                 else
1967                         break;
1968         }
1969 }
1970
1971 static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
1972 {
1973         if (cfs_rq->last == se)
1974                 __clear_buddies_last(se);
1975
1976         if (cfs_rq->next == se)
1977                 __clear_buddies_next(se);
1978
1979         if (cfs_rq->skip == se)
1980                 __clear_buddies_skip(se);
1981 }
1982
1983 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
1984
1985 static void
1986 dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
1987 {
1988         /*
1989          * Update run-time statistics of the 'current'.
1990          */
1991         update_curr(cfs_rq);
1992         dequeue_entity_load_avg(cfs_rq, se, flags & DEQUEUE_SLEEP);
1993
1994         update_stats_dequeue(cfs_rq, se);
1995         if (flags & DEQUEUE_SLEEP) {
1996 #ifdef CONFIG_SCHEDSTATS
1997                 if (entity_is_task(se)) {
1998                         struct task_struct *tsk = task_of(se);
1999
2000                         if (tsk->state & TASK_INTERRUPTIBLE)
2001                                 se->statistics.sleep_start = rq_of(cfs_rq)->clock;
2002                         if (tsk->state & TASK_UNINTERRUPTIBLE)
2003                                 se->statistics.block_start = rq_of(cfs_rq)->clock;
2004                 }
2005 #endif
2006         }
2007
2008         clear_buddies(cfs_rq, se);
2009
2010         if (se != cfs_rq->curr)
2011                 __dequeue_entity(cfs_rq, se);
2012         se->on_rq = 0;
2013         account_entity_dequeue(cfs_rq, se);
2014
2015         /*
2016          * Normalize the entity after updating the min_vruntime because the
2017          * update can refer to the ->curr item and we need to reflect this
2018          * movement in our normalized position.
2019          */
2020         if (!(flags & DEQUEUE_SLEEP))
2021                 se->vruntime -= cfs_rq->min_vruntime;
2022
2023         /* return excess runtime on last dequeue */
2024         return_cfs_rq_runtime(cfs_rq);
2025
2026         update_min_vruntime(cfs_rq);
2027         update_cfs_shares(cfs_rq);
2028 }
2029
2030 /*
2031  * Preempt the current task with a newly woken task if needed:
2032  */
2033 static void
2034 check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
2035 {
2036         unsigned long ideal_runtime, delta_exec;
2037         struct sched_entity *se;
2038         s64 delta;
2039
2040         ideal_runtime = sched_slice(cfs_rq, curr);
2041         delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;
2042         if (delta_exec > ideal_runtime) {
2043                 resched_task(rq_of(cfs_rq)->curr);
2044                 /*
2045                  * The current task ran long enough, ensure it doesn't get
2046                  * re-elected due to buddy favours.
2047                  */
2048                 clear_buddies(cfs_rq, curr);
2049                 return;
2050         }
2051
2052         /*
2053          * Ensure that a task that missed wakeup preemption by a
2054          * narrow margin doesn't have to wait for a full slice.
2055          * This also mitigates buddy induced latencies under load.
2056          */
2057         if (delta_exec < sysctl_sched_min_granularity)
2058                 return;
2059
2060         se = __pick_first_entity(cfs_rq);
2061         delta = curr->vruntime - se->vruntime;
2062
2063         if (delta < 0)
2064                 return;
2065
2066         if (delta > ideal_runtime)
2067                 resched_task(rq_of(cfs_rq)->curr);
2068 }
2069
2070 static void
2071 set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
2072 {
2073         /* 'current' is not kept within the tree. */
2074         if (se->on_rq) {
2075                 /*
2076                  * Any task has to be enqueued before it get to execute on
2077                  * a CPU. So account for the time it spent waiting on the
2078                  * runqueue.
2079                  */
2080                 update_stats_wait_end(cfs_rq, se);
2081                 __dequeue_entity(cfs_rq, se);
2082                 update_entity_load_avg(se, 1);
2083         }
2084
2085         update_stats_curr_start(cfs_rq, se);
2086         cfs_rq->curr = se;
2087 #ifdef CONFIG_SCHEDSTATS
2088         /*
2089          * Track our maximum slice length, if the CPU's load is at
2090          * least twice that of our own weight (i.e. dont track it
2091          * when there are only lesser-weight tasks around):
2092          */
2093         if (rq_of(cfs_rq)->load.weight >= 2*se->load.weight) {
2094                 se->statistics.slice_max = max(se->statistics.slice_max,
2095                         se->sum_exec_runtime - se->prev_sum_exec_runtime);
2096         }
2097 #endif
2098         se->prev_sum_exec_runtime = se->sum_exec_runtime;
2099 }
2100
2101 static int
2102 wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se);
2103
2104 /*
2105  * Pick the next process, keeping these things in mind, in this order:
2106  * 1) keep things fair between processes/task groups
2107  * 2) pick the "next" process, since someone really wants that to run
2108  * 3) pick the "last" process, for cache locality
2109  * 4) do not run the "skip" process, if something else is available
2110  */
2111 static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq)
2112 {
2113         struct sched_entity *se = __pick_first_entity(cfs_rq);
2114         struct sched_entity *left = se;
2115
2116         /*
2117          * Avoid running the skip buddy, if running something else can
2118          * be done without getting too unfair.
2119          */
2120         if (cfs_rq->skip == se) {
2121                 struct sched_entity *second = __pick_next_entity(se);
2122                 if (second && wakeup_preempt_entity(second, left) < 1)
2123                         se = second;
2124         }
2125
2126         /*
2127          * Prefer last buddy, try to return the CPU to a preempted task.
2128          */
2129         if (cfs_rq->last && wakeup_preempt_entity(cfs_rq->last, left) < 1)
2130                 se = cfs_rq->last;
2131
2132         /*
2133          * Someone really wants this to run. If it's not unfair, run it.
2134          */
2135         if (cfs_rq->next && wakeup_preempt_entity(cfs_rq->next, left) < 1)
2136                 se = cfs_rq->next;
2137
2138         clear_buddies(cfs_rq, se);
2139
2140         return se;
2141 }
2142
2143 static void check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
2144
2145 static void put_prev_entity(struct cfs_rq *cfs_rq, struct sched_entity *prev)
2146 {
2147         /*
2148          * If still on the runqueue then deactivate_task()
2149          * was not called and update_curr() has to be done:
2150          */
2151         if (prev->on_rq)
2152                 update_curr(cfs_rq);
2153
2154         /* throttle cfs_rqs exceeding runtime */
2155         check_cfs_rq_runtime(cfs_rq);
2156
2157         check_spread(cfs_rq, prev);
2158         if (prev->on_rq) {
2159                 update_stats_wait_start(cfs_rq, prev);
2160                 /* Put 'current' back into the tree. */
2161                 __enqueue_entity(cfs_rq, prev);
2162                 /* in !on_rq case, update occurred at dequeue */
2163                 update_entity_load_avg(prev, 1);
2164         }
2165         cfs_rq->curr = NULL;
2166 }
2167
2168 static void
2169 entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued)
2170 {
2171         /*
2172          * Update run-time statistics of the 'current'.
2173          */
2174         update_curr(cfs_rq);
2175
2176         /*
2177          * Ensure that runnable average is periodically updated.
2178          */
2179         update_entity_load_avg(curr, 1);
2180         update_cfs_rq_blocked_load(cfs_rq, 1);
2181
2182 #ifdef CONFIG_SCHED_HRTICK
2183         /*
2184          * queued ticks are scheduled to match the slice, so don't bother
2185          * validating it and just reschedule.
2186          */
2187         if (queued) {
2188                 resched_task(rq_of(cfs_rq)->curr);
2189                 return;
2190         }
2191         /*
2192          * don't let the period tick interfere with the hrtick preemption
2193          */
2194         if (!sched_feat(DOUBLE_TICK) &&
2195                         hrtimer_active(&rq_of(cfs_rq)->hrtick_timer))
2196                 return;
2197 #endif
2198
2199         if (cfs_rq->nr_running > 1)
2200                 check_preempt_tick(cfs_rq, curr);
2201 }
2202
2203
2204 /**************************************************
2205  * CFS bandwidth control machinery
2206  */
2207
2208 #ifdef CONFIG_CFS_BANDWIDTH
2209
2210 #ifdef HAVE_JUMP_LABEL
2211 static struct static_key __cfs_bandwidth_used;
2212
2213 static inline bool cfs_bandwidth_used(void)
2214 {
2215         return static_key_false(&__cfs_bandwidth_used);
2216 }
2217
2218 void account_cfs_bandwidth_used(int enabled, int was_enabled)
2219 {
2220         /* only need to count groups transitioning between enabled/!enabled */
2221         if (enabled && !was_enabled)
2222                 static_key_slow_inc(&__cfs_bandwidth_used);
2223         else if (!enabled && was_enabled)
2224                 static_key_slow_dec(&__cfs_bandwidth_used);
2225 }
2226 #else /* HAVE_JUMP_LABEL */
2227 static bool cfs_bandwidth_used(void)
2228 {
2229         return true;
2230 }
2231
2232 void account_cfs_bandwidth_used(int enabled, int was_enabled) {}
2233 #endif /* HAVE_JUMP_LABEL */
2234
2235 /*
2236  * default period for cfs group bandwidth.
2237  * default: 0.1s, units: nanoseconds
2238  */
2239 static inline u64 default_cfs_period(void)
2240 {
2241         return 100000000ULL;
2242 }
2243
2244 static inline u64 sched_cfs_bandwidth_slice(void)
2245 {
2246         return (u64)sysctl_sched_cfs_bandwidth_slice * NSEC_PER_USEC;
2247 }
2248
2249 /*
2250  * Replenish runtime according to assigned quota and update expiration time.
2251  * We use sched_clock_cpu directly instead of rq->clock to avoid adding
2252  * additional synchronization around rq->lock.
2253  *
2254  * requires cfs_b->lock
2255  */
2256 void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b)
2257 {
2258         u64 now;
2259
2260         if (cfs_b->quota == RUNTIME_INF)
2261                 return;
2262
2263         now = sched_clock_cpu(smp_processor_id());
2264         cfs_b->runtime = cfs_b->quota;
2265         cfs_b->runtime_expires = now + ktime_to_ns(cfs_b->period);
2266 }
2267
2268 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
2269 {
2270         return &tg->cfs_bandwidth;
2271 }
2272
2273 /* rq->task_clock normalized against any time this cfs_rq has spent throttled */
2274 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq)
2275 {
2276         if (unlikely(cfs_rq->throttle_count))
2277                 return cfs_rq->throttled_clock_task;
2278
2279         return rq_of(cfs_rq)->clock_task - cfs_rq->throttled_clock_task_time;
2280 }
2281
2282 /* returns 0 on failure to allocate runtime */
2283 static int assign_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2284 {
2285         struct task_group *tg = cfs_rq->tg;
2286         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(tg);
2287         u64 amount = 0, min_amount, expires;
2288
2289         /* note: this is a positive sum as runtime_remaining <= 0 */
2290         min_amount = sched_cfs_bandwidth_slice() - cfs_rq->runtime_remaining;
2291
2292         raw_spin_lock(&cfs_b->lock);
2293         if (cfs_b->quota == RUNTIME_INF)
2294                 amount = min_amount;
2295         else {
2296                 /*
2297                  * If the bandwidth pool has become inactive, then at least one
2298                  * period must have elapsed since the last consumption.
2299                  * Refresh the global state and ensure bandwidth timer becomes
2300                  * active.
2301                  */
2302                 if (!cfs_b->timer_active) {
2303                         __refill_cfs_bandwidth_runtime(cfs_b);
2304                         __start_cfs_bandwidth(cfs_b);
2305                 }
2306
2307                 if (cfs_b->runtime > 0) {
2308                         amount = min(cfs_b->runtime, min_amount);
2309                         cfs_b->runtime -= amount;
2310                         cfs_b->idle = 0;
2311                 }
2312         }
2313         expires = cfs_b->runtime_expires;
2314         raw_spin_unlock(&cfs_b->lock);
2315
2316         cfs_rq->runtime_remaining += amount;
2317         /*
2318          * we may have advanced our local expiration to account for allowed
2319          * spread between our sched_clock and the one on which runtime was
2320          * issued.
2321          */
2322         if ((s64)(expires - cfs_rq->runtime_expires) > 0)
2323                 cfs_rq->runtime_expires = expires;
2324
2325         return cfs_rq->runtime_remaining > 0;
2326 }
2327
2328 /*
2329  * Note: This depends on the synchronization provided by sched_clock and the
2330  * fact that rq->clock snapshots this value.
2331  */
2332 static void expire_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2333 {
2334         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
2335         struct rq *rq = rq_of(cfs_rq);
2336
2337         /* if the deadline is ahead of our clock, nothing to do */
2338         if (likely((s64)(rq->clock - cfs_rq->runtime_expires) < 0))
2339                 return;
2340
2341         if (cfs_rq->runtime_remaining < 0)
2342                 return;
2343
2344         /*
2345          * If the local deadline has passed we have to consider the
2346          * possibility that our sched_clock is 'fast' and the global deadline
2347          * has not truly expired.
2348          *
2349          * Fortunately we can check determine whether this the case by checking
2350          * whether the global deadline has advanced.
2351          */
2352
2353         if ((s64)(cfs_rq->runtime_expires - cfs_b->runtime_expires) >= 0) {
2354                 /* extend local deadline, drift is bounded above by 2 ticks */
2355                 cfs_rq->runtime_expires += TICK_NSEC;
2356         } else {
2357                 /* global deadline is ahead, expiration has passed */
2358                 cfs_rq->runtime_remaining = 0;
2359         }
2360 }
2361
2362 static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq,
2363                                      unsigned long delta_exec)
2364 {
2365         /* dock delta_exec before expiring quota (as it could span periods) */
2366         cfs_rq->runtime_remaining -= delta_exec;
2367         expire_cfs_rq_runtime(cfs_rq);
2368
2369         if (likely(cfs_rq->runtime_remaining > 0))
2370                 return;
2371
2372         /*
2373          * if we're unable to extend our runtime we resched so that the active
2374          * hierarchy can be throttled
2375          */
2376         if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr))
2377                 resched_task(rq_of(cfs_rq)->curr);
2378 }
2379
2380 static __always_inline
2381 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, unsigned long delta_exec)
2382 {
2383         if (!cfs_bandwidth_used() || !cfs_rq->runtime_enabled)
2384                 return;
2385
2386         __account_cfs_rq_runtime(cfs_rq, delta_exec);
2387 }
2388
2389 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
2390 {
2391         return cfs_bandwidth_used() && cfs_rq->throttled;
2392 }
2393
2394 /* check whether cfs_rq, or any parent, is throttled */
2395 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
2396 {
2397         return cfs_bandwidth_used() && cfs_rq->throttle_count;
2398 }
2399
2400 /*
2401  * Ensure that neither of the group entities corresponding to src_cpu or
2402  * dest_cpu are members of a throttled hierarchy when performing group
2403  * load-balance operations.
2404  */
2405 static inline int throttled_lb_pair(struct task_group *tg,
2406                                     int src_cpu, int dest_cpu)
2407 {
2408         struct cfs_rq *src_cfs_rq, *dest_cfs_rq;
2409
2410         src_cfs_rq = tg->cfs_rq[src_cpu];
2411         dest_cfs_rq = tg->cfs_rq[dest_cpu];
2412
2413         return throttled_hierarchy(src_cfs_rq) ||
2414                throttled_hierarchy(dest_cfs_rq);
2415 }
2416
2417 /* updated child weight may affect parent so we have to do this bottom up */
2418 static int tg_unthrottle_up(struct task_group *tg, void *data)
2419 {
2420         struct rq *rq = data;
2421         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
2422
2423         cfs_rq->throttle_count--;
2424 #ifdef CONFIG_SMP
2425         if (!cfs_rq->throttle_count) {
2426                 /* adjust cfs_rq_clock_task() */
2427                 cfs_rq->throttled_clock_task_time += rq->clock_task -
2428                                              cfs_rq->throttled_clock_task;
2429         }
2430 #endif
2431
2432         return 0;
2433 }
2434
2435 static int tg_throttle_down(struct task_group *tg, void *data)
2436 {
2437         struct rq *rq = data;
2438         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
2439
2440         /* group is entering throttled state, stop time */
2441         if (!cfs_rq->throttle_count)
2442                 cfs_rq->throttled_clock_task = rq->clock_task;
2443         cfs_rq->throttle_count++;
2444
2445         return 0;
2446 }
2447
2448 static void throttle_cfs_rq(struct cfs_rq *cfs_rq)
2449 {
2450         struct rq *rq = rq_of(cfs_rq);
2451         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
2452         struct sched_entity *se;
2453         long task_delta, dequeue = 1;
2454
2455         se = cfs_rq->tg->se[cpu_of(rq_of(cfs_rq))];
2456
2457         /* freeze hierarchy runnable averages while throttled */
2458         rcu_read_lock();
2459         walk_tg_tree_from(cfs_rq->tg, tg_throttle_down, tg_nop, (void *)rq);
2460         rcu_read_unlock();
2461
2462         task_delta = cfs_rq->h_nr_running;
2463         for_each_sched_entity(se) {
2464                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
2465                 /* throttled entity or throttle-on-deactivate */
2466                 if (!se->on_rq)
2467                         break;
2468
2469                 if (dequeue)
2470                         dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP);
2471                 qcfs_rq->h_nr_running -= task_delta;
2472
2473                 if (qcfs_rq->load.weight)
2474                         dequeue = 0;
2475         }
2476
2477         if (!se)
2478                 rq->nr_running -= task_delta;
2479
2480         cfs_rq->throttled = 1;
2481         cfs_rq->throttled_clock = rq->clock;
2482         raw_spin_lock(&cfs_b->lock);
2483         list_add_tail_rcu(&cfs_rq->throttled_list, &cfs_b->throttled_cfs_rq);
2484         raw_spin_unlock(&cfs_b->lock);
2485 }
2486
2487 void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
2488 {
2489         struct rq *rq = rq_of(cfs_rq);
2490         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
2491         struct sched_entity *se;
2492         int enqueue = 1;
2493         long task_delta;
2494
2495         se = cfs_rq->tg->se[cpu_of(rq_of(cfs_rq))];
2496
2497         cfs_rq->throttled = 0;
2498         raw_spin_lock(&cfs_b->lock);
2499         cfs_b->throttled_time += rq->clock - cfs_rq->throttled_clock;
2500         list_del_rcu(&cfs_rq->throttled_list);
2501         raw_spin_unlock(&cfs_b->lock);
2502
2503         update_rq_clock(rq);
2504         /* update hierarchical throttle state */
2505         walk_tg_tree_from(cfs_rq->tg, tg_nop, tg_unthrottle_up, (void *)rq);
2506
2507         if (!cfs_rq->load.weight)
2508                 return;
2509
2510         task_delta = cfs_rq->h_nr_running;
2511         for_each_sched_entity(se) {
2512                 if (se->on_rq)
2513                         enqueue = 0;
2514
2515                 cfs_rq = cfs_rq_of(se);
2516                 if (enqueue)
2517                         enqueue_entity(cfs_rq, se, ENQUEUE_WAKEUP);
2518                 cfs_rq->h_nr_running += task_delta;
2519
2520                 if (cfs_rq_throttled(cfs_rq))
2521                         break;
2522         }
2523
2524         if (!se)
2525                 rq->nr_running += task_delta;
2526
2527         /* determine whether we need to wake up potentially idle cpu */
2528         if (rq->curr == rq->idle && rq->cfs.nr_running)
2529                 resched_task(rq->curr);
2530 }
2531
2532 static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b,
2533                 u64 remaining, u64 expires)
2534 {
2535         struct cfs_rq *cfs_rq;
2536         u64 runtime = remaining;
2537
2538         rcu_read_lock();
2539         list_for_each_entry_rcu(cfs_rq, &cfs_b->throttled_cfs_rq,
2540                                 throttled_list) {
2541                 struct rq *rq = rq_of(cfs_rq);
2542
2543                 raw_spin_lock(&rq->lock);
2544                 if (!cfs_rq_throttled(cfs_rq))
2545                         goto next;
2546
2547                 runtime = -cfs_rq->runtime_remaining + 1;
2548                 if (runtime > remaining)
2549                         runtime = remaining;
2550                 remaining -= runtime;
2551
2552                 cfs_rq->runtime_remaining += runtime;
2553                 cfs_rq->runtime_expires = expires;
2554
2555                 /* we check whether we're throttled above */
2556                 if (cfs_rq->runtime_remaining > 0)
2557                         unthrottle_cfs_rq(cfs_rq);
2558
2559 next:
2560                 raw_spin_unlock(&rq->lock);
2561
2562                 if (!remaining)
2563                         break;
2564         }
2565         rcu_read_unlock();
2566
2567         return remaining;
2568 }
2569
2570 /*
2571  * Responsible for refilling a task_group's bandwidth and unthrottling its
2572  * cfs_rqs as appropriate. If there has been no activity within the last
2573  * period the timer is deactivated until scheduling resumes; cfs_b->idle is
2574  * used to track this state.
2575  */
2576 static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun)
2577 {
2578         u64 runtime, runtime_expires;
2579         int idle = 1, throttled;
2580
2581         raw_spin_lock(&cfs_b->lock);
2582         /* no need to continue the timer with no bandwidth constraint */
2583         if (cfs_b->quota == RUNTIME_INF)
2584                 goto out_unlock;
2585
2586         throttled = !list_empty(&cfs_b->throttled_cfs_rq);
2587         /* idle depends on !throttled (for the case of a large deficit) */
2588         idle = cfs_b->idle && !throttled;
2589         cfs_b->nr_periods += overrun;
2590
2591         /* if we're going inactive then everything else can be deferred */
2592         if (idle)
2593                 goto out_unlock;
2594
2595         __refill_cfs_bandwidth_runtime(cfs_b);
2596
2597         if (!throttled) {
2598                 /* mark as potentially idle for the upcoming period */
2599                 cfs_b->idle = 1;
2600                 goto out_unlock;
2601         }
2602
2603         /* account preceding periods in which throttling occurred */
2604         cfs_b->nr_throttled += overrun;
2605
2606         /*
2607          * There are throttled entities so we must first use the new bandwidth
2608          * to unthrottle them before making it generally available.  This
2609          * ensures that all existing debts will be paid before a new cfs_rq is
2610          * allowed to run.
2611          */
2612         runtime = cfs_b->runtime;
2613         runtime_expires = cfs_b->runtime_expires;
2614         cfs_b->runtime = 0;
2615
2616         /*
2617          * This check is repeated as we are holding onto the new bandwidth
2618          * while we unthrottle.  This can potentially race with an unthrottled
2619          * group trying to acquire new bandwidth from the global pool.
2620          */
2621         while (throttled && runtime > 0) {
2622                 raw_spin_unlock(&cfs_b->lock);
2623                 /* we can't nest cfs_b->lock while distributing bandwidth */
2624                 runtime = distribute_cfs_runtime(cfs_b, runtime,
2625                                                  runtime_expires);
2626                 raw_spin_lock(&cfs_b->lock);
2627
2628                 throttled = !list_empty(&cfs_b->throttled_cfs_rq);
2629         }
2630
2631         /* return (any) remaining runtime */
2632         cfs_b->runtime = runtime;
2633         /*
2634          * While we are ensured activity in the period following an
2635          * unthrottle, this also covers the case in which the new bandwidth is
2636          * insufficient to cover the existing bandwidth deficit.  (Forcing the
2637          * timer to remain active while there are any throttled entities.)
2638          */
2639         cfs_b->idle = 0;
2640 out_unlock:
2641         if (idle)
2642                 cfs_b->timer_active = 0;
2643         raw_spin_unlock(&cfs_b->lock);
2644
2645         return idle;
2646 }
2647
2648 /* a cfs_rq won't donate quota below this amount */
2649 static const u64 min_cfs_rq_runtime = 1 * NSEC_PER_MSEC;
2650 /* minimum remaining period time to redistribute slack quota */
2651 static const u64 min_bandwidth_expiration = 2 * NSEC_PER_MSEC;
2652 /* how long we wait to gather additional slack before distributing */
2653 static const u64 cfs_bandwidth_slack_period = 5 * NSEC_PER_MSEC;
2654
2655 /* are we near the end of the current quota period? */
2656 static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire)
2657 {
2658         struct hrtimer *refresh_timer = &cfs_b->period_timer;
2659         u64 remaining;
2660
2661         /* if the call-back is running a quota refresh is already occurring */
2662         if (hrtimer_callback_running(refresh_timer))
2663                 return 1;
2664
2665         /* is a quota refresh about to occur? */
2666         remaining = ktime_to_ns(hrtimer_expires_remaining(refresh_timer));
2667         if (remaining < min_expire)
2668                 return 1;
2669
2670         return 0;
2671 }
2672
2673 static void start_cfs_slack_bandwidth(struct cfs_bandwidth *cfs_b)
2674 {
2675         u64 min_left = cfs_bandwidth_slack_period + min_bandwidth_expiration;
2676
2677         /* if there's a quota refresh soon don't bother with slack */
2678         if (runtime_refresh_within(cfs_b, min_left))
2679                 return;
2680
2681         start_bandwidth_timer(&cfs_b->slack_timer,
2682                                 ns_to_ktime(cfs_bandwidth_slack_period));
2683 }
2684
2685 /* we know any runtime found here is valid as update_curr() precedes return */
2686 static void __return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2687 {
2688         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
2689         s64 slack_runtime = cfs_rq->runtime_remaining - min_cfs_rq_runtime;
2690
2691         if (slack_runtime <= 0)
2692                 return;
2693
2694         raw_spin_lock(&cfs_b->lock);
2695         if (cfs_b->quota != RUNTIME_INF &&
2696             cfs_rq->runtime_expires == cfs_b->runtime_expires) {
2697                 cfs_b->runtime += slack_runtime;
2698
2699                 /* we are under rq->lock, defer unthrottling using a timer */
2700                 if (cfs_b->runtime > sched_cfs_bandwidth_slice() &&
2701                     !list_empty(&cfs_b->throttled_cfs_rq))
2702                         start_cfs_slack_bandwidth(cfs_b);
2703         }
2704         raw_spin_unlock(&cfs_b->lock);
2705
2706         /* even if it's not valid for return we don't want to try again */
2707         cfs_rq->runtime_remaining -= slack_runtime;
2708 }
2709
2710 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2711 {
2712         if (!cfs_bandwidth_used())
2713                 return;
2714
2715         if (!cfs_rq->runtime_enabled || cfs_rq->nr_running)
2716                 return;
2717
2718         __return_cfs_rq_runtime(cfs_rq);
2719 }
2720
2721 /*
2722  * This is done with a timer (instead of inline with bandwidth return) since
2723  * it's necessary to juggle rq->locks to unthrottle their respective cfs_rqs.
2724  */
2725 static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b)
2726 {
2727         u64 runtime = 0, slice = sched_cfs_bandwidth_slice();
2728         u64 expires;
2729
2730         /* confirm we're still not at a refresh boundary */
2731         if (runtime_refresh_within(cfs_b, min_bandwidth_expiration))
2732                 return;
2733
2734         raw_spin_lock(&cfs_b->lock);
2735         if (cfs_b->quota != RUNTIME_INF && cfs_b->runtime > slice) {
2736                 runtime = cfs_b->runtime;
2737                 cfs_b->runtime = 0;
2738         }
2739         expires = cfs_b->runtime_expires;
2740         raw_spin_unlock(&cfs_b->lock);
2741
2742         if (!runtime)
2743                 return;
2744
2745         runtime = distribute_cfs_runtime(cfs_b, runtime, expires);
2746
2747         raw_spin_lock(&cfs_b->lock);
2748         if (expires == cfs_b->runtime_expires)
2749                 cfs_b->runtime = runtime;
2750         raw_spin_unlock(&cfs_b->lock);
2751 }
2752
2753 /*
2754  * When a group wakes up we want to make sure that its quota is not already
2755  * expired/exceeded, otherwise it may be allowed to steal additional ticks of
2756  * runtime as update_curr() throttling can not not trigger until it's on-rq.
2757  */
2758 static void check_enqueue_throttle(struct cfs_rq *cfs_rq)
2759 {
2760         if (!cfs_bandwidth_used())
2761                 return;
2762
2763         /* an active group must be handled by the update_curr()->put() path */
2764         if (!cfs_rq->runtime_enabled || cfs_rq->curr)
2765                 return;
2766
2767         /* ensure the group is not already throttled */
2768         if (cfs_rq_throttled(cfs_rq))
2769                 return;
2770
2771         /* update runtime allocation */
2772         account_cfs_rq_runtime(cfs_rq, 0);
2773         if (cfs_rq->runtime_remaining <= 0)
2774                 throttle_cfs_rq(cfs_rq);
2775 }
2776
2777 /* conditionally throttle active cfs_rq's from put_prev_entity() */
2778 static void check_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2779 {
2780         if (!cfs_bandwidth_used())
2781                 return;
2782
2783         if (likely(!cfs_rq->runtime_enabled || cfs_rq->runtime_remaining > 0))
2784                 return;
2785
2786         /*
2787          * it's possible for a throttled entity to be forced into a running
2788          * state (e.g. set_curr_task), in this case we're finished.
2789          */
2790         if (cfs_rq_throttled(cfs_rq))
2791                 return;
2792
2793         throttle_cfs_rq(cfs_rq);
2794 }
2795
2796 static inline u64 default_cfs_period(void);
2797 static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun);
2798 static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b);
2799
2800 static enum hrtimer_restart sched_cfs_slack_timer(struct hrtimer *timer)
2801 {
2802         struct cfs_bandwidth *cfs_b =
2803                 container_of(timer, struct cfs_bandwidth, slack_timer);
2804         do_sched_cfs_slack_timer(cfs_b);
2805
2806         return HRTIMER_NORESTART;
2807 }
2808
2809 static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer)
2810 {
2811         struct cfs_bandwidth *cfs_b =
2812                 container_of(timer, struct cfs_bandwidth, period_timer);
2813         ktime_t now;
2814         int overrun;
2815         int idle = 0;
2816
2817         for (;;) {
2818                 now = hrtimer_cb_get_time(timer);
2819                 overrun = hrtimer_forward(timer, now, cfs_b->period);
2820
2821                 if (!overrun)
2822                         break;
2823
2824                 idle = do_sched_cfs_period_timer(cfs_b, overrun);
2825         }
2826
2827         return idle ? HRTIMER_NORESTART : HRTIMER_RESTART;
2828 }
2829
2830 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
2831 {
2832         raw_spin_lock_init(&cfs_b->lock);
2833         cfs_b->runtime = 0;
2834         cfs_b->quota = RUNTIME_INF;
2835         cfs_b->period = ns_to_ktime(default_cfs_period());
2836
2837         INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq);
2838         hrtimer_init(&cfs_b->period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
2839         cfs_b->period_timer.function = sched_cfs_period_timer;
2840         hrtimer_init(&cfs_b->slack_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
2841         cfs_b->slack_timer.function = sched_cfs_slack_timer;
2842 }
2843
2844 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq)
2845 {
2846         cfs_rq->runtime_enabled = 0;
2847         INIT_LIST_HEAD(&cfs_rq->throttled_list);
2848 }
2849
2850 /* requires cfs_b->lock, may release to reprogram timer */
2851 void __start_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
2852 {
2853         /*
2854          * The timer may be active because we're trying to set a new bandwidth
2855          * period or because we're racing with the tear-down path
2856          * (timer_active==0 becomes visible before the hrtimer call-back
2857          * terminates).  In either case we ensure that it's re-programmed
2858          */
2859         while (unlikely(hrtimer_active(&cfs_b->period_timer))) {
2860                 raw_spin_unlock(&cfs_b->lock);
2861                 /* ensure cfs_b->lock is available while we wait */
2862                 hrtimer_cancel(&cfs_b->period_timer);
2863
2864                 raw_spin_lock(&cfs_b->lock);
2865                 /* if someone else restarted the timer then we're done */
2866                 if (cfs_b->timer_active)
2867                         return;
2868         }
2869
2870         cfs_b->timer_active = 1;
2871         start_bandwidth_timer(&cfs_b->period_timer, cfs_b->period);
2872 }
2873
2874 static void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
2875 {
2876         hrtimer_cancel(&cfs_b->period_timer);
2877         hrtimer_cancel(&cfs_b->slack_timer);
2878 }
2879
2880 static void __maybe_unused unthrottle_offline_cfs_rqs(struct rq *rq)
2881 {
2882         struct cfs_rq *cfs_rq;
2883
2884         for_each_leaf_cfs_rq(rq, cfs_rq) {
2885                 struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
2886
2887                 if (!cfs_rq->runtime_enabled)
2888                         continue;
2889
2890                 /*
2891                  * clock_task is not advancing so we just need to make sure
2892                  * there's some valid quota amount
2893                  */
2894                 cfs_rq->runtime_remaining = cfs_b->quota;
2895                 if (cfs_rq_throttled(cfs_rq))
2896                         unthrottle_cfs_rq(cfs_rq);
2897         }
2898 }
2899
2900 #else /* CONFIG_CFS_BANDWIDTH */
2901 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq)
2902 {
2903         return rq_of(cfs_rq)->clock_task;
2904 }
2905
2906 static void account_cfs_rq_runtime(struct cfs_rq *cfs_rq,
2907                                      unsigned long delta_exec) {}
2908 static void check_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
2909 static void check_enqueue_throttle(struct cfs_rq *cfs_rq) {}
2910 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
2911
2912 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
2913 {
2914         return 0;
2915 }
2916
2917 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
2918 {
2919         return 0;
2920 }
2921
2922 static inline int throttled_lb_pair(struct task_group *tg,
2923                                     int src_cpu, int dest_cpu)
2924 {
2925         return 0;
2926 }
2927
2928 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
2929
2930 #ifdef CONFIG_FAIR_GROUP_SCHED
2931 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
2932 #endif
2933
2934 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
2935 {
2936         return NULL;
2937 }
2938 static inline void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
2939 static inline void unthrottle_offline_cfs_rqs(struct rq *rq) {}
2940
2941 #endif /* CONFIG_CFS_BANDWIDTH */
2942
2943 /**************************************************
2944  * CFS operations on tasks:
2945  */
2946
2947 #ifdef CONFIG_SCHED_HRTICK
2948 static void hrtick_start_fair(struct rq *rq, struct task_struct *p)
2949 {
2950         struct sched_entity *se = &p->se;
2951         struct cfs_rq *cfs_rq = cfs_rq_of(se);
2952
2953         WARN_ON(task_rq(p) != rq);
2954
2955         if (cfs_rq->nr_running > 1) {
2956                 u64 slice = sched_slice(cfs_rq, se);
2957                 u64 ran = se->sum_exec_runtime - se->prev_sum_exec_runtime;
2958                 s64 delta = slice - ran;
2959
2960                 if (delta < 0) {
2961                         if (rq->curr == p)
2962                                 resched_task(p);
2963                         return;
2964                 }
2965
2966                 /*
2967                  * Don't schedule slices shorter than 10000ns, that just
2968                  * doesn't make sense. Rely on vruntime for fairness.
2969                  */
2970                 if (rq->curr != p)
2971                         delta = max_t(s64, 10000LL, delta);
2972
2973                 hrtick_start(rq, delta);
2974         }
2975 }
2976
2977 /*
2978  * called from enqueue/dequeue and updates the hrtick when the
2979  * current task is from our class and nr_running is low enough
2980  * to matter.
2981  */
2982 static void hrtick_update(struct rq *rq)
2983 {
2984         struct task_struct *curr = rq->curr;
2985
2986         if (!hrtick_enabled(rq) || curr->sched_class != &fair_sched_class)
2987                 return;
2988
2989         if (cfs_rq_of(&curr->se)->nr_running < sched_nr_latency)
2990                 hrtick_start_fair(rq, curr);
2991 }
2992 #else /* !CONFIG_SCHED_HRTICK */
2993 static inline void
2994 hrtick_start_fair(struct rq *rq, struct task_struct *p)
2995 {
2996 }
2997
2998 static inline void hrtick_update(struct rq *rq)
2999 {
3000 }
3001 #endif
3002
3003 /*
3004  * The enqueue_task method is called before nr_running is
3005  * increased. Here we update the fair scheduling stats and
3006  * then put the task into the rbtree:
3007  */
3008 static void
3009 enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
3010 {
3011         struct cfs_rq *cfs_rq;
3012         struct sched_entity *se = &p->se;
3013
3014         for_each_sched_entity(se) {
3015                 if (se->on_rq)
3016                         break;
3017                 cfs_rq = cfs_rq_of(se);
3018                 enqueue_entity(cfs_rq, se, flags);
3019
3020                 /*
3021                  * end evaluation on encountering a throttled cfs_rq
3022                  *
3023                  * note: in the case of encountering a throttled cfs_rq we will
3024                  * post the final h_nr_running increment below.
3025                 */
3026                 if (cfs_rq_throttled(cfs_rq))
3027                         break;
3028                 cfs_rq->h_nr_running++;
3029
3030                 flags = ENQUEUE_WAKEUP;
3031         }
3032
3033         for_each_sched_entity(se) {
3034                 cfs_rq = cfs_rq_of(se);
3035                 cfs_rq->h_nr_running++;
3036
3037                 if (cfs_rq_throttled(cfs_rq))
3038                         break;
3039
3040                 update_cfs_shares(cfs_rq);
3041                 update_entity_load_avg(se, 1);
3042         }
3043
3044         if (!se) {
3045                 update_rq_runnable_avg(rq, rq->nr_running);
3046                 inc_nr_running(rq);
3047         }
3048         hrtick_update(rq);
3049 }
3050
3051 static void set_next_buddy(struct sched_entity *se);
3052
3053 /*
3054  * The dequeue_task method is called before nr_running is
3055  * decreased. We remove the task from the rbtree and
3056  * update the fair scheduling stats:
3057  */
3058 static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
3059 {
3060         struct cfs_rq *cfs_rq;
3061         struct sched_entity *se = &p->se;
3062         int task_sleep = flags & DEQUEUE_SLEEP;
3063
3064         for_each_sched_entity(se) {
3065                 cfs_rq = cfs_rq_of(se);
3066                 dequeue_entity(cfs_rq, se, flags);
3067
3068                 /*
3069                  * end evaluation on encountering a throttled cfs_rq
3070                  *
3071                  * note: in the case of encountering a throttled cfs_rq we will
3072                  * post the final h_nr_running decrement below.
3073                 */
3074                 if (cfs_rq_throttled(cfs_rq))
3075                         break;
3076                 cfs_rq->h_nr_running--;
3077
3078                 /* Don't dequeue parent if it has other entities besides us */
3079                 if (cfs_rq->load.weight) {
3080                         /*
3081                          * Bias pick_next to pick a task from this cfs_rq, as
3082                          * p is sleeping when it is within its sched_slice.
3083                          */
3084                         if (task_sleep && parent_entity(se))
3085                                 set_next_buddy(parent_entity(se));
3086
3087                         /* avoid re-evaluating load for this entity */
3088                         se = parent_entity(se);
3089                         break;
3090                 }
3091                 flags |= DEQUEUE_SLEEP;
3092         }
3093
3094         for_each_sched_entity(se) {
3095                 cfs_rq = cfs_rq_of(se);
3096                 cfs_rq->h_nr_running--;
3097
3098                 if (cfs_rq_throttled(cfs_rq))
3099                         break;
3100
3101                 update_cfs_shares(cfs_rq);
3102                 update_entity_load_avg(se, 1);
3103         }
3104
3105         if (!se) {
3106                 dec_nr_running(rq);
3107                 update_rq_runnable_avg(rq, 1);
3108         }
3109         hrtick_update(rq);
3110 }
3111
3112 #ifdef CONFIG_SMP
3113 /* Used instead of source_load when we know the type == 0 */
3114 static unsigned long weighted_cpuload(const int cpu)
3115 {
3116         return cpu_rq(cpu)->load.weight;
3117 }
3118
3119 /*
3120  * Return a low guess at the load of a migration-source cpu weighted
3121  * according to the scheduling class and "nice" value.
3122  *
3123  * We want to under-estimate the load of migration sources, to
3124  * balance conservatively.
3125  */
3126 static unsigned long source_load(int cpu, int type)
3127 {
3128         struct rq *rq = cpu_rq(cpu);
3129         unsigned long total = weighted_cpuload(cpu);
3130
3131         if (type == 0 || !sched_feat(LB_BIAS))
3132                 return total;
3133
3134         return min(rq->cpu_load[type-1], total);
3135 }
3136
3137 /*
3138  * Return a high guess at the load of a migration-target cpu weighted
3139  * according to the scheduling class and "nice" value.
3140  */
3141 static unsigned long target_load(int cpu, int type)
3142 {
3143         struct rq *rq = cpu_rq(cpu);
3144         unsigned long total = weighted_cpuload(cpu);
3145
3146         if (type == 0 || !sched_feat(LB_BIAS))
3147                 return total;
3148
3149         return max(rq->cpu_load[type-1], total);
3150 }
3151
3152 static unsigned long power_of(int cpu)
3153 {
3154         return cpu_rq(cpu)->cpu_power;
3155 }
3156
3157 static unsigned long cpu_avg_load_per_task(int cpu)
3158 {
3159         struct rq *rq = cpu_rq(cpu);
3160         unsigned long nr_running = ACCESS_ONCE(rq->nr_running);
3161
3162         if (nr_running)
3163                 return rq->load.weight / nr_running;
3164
3165         return 0;
3166 }
3167
3168
3169 static void task_waking_fair(struct task_struct *p)
3170 {
3171         struct sched_entity *se = &p->se;
3172         struct cfs_rq *cfs_rq = cfs_rq_of(se);
3173         u64 min_vruntime;
3174
3175 #ifndef CONFIG_64BIT
3176         u64 min_vruntime_copy;
3177
3178         do {
3179                 min_vruntime_copy = cfs_rq->min_vruntime_copy;
3180                 smp_rmb();
3181                 min_vruntime = cfs_rq->min_vruntime;
3182         } while (min_vruntime != min_vruntime_copy);
3183 #else
3184         min_vruntime = cfs_rq->min_vruntime;
3185 #endif
3186
3187         se->vruntime -= min_vruntime;
3188 }
3189
3190 #ifdef CONFIG_FAIR_GROUP_SCHED
3191 /*
3192  * effective_load() calculates the load change as seen from the root_task_group
3193  *
3194  * Adding load to a group doesn't make a group heavier, but can cause movement
3195  * of group shares between cpus. Assuming the shares were perfectly aligned one
3196  * can calculate the shift in shares.
3197  *
3198  * Calculate the effective load difference if @wl is added (subtracted) to @tg
3199  * on this @cpu and results in a total addition (subtraction) of @wg to the
3200  * total group weight.
3201  *
3202  * Given a runqueue weight distribution (rw_i) we can compute a shares
3203  * distribution (s_i) using:
3204  *
3205  *   s_i = rw_i / \Sum rw_j                                             (1)
3206  *
3207  * Suppose we have 4 CPUs and our @tg is a direct child of the root group and
3208  * has 7 equal weight tasks, distributed as below (rw_i), with the resulting
3209  * shares distribution (s_i):
3210  *
3211  *   rw_i = {   2,   4,   1,   0 }
3212  *   s_i  = { 2/7, 4/7, 1/7,   0 }
3213  *
3214  * As per wake_affine() we're interested in the load of two CPUs (the CPU the
3215  * task used to run on and the CPU the waker is running on), we need to
3216  * compute the effect of waking a task on either CPU and, in case of a sync
3217  * wakeup, compute the effect of the current task going to sleep.
3218  *
3219  * So for a change of @wl to the local @cpu with an overall group weight change
3220  * of @wl we can compute the new shares distribution (s'_i) using:
3221  *
3222  *   s'_i = (rw_i + @wl) / (@wg + \Sum rw_j)                            (2)
3223  *
3224  * Suppose we're interested in CPUs 0 and 1, and want to compute the load
3225  * differences in waking a task to CPU 0. The additional task changes the
3226  * weight and shares distributions like:
3227  *
3228  *   rw'_i = {   3,   4,   1,   0 }
3229  *   s'_i  = { 3/8, 4/8, 1/8,   0 }
3230  *
3231  * We can then compute the difference in effective weight by using:
3232  *
3233  *   dw_i = S * (s'_i - s_i)                                            (3)
3234  *
3235  * Where 'S' is the group weight as seen by its parent.
3236  *
3237  * Therefore the effective change in loads on CPU 0 would be 5/56 (3/8 - 2/7)
3238  * times the weight of the group. The effect on CPU 1 would be -4/56 (4/8 -
3239  * 4/7) times the weight of the group.
3240  */
3241 static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
3242 {
3243         struct sched_entity *se = tg->se[cpu];
3244
3245         if (!tg->parent)        /* the trivial, non-cgroup case */
3246                 return wl;
3247
3248         for_each_sched_entity(se) {
3249                 long w, W;
3250
3251                 tg = se->my_q->tg;
3252
3253                 /*
3254                  * W = @wg + \Sum rw_j
3255                  */
3256                 W = wg + calc_tg_weight(tg, se->my_q);
3257
3258                 /*
3259                  * w = rw_i + @wl
3260                  */
3261                 w = se->my_q->load.weight + wl;
3262
3263                 /*
3264                  * wl = S * s'_i; see (2)
3265                  */
3266                 if (W > 0 && w < W)
3267                         wl = (w * tg->shares) / W;
3268                 else
3269                         wl = tg->shares;
3270
3271                 /*
3272                  * Per the above, wl is the new se->load.weight value; since
3273                  * those are clipped to [MIN_SHARES, ...) do so now. See
3274                  * calc_cfs_shares().
3275                  */
3276                 if (wl < MIN_SHARES)
3277                         wl = MIN_SHARES;
3278
3279                 /*
3280                  * wl = dw_i = S * (s'_i - s_i); see (3)
3281                  */
3282                 wl -= se->load.weight;
3283
3284                 /*
3285                  * Recursively apply this logic to all parent groups to compute
3286                  * the final effective load change on the root group. Since
3287                  * only the @tg group gets extra weight, all parent groups can
3288                  * only redistribute existing shares. @wl is the shift in shares
3289                  * resulting from this level per the above.
3290                  */
3291                 wg = 0;
3292         }
3293
3294         return wl;
3295 }
3296 #else
3297
3298 static inline unsigned long effective_load(struct task_group *tg, int cpu,
3299                 unsigned long wl, unsigned long wg)
3300 {
3301         return wl;
3302 }
3303
3304 #endif
3305
3306 static int wake_affine(struct sched_domain *sd, struct task_struct *p, int sync)
3307 {
3308         s64 this_load, load;
3309         int idx, this_cpu, prev_cpu;
3310         unsigned long tl_per_task;
3311         struct task_group *tg;
3312         unsigned long weight;
3313         int balanced;
3314
3315         idx       = sd->wake_idx;
3316         this_cpu  = smp_processor_id();
3317         prev_cpu  = task_cpu(p);
3318         load      = source_load(prev_cpu, idx);
3319         this_load = target_load(this_cpu, idx);
3320
3321         /*
3322          * If sync wakeup then subtract the (maximum possible)
3323          * effect of the currently running task from the load
3324          * of the current CPU:
3325          */
3326         if (sync) {
3327                 tg = task_group(current);
3328                 weight = current->se.load.weight;
3329
3330                 this_load += effective_load(tg, this_cpu, -weight, -weight);
3331                 load += effective_load(tg, prev_cpu, 0, -weight);
3332         }
3333
3334         tg = task_group(p);
3335         weight = p->se.load.weight;
3336
3337         /*
3338          * In low-load situations, where prev_cpu is idle and this_cpu is idle
3339          * due to the sync cause above having dropped this_load to 0, we'll
3340          * always have an imbalance, but there's really nothing you can do
3341          * about that, so that's good too.
3342          *
3343          * Otherwise check if either cpus are near enough in load to allow this
3344          * task to be woken on this_cpu.
3345          */
3346         if (this_load > 0) {
3347                 s64 this_eff_load, prev_eff_load;
3348
3349                 this_eff_load = 100;
3350                 this_eff_load *= power_of(prev_cpu);
3351                 this_eff_load *= this_load +
3352                         effective_load(tg, this_cpu, weight, weight);
3353
3354                 prev_eff_load = 100 + (sd->imbalance_pct - 100) / 2;
3355                 prev_eff_load *= power_of(this_cpu);
3356                 prev_eff_load *= load + effective_load(tg, prev_cpu, 0, weight);
3357
3358                 balanced = this_eff_load <= prev_eff_load;
3359         } else
3360                 balanced = true;
3361
3362         /*
3363          * If the currently running task will sleep within
3364          * a reasonable amount of time then attract this newly
3365          * woken task:
3366          */
3367         if (sync && balanced)
3368                 return 1;
3369
3370         schedstat_inc(p, se.statistics.nr_wakeups_affine_attempts);
3371         tl_per_task = cpu_avg_load_per_task(this_cpu);
3372
3373         if (balanced ||
3374             (this_load <= load &&
3375              this_load + target_load(prev_cpu, idx) <= tl_per_task)) {
3376                 /*
3377                  * This domain has SD_WAKE_AFFINE and
3378                  * p is cache cold in this domain, and
3379                  * there is no bad imbalance.
3380                  */
3381                 schedstat_inc(sd, ttwu_move_affine);
3382                 schedstat_inc(p, se.statistics.nr_wakeups_affine);
3383
3384                 return 1;
3385         }
3386         return 0;
3387 }
3388
3389 /*
3390  * find_idlest_group finds and returns the least busy CPU group within the
3391  * domain.
3392  */
3393 static struct sched_group *
3394 find_idlest_group(struct sched_domain *sd, struct task_struct *p,
3395                   int this_cpu, int load_idx)
3396 {
3397         struct sched_group *idlest = NULL, *group = sd->groups;
3398         unsigned long min_load = ULONG_MAX, this_load = 0;
3399         int imbalance = 100 + (sd->imbalance_pct-100)/2;
3400
3401         do {
3402                 unsigned long load, avg_load;
3403                 int local_group;
3404                 int i;
3405
3406                 /* Skip over this group if it has no CPUs allowed */
3407                 if (!cpumask_intersects(sched_group_cpus(group),
3408                                         tsk_cpus_allowed(p)))
3409                         continue;
3410
3411                 local_group = cpumask_test_cpu(this_cpu,
3412                                                sched_group_cpus(group));
3413
3414                 /* Tally up the load of all CPUs in the group */
3415                 avg_load = 0;
3416
3417                 for_each_cpu(i, sched_group_cpus(group)) {
3418                         /* Bias balancing toward cpus of our domain */
3419                         if (local_group)
3420                                 load = source_load(i, load_idx);
3421                         else
3422                                 load = target_load(i, load_idx);
3423
3424                         avg_load += load;
3425                 }
3426
3427                 /* Adjust by relative CPU power of the group */
3428                 avg_load = (avg_load * SCHED_POWER_SCALE) / group->sgp->power;
3429
3430                 if (local_group) {
3431                         this_load = avg_load;
3432                 } else if (avg_load < min_load) {
3433                         min_load = avg_load;
3434                         idlest = group;
3435                 }
3436         } while (group = group->next, group != sd->groups);
3437
3438         if (!idlest || 100*this_load < imbalance*min_load)
3439                 return NULL;
3440         return idlest;
3441 }
3442
3443 /*
3444  * find_idlest_cpu - find the idlest cpu among the cpus in group.
3445  */
3446 static int
3447 find_idlest_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
3448 {
3449         unsigned long load, min_load = ULONG_MAX;
3450         int idlest = -1;
3451         int i;
3452
3453         /* Traverse only the allowed CPUs */
3454         for_each_cpu_and(i, sched_group_cpus(group), tsk_cpus_allowed(p)) {
3455                 load = weighted_cpuload(i);
3456
3457                 if (load < min_load || (load == min_load && i == this_cpu)) {
3458                         min_load = load;
3459                         idlest = i;
3460                 }
3461         }
3462
3463         return idlest;
3464 }
3465
3466 /*
3467  * Try and locate an idle CPU in the sched_domain.
3468  */
3469 static int select_idle_sibling(struct task_struct *p, int target)
3470 {
3471         struct sched_domain *sd;
3472         struct sched_group *sg;
3473         int i = task_cpu(p);
3474
3475         if (idle_cpu(target))
3476                 return target;
3477
3478         /*
3479          * If the prevous cpu is cache affine and idle, don't be stupid.
3480          */
3481         if (i != target && cpus_share_cache(i, target) && idle_cpu(i))
3482                 return i;
3483
3484         /*
3485          * Otherwise, iterate the domains and find an elegible idle cpu.
3486          */
3487         sd = rcu_dereference(per_cpu(sd_llc, target));
3488         for_each_lower_domain(sd) {
3489                 sg = sd->groups;
3490                 do {
3491                         if (!cpumask_intersects(sched_group_cpus(sg),
3492                                                 tsk_cpus_allowed(p)))
3493                                 goto next;
3494
3495                         for_each_cpu(i, sched_group_cpus(sg)) {
3496                                 if (i == target || !idle_cpu(i))
3497                                         goto next;
3498                         }
3499
3500                         target = cpumask_first_and(sched_group_cpus(sg),
3501                                         tsk_cpus_allowed(p));
3502                         goto done;
3503 next:
3504                         sg = sg->next;
3505                 } while (sg != sd->groups);
3506         }
3507 done:
3508         return target;
3509 }
3510
3511 #ifdef CONFIG_SCHED_HMP
3512 /*
3513  * Heterogenous multiprocessor (HMP) optimizations
3514  *
3515  * The cpu types are distinguished using a list of hmp_domains
3516  * which each represent one cpu type using a cpumask.
3517  * The list is assumed ordered by compute capacity with the
3518  * fastest domain first.
3519  */
3520 DEFINE_PER_CPU(struct hmp_domain *, hmp_cpu_domain);
3521 static const int hmp_max_tasks = 5;
3522
3523 extern void __init arch_get_hmp_domains(struct list_head *hmp_domains_list);
3524
3525 /* Setup hmp_domains */
3526 static int __init hmp_cpu_mask_setup(void)
3527 {
3528         char buf[64];
3529         struct hmp_domain *domain;
3530         struct list_head *pos;
3531         int dc, cpu;
3532
3533         pr_debug("Initializing HMP scheduler:\n");
3534
3535         /* Initialize hmp_domains using platform code */
3536         arch_get_hmp_domains(&hmp_domains);
3537         if (list_empty(&hmp_domains)) {
3538                 pr_debug("HMP domain list is empty!\n");
3539                 return 0;
3540         }
3541
3542         /* Print hmp_domains */
3543         dc = 0;
3544         list_for_each(pos, &hmp_domains) {
3545                 domain = list_entry(pos, struct hmp_domain, hmp_domains);
3546                 cpulist_scnprintf(buf, 64, &domain->possible_cpus);
3547                 pr_debug("  HMP domain %d: %s\n", dc, buf);
3548
3549                 for_each_cpu_mask(cpu, domain->possible_cpus) {
3550                         per_cpu(hmp_cpu_domain, cpu) = domain;
3551                 }
3552                 dc++;
3553         }
3554
3555         return 1;
3556 }
3557
3558 static struct hmp_domain *hmp_get_hmp_domain_for_cpu(int cpu)
3559 {
3560         struct hmp_domain *domain;
3561         struct list_head *pos;
3562
3563         list_for_each(pos, &hmp_domains) {
3564                 domain = list_entry(pos, struct hmp_domain, hmp_domains);
3565                 if(cpumask_test_cpu(cpu, &domain->possible_cpus))
3566                         return domain;
3567         }
3568         return NULL;
3569 }
3570
3571 static void hmp_online_cpu(int cpu)
3572 {
3573         struct hmp_domain *domain = hmp_get_hmp_domain_for_cpu(cpu);
3574
3575         if(domain)
3576                 cpumask_set_cpu(cpu, &domain->cpus);
3577 }
3578
3579 static void hmp_offline_cpu(int cpu)
3580 {
3581         struct hmp_domain *domain = hmp_get_hmp_domain_for_cpu(cpu);
3582
3583         if(domain)
3584                 cpumask_clear_cpu(cpu, &domain->cpus);
3585 }
3586 /*
3587  * Needed to determine heaviest tasks etc.
3588  */
3589 static inline unsigned int hmp_cpu_is_fastest(int cpu);
3590 static inline unsigned int hmp_cpu_is_slowest(int cpu);
3591 static inline struct hmp_domain *hmp_slower_domain(int cpu);
3592 static inline struct hmp_domain *hmp_faster_domain(int cpu);
3593
3594 /* must hold runqueue lock for queue se is currently on */
3595 static struct sched_entity *hmp_get_heaviest_task(
3596                                 struct sched_entity *se, int migrate_up)
3597 {
3598         int num_tasks = hmp_max_tasks;
3599         struct sched_entity *max_se = se;
3600         unsigned long int max_ratio = se->avg.load_avg_ratio;
3601         const struct cpumask *hmp_target_mask = NULL;
3602
3603         if (migrate_up) {
3604                 struct hmp_domain *hmp;
3605                 if (hmp_cpu_is_fastest(cpu_of(se->cfs_rq->rq)))
3606                         return max_se;
3607
3608                 hmp = hmp_faster_domain(cpu_of(se->cfs_rq->rq));
3609                 hmp_target_mask = &hmp->cpus;
3610         }
3611         /* The currently running task is not on the runqueue */
3612         se = __pick_first_entity(cfs_rq_of(se));
3613
3614         while (num_tasks && se) {
3615                 if (entity_is_task(se) &&
3616                         (se->avg.load_avg_ratio > max_ratio &&
3617                          hmp_target_mask &&
3618                          cpumask_intersects(hmp_target_mask,
3619                                 tsk_cpus_allowed(task_of(se))))) {
3620                         max_se = se;
3621                         max_ratio = se->avg.load_avg_ratio;
3622                 }
3623                 se = __pick_next_entity(se);
3624                 num_tasks--;
3625         }
3626         return max_se;
3627 }
3628
3629 static struct sched_entity *hmp_get_lightest_task(
3630                                 struct sched_entity *se, int migrate_down)
3631 {
3632         int num_tasks = hmp_max_tasks;
3633         struct sched_entity *min_se = se;
3634         unsigned long int min_ratio = se->avg.load_avg_ratio;
3635         const struct cpumask *hmp_target_mask = NULL;
3636
3637         if (migrate_down) {
3638                 struct hmp_domain *hmp;
3639                 if (hmp_cpu_is_slowest(cpu_of(se->cfs_rq->rq)))
3640                         return min_se;
3641                 hmp = hmp_slower_domain(cpu_of(se->cfs_rq->rq));
3642                 hmp_target_mask = &hmp->cpus;
3643         }
3644         /* The currently running task is not on the runqueue */
3645         se = __pick_first_entity(cfs_rq_of(se));
3646
3647         while (num_tasks && se) {
3648                 if (entity_is_task(se) &&
3649                         (se->avg.load_avg_ratio < min_ratio &&
3650                         hmp_target_mask &&
3651                                 cpumask_intersects(hmp_target_mask,
3652                                 tsk_cpus_allowed(task_of(se))))) {
3653                         min_se = se;
3654                         min_ratio = se->avg.load_avg_ratio;
3655                 }
3656                 se = __pick_next_entity(se);
3657                 num_tasks--;
3658         }
3659         return min_se;
3660 }
3661
3662 /*
3663  * Migration thresholds should be in the range [0..1023]
3664  * hmp_up_threshold: min. load required for migrating tasks to a faster cpu
3665  * hmp_down_threshold: max. load allowed for tasks migrating to a slower cpu
3666  * The default values (512, 256) offer good responsiveness, but may need
3667  * tweaking suit particular needs.
3668  *
3669  * hmp_up_prio: Only up migrate task with high priority (<hmp_up_prio)
3670  * hmp_next_up_threshold: Delay before next up migration (1024 ~= 1 ms)
3671  * hmp_next_down_threshold: Delay before next down migration (1024 ~= 1 ms)
3672  */
3673 unsigned int hmp_up_threshold = 512;
3674 unsigned int hmp_down_threshold = 256;
3675 #ifdef CONFIG_SCHED_HMP_PRIO_FILTER
3676 unsigned int hmp_up_prio = NICE_TO_PRIO(CONFIG_SCHED_HMP_PRIO_FILTER_VAL);
3677 #endif
3678 unsigned int hmp_next_up_threshold = 4096;
3679 unsigned int hmp_next_down_threshold = 4096;
3680
3681 static unsigned int hmp_up_migration(int cpu, int *target_cpu, struct sched_entity *se);
3682 static unsigned int hmp_down_migration(int cpu, struct sched_entity *se);
3683 static inline unsigned int hmp_domain_min_load(struct hmp_domain *hmpd,
3684                                                 int *min_cpu);
3685
3686 /* Check if cpu is in fastest hmp_domain */
3687 static inline unsigned int hmp_cpu_is_fastest(int cpu)
3688 {
3689         struct list_head *pos;
3690
3691         pos = &hmp_cpu_domain(cpu)->hmp_domains;
3692         return pos == hmp_domains.next;
3693 }
3694
3695 /* Check if cpu is in slowest hmp_domain */
3696 static inline unsigned int hmp_cpu_is_slowest(int cpu)
3697 {
3698         struct list_head *pos;
3699
3700         pos = &hmp_cpu_domain(cpu)->hmp_domains;
3701         return list_is_last(pos, &hmp_domains);
3702 }
3703
3704 /* Next (slower) hmp_domain relative to cpu */
3705 static inline struct hmp_domain *hmp_slower_domain(int cpu)
3706 {
3707         struct list_head *pos;
3708
3709         pos = &hmp_cpu_domain(cpu)->hmp_domains;
3710         return list_entry(pos->next, struct hmp_domain, hmp_domains);
3711 }
3712
3713 /* Previous (faster) hmp_domain relative to cpu */
3714 static inline struct hmp_domain *hmp_faster_domain(int cpu)
3715 {
3716         struct list_head *pos;
3717
3718         pos = &hmp_cpu_domain(cpu)->hmp_domains;
3719         return list_entry(pos->prev, struct hmp_domain, hmp_domains);
3720 }
3721
3722 /*
3723  * Selects a cpu in previous (faster) hmp_domain
3724  * Note that cpumask_any_and() returns the first cpu in the cpumask
3725  */
3726 static inline unsigned int hmp_select_faster_cpu(struct task_struct *tsk,
3727                                                         int cpu)
3728 {
3729         int lowest_cpu=NR_CPUS;
3730         __always_unused int lowest_ratio = hmp_domain_min_load(hmp_faster_domain(cpu), &lowest_cpu);
3731         /*
3732          * If the lowest-loaded CPU in the domain is allowed by the task affinity
3733          * select that one, otherwise select one which is allowed
3734          */
3735         if(lowest_cpu != NR_CPUS && cpumask_test_cpu(lowest_cpu,tsk_cpus_allowed(tsk)))
3736                 return lowest_cpu;
3737         else
3738                 return cpumask_any_and(&hmp_faster_domain(cpu)->cpus,
3739                                 tsk_cpus_allowed(tsk));
3740 }
3741
3742 /*
3743  * Selects a cpu in next (slower) hmp_domain
3744  * Note that cpumask_any_and() returns the first cpu in the cpumask
3745  */
3746 static inline unsigned int hmp_select_slower_cpu(struct task_struct *tsk,
3747                                                         int cpu)
3748 {
3749         int lowest_cpu=NR_CPUS;
3750         struct hmp_domain *hmp;
3751         __always_unused int lowest_ratio;
3752
3753         if (hmp_cpu_is_slowest(cpu))
3754                 hmp = hmp_cpu_domain(cpu);
3755         else
3756                 hmp = hmp_slower_domain(cpu);
3757
3758         lowest_ratio = hmp_domain_min_load(hmp, &lowest_cpu);
3759         /*
3760          * If the lowest-loaded CPU in the domain is allowed by the task affinity
3761          * select that one, otherwise select one which is allowed
3762          */
3763         if(lowest_cpu != NR_CPUS && cpumask_test_cpu(lowest_cpu,tsk_cpus_allowed(tsk)))
3764                 return lowest_cpu;
3765         else
3766                 return cpumask_any_and(&hmp_slower_domain(cpu)->cpus,
3767                                 tsk_cpus_allowed(tsk));
3768 }
3769
3770 static inline void hmp_next_up_delay(struct sched_entity *se, int cpu)
3771 {
3772         /* hack - always use clock from first online CPU */
3773         u64 now = cpu_rq(cpumask_first(cpu_online_mask))->clock_task;
3774         se->avg.hmp_last_up_migration = now;
3775         se->avg.hmp_last_down_migration = 0;
3776         cpu_rq(cpu)->avg.hmp_last_up_migration = now;
3777         cpu_rq(cpu)->avg.hmp_last_down_migration = 0;
3778 }
3779
3780 static inline void hmp_next_down_delay(struct sched_entity *se, int cpu)
3781 {
3782         /* hack - always use clock from first online CPU */
3783         u64 now = cpu_rq(cpumask_first(cpu_online_mask))->clock_task;
3784         se->avg.hmp_last_down_migration = now;
3785         se->avg.hmp_last_up_migration = 0;
3786         cpu_rq(cpu)->avg.hmp_last_down_migration = now;
3787         cpu_rq(cpu)->avg.hmp_last_up_migration = 0;
3788 }
3789
3790 #ifdef CONFIG_HMP_VARIABLE_SCALE
3791 /*
3792  * Heterogenous multiprocessor (HMP) optimizations
3793  *
3794  * These functions allow to change the growing speed of the load_avg_ratio
3795  * by default it goes from 0 to 0.5 in LOAD_AVG_PERIOD = 32ms
3796  * This can now be changed with /sys/kernel/hmp/load_avg_period_ms.
3797  *
3798  * These functions also allow to change the up and down threshold of HMP
3799  * using /sys/kernel/hmp/{up,down}_threshold.
3800  * Both must be between 0 and 1023. The threshold that is compared
3801  * to the load_avg_ratio is up_threshold/1024 and down_threshold/1024.
3802  *
3803  * For instance, if load_avg_period = 64 and up_threshold = 512, an idle
3804  * task with a load of 0 will reach the threshold after 64ms of busy loop.
3805  *
3806  * Changing load_avg_periods_ms has the same effect than changing the
3807  * default scaling factor Y=1002/1024 in the load_avg_ratio computation to
3808  * (1002/1024.0)^(LOAD_AVG_PERIOD/load_avg_period_ms), but the last one
3809  * could trigger overflows.
3810  * For instance, with Y = 1023/1024 in __update_task_entity_contrib()
3811  * "contrib = se->avg.runnable_avg_sum * scale_load_down(se->load.weight);"
3812  * could be overflowed for a weight > 2^12 even is the load_avg_contrib
3813  * should still be a 32bits result. This would not happen by multiplicating
3814  * delta time by 1/22 and setting load_avg_period_ms = 706.
3815  */
3816
3817 /*
3818  * By scaling the delta time it end-up increasing or decrease the
3819  * growing speed of the per entity load_avg_ratio
3820  * The scale factor hmp_data.multiplier is a fixed point
3821  * number: (32-HMP_VARIABLE_SCALE_SHIFT).HMP_VARIABLE_SCALE_SHIFT
3822  */
3823 static u64 hmp_variable_scale_convert(u64 delta)
3824 {
3825         u64 high = delta >> 32ULL;
3826         u64 low = delta & 0xffffffffULL;
3827         low *= hmp_data.multiplier;
3828         high *= hmp_data.multiplier;
3829         return (low >> HMP_VARIABLE_SCALE_SHIFT)
3830                         + (high << (32ULL - HMP_VARIABLE_SCALE_SHIFT));
3831 }
3832
3833 static ssize_t hmp_show(struct kobject *kobj,
3834                                 struct attribute *attr, char *buf)
3835 {
3836         ssize_t ret = 0;
3837         struct hmp_global_attr *hmp_attr =
3838                 container_of(attr, struct hmp_global_attr, attr);
3839         int temp = *(hmp_attr->value);
3840         if (hmp_attr->to_sysfs != NULL)
3841                 temp = hmp_attr->to_sysfs(temp);
3842         ret = sprintf(buf, "%d\n", temp);
3843         return ret;
3844 }
3845
3846 static ssize_t hmp_store(struct kobject *a, struct attribute *attr,
3847                                 const char *buf, size_t count)
3848 {
3849         int temp;
3850         ssize_t ret = count;
3851         struct hmp_global_attr *hmp_attr =
3852                 container_of(attr, struct hmp_global_attr, attr);
3853         char *str = vmalloc(count + 1);
3854         if (str == NULL)
3855                 return -ENOMEM;
3856         memcpy(str, buf, count);
3857         str[count] = 0;
3858         if (sscanf(str, "%d", &temp) < 1)
3859                 ret = -EINVAL;
3860         else {
3861                 if (hmp_attr->from_sysfs != NULL)
3862                         temp = hmp_attr->from_sysfs(temp);
3863                 if (temp < 0)
3864                         ret = -EINVAL;
3865                 else
3866                         *(hmp_attr->value) = temp;
3867         }
3868         vfree(str);
3869         return ret;
3870 }
3871
3872 static int hmp_period_tofrom_sysfs(int value)
3873 {
3874         return (LOAD_AVG_PERIOD << HMP_VARIABLE_SCALE_SHIFT) / value;
3875 }
3876
3877 /* max value for threshold is 1024 */
3878 static int hmp_theshold_from_sysfs(int value)
3879 {
3880         if (value > 1024)
3881                 return -1;
3882         return value;
3883 }
3884 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
3885 /* freqinvar control is only 0,1 off/on */
3886 static int hmp_freqinvar_from_sysfs(int value)
3887 {
3888         if (value < 0 || value > 1)
3889                 return -1;
3890         return value;
3891 }
3892 #endif
3893 static void hmp_attr_add(
3894         const char *name,
3895         int *value,
3896         int (*to_sysfs)(int),
3897         int (*from_sysfs)(int))
3898 {
3899         int i = 0;
3900         while (hmp_data.attributes[i] != NULL) {
3901                 i++;
3902                 if (i >= HMP_DATA_SYSFS_MAX)
3903                         return;
3904         }
3905         hmp_data.attr[i].attr.mode = 0644;
3906         hmp_data.attr[i].show = hmp_show;
3907         hmp_data.attr[i].store = hmp_store;
3908         hmp_data.attr[i].attr.name = name;
3909         hmp_data.attr[i].value = value;
3910         hmp_data.attr[i].to_sysfs = to_sysfs;
3911         hmp_data.attr[i].from_sysfs = from_sysfs;
3912         hmp_data.attributes[i] = &hmp_data.attr[i].attr;
3913         hmp_data.attributes[i + 1] = NULL;
3914 }
3915
3916 static int hmp_attr_init(void)
3917 {
3918         int ret;
3919         memset(&hmp_data, sizeof(hmp_data), 0);
3920         /* by default load_avg_period_ms == LOAD_AVG_PERIOD
3921          * meaning no change
3922          */
3923         hmp_data.multiplier = hmp_period_tofrom_sysfs(LOAD_AVG_PERIOD);
3924
3925         hmp_attr_add("load_avg_period_ms",
3926                 &hmp_data.multiplier,
3927                 hmp_period_tofrom_sysfs,
3928                 hmp_period_tofrom_sysfs);
3929         hmp_attr_add("up_threshold",
3930                 &hmp_up_threshold,
3931                 NULL,
3932                 hmp_theshold_from_sysfs);
3933         hmp_attr_add("down_threshold",
3934                 &hmp_down_threshold,
3935                 NULL,
3936                 hmp_theshold_from_sysfs);
3937 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
3938         /* default frequency-invariant scaling ON */
3939         hmp_data.freqinvar_load_scale_enabled = 1;
3940         hmp_attr_add("frequency_invariant_load_scale",
3941                 &hmp_data.freqinvar_load_scale_enabled,
3942                 NULL,
3943                 hmp_freqinvar_from_sysfs);
3944 #endif
3945         hmp_data.attr_group.name = "hmp";
3946         hmp_data.attr_group.attrs = hmp_data.attributes;
3947         ret = sysfs_create_group(kernel_kobj,
3948                 &hmp_data.attr_group);
3949         return 0;
3950 }
3951 late_initcall(hmp_attr_init);
3952 #endif /* CONFIG_HMP_VARIABLE_SCALE */
3953
3954 static inline unsigned int hmp_domain_min_load(struct hmp_domain *hmpd,
3955                                                 int *min_cpu)
3956 {
3957         int cpu;
3958         int min_cpu_runnable_temp = NR_CPUS;
3959         u64 min_target_last_migration = ULLONG_MAX;
3960         u64 curr_last_migration;
3961         unsigned long min_runnable_load = INT_MAX;
3962         unsigned long contrib;
3963         struct sched_avg *avg;
3964
3965         for_each_cpu_mask(cpu, hmpd->cpus) {
3966                 avg = &cpu_rq(cpu)->avg;
3967                 /* used for both up and down migration */
3968                 curr_last_migration = avg->hmp_last_up_migration ?
3969                         avg->hmp_last_up_migration : avg->hmp_last_down_migration;
3970
3971                 contrib = avg->load_avg_ratio;
3972                 /*
3973                  * Consider a runqueue completely busy if there is any load
3974                  * on it. Definitely not the best for overall fairness, but
3975                  * does well in typical Android use cases.
3976                  */
3977                 if (contrib)
3978                         contrib = 1023;
3979
3980                 if ((contrib < min_runnable_load) ||
3981                         (contrib == min_runnable_load &&
3982                          curr_last_migration < min_target_last_migration)) {
3983                         /*
3984                          * if the load is the same target the CPU with
3985                          * the longest time since a migration.
3986                          * This is to spread migration load between
3987                          * members of a domain more evenly when the
3988                          * domain is fully loaded
3989                          */
3990                         min_runnable_load = contrib;
3991                         min_cpu_runnable_temp = cpu;
3992                         min_target_last_migration = curr_last_migration;
3993                 }
3994         }
3995
3996         if (min_cpu)
3997                 *min_cpu = min_cpu_runnable_temp;
3998
3999         return min_runnable_load;
4000 }
4001
4002 /*
4003  * Calculate the task starvation
4004  * This is the ratio of actually running time vs. runnable time.
4005  * If the two are equal the task is getting the cpu time it needs or
4006  * it is alone on the cpu and the cpu is fully utilized.
4007  */
4008 static inline unsigned int hmp_task_starvation(struct sched_entity *se)
4009 {
4010         u32 starvation;
4011
4012         starvation = se->avg.usage_avg_sum * scale_load_down(NICE_0_LOAD);
4013         starvation /= (se->avg.runnable_avg_sum + 1);
4014
4015         return scale_load(starvation);
4016 }
4017
4018 static inline unsigned int hmp_offload_down(int cpu, struct sched_entity *se)
4019 {
4020         int min_usage;
4021         int dest_cpu = NR_CPUS;
4022
4023         if (hmp_cpu_is_slowest(cpu))
4024                 return NR_CPUS;
4025
4026         /* Is there an idle CPU in the current domain */
4027         min_usage = hmp_domain_min_load(hmp_cpu_domain(cpu), NULL);
4028         if (min_usage == 0)
4029                 return NR_CPUS;
4030
4031         /* Is the task alone on the cpu? */
4032         if (cpu_rq(cpu)->cfs.h_nr_running < 2)
4033                 return NR_CPUS;
4034
4035         /* Is the task actually starving? */
4036         /* >=25% ratio running/runnable = starving */
4037         if (hmp_task_starvation(se) > 768)
4038                 return NR_CPUS;
4039
4040         /* Does the slower domain have any idle CPUs? */
4041         min_usage = hmp_domain_min_load(hmp_slower_domain(cpu), &dest_cpu);
4042         if (min_usage > 0)
4043                 return NR_CPUS;
4044
4045         if (cpumask_test_cpu(dest_cpu, &hmp_slower_domain(cpu)->cpus))
4046                 return dest_cpu;
4047
4048         return NR_CPUS;
4049 }
4050 #endif /* CONFIG_SCHED_HMP */
4051
4052 /*
4053  * sched_balance_self: balance the current task (running on cpu) in domains
4054  * that have the 'flag' flag set. In practice, this is SD_BALANCE_FORK and
4055  * SD_BALANCE_EXEC.
4056  *
4057  * Balance, ie. select the least loaded group.
4058  *
4059  * Returns the target CPU number, or the same CPU if no balancing is needed.
4060  *
4061  * preempt must be disabled.
4062  */
4063 static int
4064 select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flags)
4065 {
4066         struct sched_domain *tmp, *affine_sd = NULL, *sd = NULL;
4067         int cpu = smp_processor_id();
4068         int prev_cpu = task_cpu(p);
4069         int new_cpu = cpu;
4070         int want_affine = 0;
4071         int sync = wake_flags & WF_SYNC;
4072
4073         if (p->nr_cpus_allowed == 1)
4074                 return prev_cpu;
4075
4076 #ifdef CONFIG_SCHED_HMP
4077         /* always put non-kernel forking tasks on a big domain */
4078         if (p->mm && (sd_flag & SD_BALANCE_FORK)) {
4079                 if(hmp_cpu_is_fastest(prev_cpu)) {
4080                         struct hmp_domain *hmpdom = list_entry(&hmp_cpu_domain(prev_cpu)->hmp_domains, struct hmp_domain, hmp_domains);
4081                         __always_unused int lowest_ratio = hmp_domain_min_load(hmpdom, &new_cpu);
4082                         if(new_cpu != NR_CPUS && cpumask_test_cpu(new_cpu,tsk_cpus_allowed(p)))
4083                                 return new_cpu;
4084                         else {
4085                                 new_cpu = cpumask_any_and(&hmp_faster_domain(cpu)->cpus,
4086                                                 tsk_cpus_allowed(p));
4087                                 if(new_cpu < nr_cpu_ids)
4088                                         return new_cpu;
4089                         }
4090                 } else {
4091                         new_cpu = hmp_select_faster_cpu(p, prev_cpu);
4092                         if (new_cpu != NR_CPUS)
4093                                 return new_cpu;
4094                 }
4095         }
4096 #endif
4097
4098         if (sd_flag & SD_BALANCE_WAKE) {
4099                 if (cpumask_test_cpu(cpu, tsk_cpus_allowed(p)))
4100                         want_affine = 1;
4101                 new_cpu = prev_cpu;
4102         }
4103
4104         rcu_read_lock();
4105         for_each_domain(cpu, tmp) {
4106                 if (!(tmp->flags & SD_LOAD_BALANCE))
4107                         continue;
4108
4109                 /*
4110                  * If both cpu and prev_cpu are part of this domain,
4111                  * cpu is a valid SD_WAKE_AFFINE target.
4112                  */
4113                 if (want_affine && (tmp->flags & SD_WAKE_AFFINE) &&
4114                     cpumask_test_cpu(prev_cpu, sched_domain_span(tmp))) {
4115                         affine_sd = tmp;
4116                         break;
4117                 }
4118
4119                 if (tmp->flags & sd_flag)
4120                         sd = tmp;
4121         }
4122
4123         if (affine_sd) {
4124                 if (cpu != prev_cpu && wake_affine(affine_sd, p, sync))
4125                         prev_cpu = cpu;
4126
4127                 new_cpu = select_idle_sibling(p, prev_cpu);
4128                 goto unlock;
4129         }
4130
4131         while (sd) {
4132                 int load_idx = sd->forkexec_idx;
4133                 struct sched_group *group;
4134                 int weight;
4135
4136                 if (!(sd->flags & sd_flag)) {
4137                         sd = sd->child;
4138                         continue;
4139                 }
4140
4141                 if (sd_flag & SD_BALANCE_WAKE)
4142                         load_idx = sd->wake_idx;
4143
4144                 group = find_idlest_group(sd, p, cpu, load_idx);
4145                 if (!group) {
4146                         sd = sd->child;
4147                         continue;
4148                 }
4149
4150                 new_cpu = find_idlest_cpu(group, p, cpu);
4151                 if (new_cpu == -1 || new_cpu == cpu) {
4152                         /* Now try balancing at a lower domain level of cpu */
4153                         sd = sd->child;
4154                         continue;
4155                 }
4156
4157                 /* Now try balancing at a lower domain level of new_cpu */
4158                 cpu = new_cpu;
4159                 weight = sd->span_weight;
4160                 sd = NULL;
4161                 for_each_domain(cpu, tmp) {
4162                         if (weight <= tmp->span_weight)
4163                                 break;
4164                         if (tmp->flags & sd_flag)
4165                                 sd = tmp;
4166                 }
4167                 /* while loop will break here if sd == NULL */
4168         }
4169 unlock:
4170         rcu_read_unlock();
4171
4172 #ifdef CONFIG_SCHED_HMP
4173         if (hmp_up_migration(prev_cpu, &new_cpu, &p->se)) {
4174                 hmp_next_up_delay(&p->se, new_cpu);
4175                 trace_sched_hmp_migrate(p, new_cpu, 0);
4176                 return new_cpu;
4177         }
4178         if (hmp_down_migration(prev_cpu, &p->se)) {
4179                 new_cpu = hmp_select_slower_cpu(p, prev_cpu);
4180                 hmp_next_down_delay(&p->se, new_cpu);
4181                 trace_sched_hmp_migrate(p, new_cpu, 0);
4182                 return new_cpu;
4183         }
4184         /* Make sure that the task stays in its previous hmp domain */
4185         if (!cpumask_test_cpu(new_cpu, &hmp_cpu_domain(prev_cpu)->cpus))
4186                 return prev_cpu;
4187 #endif
4188
4189         return new_cpu;
4190 }
4191
4192 /*
4193  * Load-tracking only depends on SMP, FAIR_GROUP_SCHED dependency below may be
4194  * removed when useful for applications beyond shares distribution (e.g.
4195  * load-balance).
4196  */
4197 #ifdef CONFIG_FAIR_GROUP_SCHED
4198 /*
4199  * Called immediately before a task is migrated to a new cpu; task_cpu(p) and
4200  * cfs_rq_of(p) references at time of call are still valid and identify the
4201  * previous cpu.  However, the caller only guarantees p->pi_lock is held; no
4202  * other assumptions, including the state of rq->lock, should be made.
4203  */
4204 static void
4205 migrate_task_rq_fair(struct task_struct *p, int next_cpu)
4206 {
4207         struct sched_entity *se = &p->se;
4208         struct cfs_rq *cfs_rq = cfs_rq_of(se);
4209
4210         /*
4211          * Load tracking: accumulate removed load so that it can be processed
4212          * when we next update owning cfs_rq under rq->lock.  Tasks contribute
4213          * to blocked load iff they have a positive decay-count.  It can never
4214          * be negative here since on-rq tasks have decay-count == 0.
4215          */
4216         if (se->avg.decay_count) {
4217                 se->avg.decay_count = -__synchronize_entity_decay(se);
4218                 atomic64_add(se->avg.load_avg_contrib, &cfs_rq->removed_load);
4219         }
4220 }
4221 #endif
4222 #endif /* CONFIG_SMP */
4223
4224 static unsigned long
4225 wakeup_gran(struct sched_entity *curr, struct sched_entity *se)
4226 {
4227         unsigned long gran = sysctl_sched_wakeup_granularity;
4228
4229         /*
4230          * Since its curr running now, convert the gran from real-time
4231          * to virtual-time in his units.
4232          *
4233          * By using 'se' instead of 'curr' we penalize light tasks, so
4234          * they get preempted easier. That is, if 'se' < 'curr' then
4235          * the resulting gran will be larger, therefore penalizing the
4236          * lighter, if otoh 'se' > 'curr' then the resulting gran will
4237          * be smaller, again penalizing the lighter task.
4238          *
4239          * This is especially important for buddies when the leftmost
4240          * task is higher priority than the buddy.
4241          */
4242         return calc_delta_fair(gran, se);
4243 }
4244
4245 /*
4246  * Should 'se' preempt 'curr'.
4247  *
4248  *             |s1
4249  *        |s2
4250  *   |s3
4251  *         g
4252  *      |<--->|c
4253  *
4254  *  w(c, s1) = -1
4255  *  w(c, s2) =  0
4256  *  w(c, s3) =  1
4257  *
4258  */
4259 static int
4260 wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se)
4261 {
4262         s64 gran, vdiff = curr->vruntime - se->vruntime;
4263
4264         if (vdiff <= 0)
4265                 return -1;
4266
4267         gran = wakeup_gran(curr, se);
4268         if (vdiff > gran)
4269                 return 1;
4270
4271         return 0;
4272 }
4273
4274 static void set_last_buddy(struct sched_entity *se)
4275 {
4276         if (entity_is_task(se) && unlikely(task_of(se)->policy == SCHED_IDLE))
4277                 return;
4278
4279         for_each_sched_entity(se)
4280                 cfs_rq_of(se)->last = se;
4281 }
4282
4283 static void set_next_buddy(struct sched_entity *se)
4284 {
4285         if (entity_is_task(se) && unlikely(task_of(se)->policy == SCHED_IDLE))
4286                 return;
4287
4288         for_each_sched_entity(se)
4289                 cfs_rq_of(se)->next = se;
4290 }
4291
4292 static void set_skip_buddy(struct sched_entity *se)
4293 {
4294         for_each_sched_entity(se)
4295                 cfs_rq_of(se)->skip = se;
4296 }
4297
4298 /*
4299  * Preempt the current task with a newly woken task if needed:
4300  */
4301 static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_flags)
4302 {
4303         struct task_struct *curr = rq->curr;
4304         struct sched_entity *se = &curr->se, *pse = &p->se;
4305         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
4306         int scale = cfs_rq->nr_running >= sched_nr_latency;
4307         int next_buddy_marked = 0;
4308
4309         if (unlikely(se == pse))
4310                 return;
4311
4312         /*
4313          * This is possible from callers such as move_task(), in which we
4314          * unconditionally check_prempt_curr() after an enqueue (which may have
4315          * lead to a throttle).  This both saves work and prevents false
4316          * next-buddy nomination below.
4317          */
4318         if (unlikely(throttled_hierarchy(cfs_rq_of(pse))))
4319                 return;
4320
4321         if (sched_feat(NEXT_BUDDY) && scale && !(wake_flags & WF_FORK)) {
4322                 set_next_buddy(pse);
4323                 next_buddy_marked = 1;
4324         }
4325
4326         /*
4327          * We can come here with TIF_NEED_RESCHED already set from new task
4328          * wake up path.
4329          *
4330          * Note: this also catches the edge-case of curr being in a throttled
4331          * group (e.g. via set_curr_task), since update_curr() (in the
4332          * enqueue of curr) will have resulted in resched being set.  This
4333          * prevents us from potentially nominating it as a false LAST_BUDDY
4334          * below.
4335          */
4336         if (test_tsk_need_resched(curr))
4337                 return;
4338
4339         /* Idle tasks are by definition preempted by non-idle tasks. */
4340         if (unlikely(curr->policy == SCHED_IDLE) &&
4341             likely(p->policy != SCHED_IDLE))
4342                 goto preempt;
4343
4344         /*
4345          * Batch and idle tasks do not preempt non-idle tasks (their preemption
4346          * is driven by the tick):
4347          */
4348         if (unlikely(p->policy != SCHED_NORMAL) || !sched_feat(WAKEUP_PREEMPTION))
4349                 return;
4350
4351         find_matching_se(&se, &pse);
4352         update_curr(cfs_rq_of(se));
4353         BUG_ON(!pse);
4354         if (wakeup_preempt_entity(se, pse) == 1) {
4355                 /*
4356                  * Bias pick_next to pick the sched entity that is
4357                  * triggering this preemption.
4358                  */
4359                 if (!next_buddy_marked)
4360                         set_next_buddy(pse);
4361                 goto preempt;
4362         }
4363
4364         return;
4365
4366 preempt:
4367         resched_task(curr);
4368         /*
4369          * Only set the backward buddy when the current task is still
4370          * on the rq. This can happen when a wakeup gets interleaved
4371          * with schedule on the ->pre_schedule() or idle_balance()
4372          * point, either of which can * drop the rq lock.
4373          *
4374          * Also, during early boot the idle thread is in the fair class,
4375          * for obvious reasons its a bad idea to schedule back to it.
4376          */
4377         if (unlikely(!se->on_rq || curr == rq->idle))
4378                 return;
4379
4380         if (sched_feat(LAST_BUDDY) && scale && entity_is_task(se))
4381                 set_last_buddy(se);
4382 }
4383
4384 static struct task_struct *pick_next_task_fair(struct rq *rq)
4385 {
4386         struct task_struct *p;
4387         struct cfs_rq *cfs_rq = &rq->cfs;
4388         struct sched_entity *se;
4389
4390         if (!cfs_rq->nr_running)
4391                 return NULL;
4392
4393         do {
4394                 se = pick_next_entity(cfs_rq);
4395                 set_next_entity(cfs_rq, se);
4396                 cfs_rq = group_cfs_rq(se);
4397         } while (cfs_rq);
4398
4399         p = task_of(se);
4400         if (hrtick_enabled(rq))
4401                 hrtick_start_fair(rq, p);
4402
4403         return p;
4404 }
4405
4406 /*
4407  * Account for a descheduled task:
4408  */
4409 static void put_prev_task_fair(struct rq *rq, struct task_struct *prev)
4410 {
4411         struct sched_entity *se = &prev->se;
4412         struct cfs_rq *cfs_rq;
4413
4414         for_each_sched_entity(se) {
4415                 cfs_rq = cfs_rq_of(se);
4416                 put_prev_entity(cfs_rq, se);
4417         }
4418 }
4419
4420 /*
4421  * sched_yield() is very simple
4422  *
4423  * The magic of dealing with the ->skip buddy is in pick_next_entity.
4424  */
4425 static void yield_task_fair(struct rq *rq)
4426 {
4427         struct task_struct *curr = rq->curr;
4428         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
4429         struct sched_entity *se = &curr->se;
4430
4431         /*
4432          * Are we the only task in the tree?
4433          */
4434         if (unlikely(rq->nr_running == 1))
4435                 return;
4436
4437         clear_buddies(cfs_rq, se);
4438
4439         if (curr->policy != SCHED_BATCH) {
4440                 update_rq_clock(rq);
4441                 /*
4442                  * Update run-time statistics of the 'current'.
4443                  */
4444                 update_curr(cfs_rq);
4445                 /*
4446                  * Tell update_rq_clock() that we've just updated,
4447                  * so we don't do microscopic update in schedule()
4448                  * and double the fastpath cost.
4449                  */
4450                  rq->skip_clock_update = 1;
4451         }
4452
4453         set_skip_buddy(se);
4454 }
4455
4456 static bool yield_to_task_fair(struct rq *rq, struct task_struct *p, bool preempt)
4457 {
4458         struct sched_entity *se = &p->se;
4459
4460         /* throttled hierarchies are not runnable */
4461         if (!se->on_rq || throttled_hierarchy(cfs_rq_of(se)))
4462                 return false;
4463
4464         /* Tell the scheduler that we'd really like pse to run next. */
4465         set_next_buddy(se);
4466
4467         yield_task_fair(rq);
4468
4469         return true;
4470 }
4471
4472 #ifdef CONFIG_SMP
4473 /**************************************************
4474  * Fair scheduling class load-balancing methods.
4475  *
4476  * BASICS
4477  *
4478  * The purpose of load-balancing is to achieve the same basic fairness the
4479  * per-cpu scheduler provides, namely provide a proportional amount of compute
4480  * time to each task. This is expressed in the following equation:
4481  *
4482  *   W_i,n/P_i == W_j,n/P_j for all i,j                               (1)
4483  *
4484  * Where W_i,n is the n-th weight average for cpu i. The instantaneous weight
4485  * W_i,0 is defined as:
4486  *
4487  *   W_i,0 = \Sum_j w_i,j                                             (2)
4488  *
4489  * Where w_i,j is the weight of the j-th runnable task on cpu i. This weight
4490  * is derived from the nice value as per prio_to_weight[].
4491  *
4492  * The weight average is an exponential decay average of the instantaneous
4493  * weight:
4494  *
4495  *   W'_i,n = (2^n - 1) / 2^n * W_i,n + 1 / 2^n * W_i,0               (3)
4496  *
4497  * P_i is the cpu power (or compute capacity) of cpu i, typically it is the
4498  * fraction of 'recent' time available for SCHED_OTHER task execution. But it
4499  * can also include other factors [XXX].
4500  *
4501  * To achieve this balance we define a measure of imbalance which follows
4502  * directly from (1):
4503  *
4504  *   imb_i,j = max{ avg(W/P), W_i/P_i } - min{ avg(W/P), W_j/P_j }    (4)
4505  *
4506  * We them move tasks around to minimize the imbalance. In the continuous
4507  * function space it is obvious this converges, in the discrete case we get
4508  * a few fun cases generally called infeasible weight scenarios.
4509  *
4510  * [XXX expand on:
4511  *     - infeasible weights;
4512  *     - local vs global optima in the discrete case. ]
4513  *
4514  *
4515  * SCHED DOMAINS
4516  *
4517  * In order to solve the imbalance equation (4), and avoid the obvious O(n^2)
4518  * for all i,j solution, we create a tree of cpus that follows the hardware
4519  * topology where each level pairs two lower groups (or better). This results
4520  * in O(log n) layers. Furthermore we reduce the number of cpus going up the
4521  * tree to only the first of the previous level and we decrease the frequency
4522  * of load-balance at each level inv. proportional to the number of cpus in
4523  * the groups.
4524  *
4525  * This yields:
4526  *
4527  *     log_2 n     1     n
4528  *   \Sum       { --- * --- * 2^i } = O(n)                            (5)
4529  *     i = 0      2^i   2^i
4530  *                               `- size of each group
4531  *         |         |     `- number of cpus doing load-balance
4532  *         |         `- freq
4533  *         `- sum over all levels
4534  *
4535  * Coupled with a limit on how many tasks we can migrate every balance pass,
4536  * this makes (5) the runtime complexity of the balancer.
4537  *
4538  * An important property here is that each CPU is still (indirectly) connected
4539  * to every other cpu in at most O(log n) steps:
4540  *
4541  * The adjacency matrix of the resulting graph is given by:
4542  *
4543  *             log_2 n     
4544  *   A_i,j = \Union     (i % 2^k == 0) && i / 2^(k+1) == j / 2^(k+1)  (6)
4545  *             k = 0
4546  *
4547  * And you'll find that:
4548  *
4549  *   A^(log_2 n)_i,j != 0  for all i,j                                (7)
4550  *
4551  * Showing there's indeed a path between every cpu in at most O(log n) steps.
4552  * The task movement gives a factor of O(m), giving a convergence complexity
4553  * of:
4554  *
4555  *   O(nm log n),  n := nr_cpus, m := nr_tasks                        (8)
4556  *
4557  *
4558  * WORK CONSERVING
4559  *
4560  * In order to avoid CPUs going idle while there's still work to do, new idle
4561  * balancing is more aggressive and has the newly idle cpu iterate up the domain
4562  * tree itself instead of relying on other CPUs to bring it work.
4563  *
4564  * This adds some complexity to both (5) and (8) but it reduces the total idle
4565  * time.
4566  *
4567  * [XXX more?]
4568  *
4569  *
4570  * CGROUPS
4571  *
4572  * Cgroups make a horror show out of (2), instead of a simple sum we get:
4573  *
4574  *                                s_k,i
4575  *   W_i,0 = \Sum_j \Prod_k w_k * -----                               (9)
4576  *                                 S_k
4577  *
4578  * Where
4579  *
4580  *   s_k,i = \Sum_j w_i,j,k  and  S_k = \Sum_i s_k,i                 (10)
4581  *
4582  * w_i,j,k is the weight of the j-th runnable task in the k-th cgroup on cpu i.
4583  *
4584  * The big problem is S_k, its a global sum needed to compute a local (W_i)
4585  * property.
4586  *
4587  * [XXX write more on how we solve this.. _after_ merging pjt's patches that
4588  *      rewrite all of this once again.]
4589  */ 
4590
4591 static unsigned long __read_mostly max_load_balance_interval = HZ/10;
4592
4593 #define LBF_ALL_PINNED  0x01
4594 #define LBF_NEED_BREAK  0x02
4595 #define LBF_SOME_PINNED 0x04
4596
4597 struct lb_env {
4598         struct sched_domain     *sd;
4599
4600         struct rq               *src_rq;
4601         int                     src_cpu;
4602
4603         int                     dst_cpu;
4604         struct rq               *dst_rq;
4605
4606         struct cpumask          *dst_grpmask;
4607         int                     new_dst_cpu;
4608         enum cpu_idle_type      idle;
4609         long                    imbalance;
4610         /* The set of CPUs under consideration for load-balancing */
4611         struct cpumask          *cpus;
4612
4613         unsigned int            flags;
4614
4615         unsigned int            loop;
4616         unsigned int            loop_break;
4617         unsigned int            loop_max;
4618 };
4619
4620 /*
4621  * move_task - move a task from one runqueue to another runqueue.
4622  * Both runqueues must be locked.
4623  */
4624 static void move_task(struct task_struct *p, struct lb_env *env)
4625 {
4626         deactivate_task(env->src_rq, p, 0);
4627         set_task_cpu(p, env->dst_cpu);
4628         activate_task(env->dst_rq, p, 0);
4629         check_preempt_curr(env->dst_rq, p, 0);
4630 }
4631
4632 /*
4633  * Is this task likely cache-hot:
4634  */
4635 static int
4636 task_hot(struct task_struct *p, u64 now, struct sched_domain *sd)
4637 {
4638         s64 delta;
4639
4640         if (p->sched_class != &fair_sched_class)
4641                 return 0;
4642
4643         if (unlikely(p->policy == SCHED_IDLE))
4644                 return 0;
4645
4646         /*
4647          * Buddy candidates are cache hot:
4648          */
4649         if (sched_feat(CACHE_HOT_BUDDY) && this_rq()->nr_running &&
4650                         (&p->se == cfs_rq_of(&p->se)->next ||
4651                          &p->se == cfs_rq_of(&p->se)->last))
4652                 return 1;
4653
4654         if (sysctl_sched_migration_cost == -1)
4655                 return 1;
4656         if (sysctl_sched_migration_cost == 0)
4657                 return 0;
4658
4659         delta = now - p->se.exec_start;
4660
4661         return delta < (s64)sysctl_sched_migration_cost;
4662 }
4663
4664 /*
4665  * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
4666  */
4667 static
4668 int can_migrate_task(struct task_struct *p, struct lb_env *env)
4669 {
4670         int tsk_cache_hot = 0;
4671         /*
4672          * We do not migrate tasks that are:
4673          * 1) throttled_lb_pair, or
4674          * 2) cannot be migrated to this CPU due to cpus_allowed, or
4675          * 3) running (obviously), or
4676          * 4) are cache-hot on their current CPU.
4677          */
4678         if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu))
4679                 return 0;
4680
4681         if (!cpumask_test_cpu(env->dst_cpu, tsk_cpus_allowed(p))) {
4682                 int cpu;
4683
4684                 schedstat_inc(p, se.statistics.nr_failed_migrations_affine);
4685
4686                 /*
4687                  * Remember if this task can be migrated to any other cpu in
4688                  * our sched_group. We may want to revisit it if we couldn't
4689                  * meet load balance goals by pulling other tasks on src_cpu.
4690                  *
4691                  * Also avoid computing new_dst_cpu if we have already computed
4692                  * one in current iteration.
4693                  */
4694                 if (!env->dst_grpmask || (env->flags & LBF_SOME_PINNED))
4695                         return 0;
4696
4697                 /* Prevent to re-select dst_cpu via env's cpus */
4698                 for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) {
4699                         if (cpumask_test_cpu(cpu, tsk_cpus_allowed(p))) {
4700                                 env->flags |= LBF_SOME_PINNED;
4701                                 env->new_dst_cpu = cpu;
4702                                 break;
4703                         }
4704                 }
4705
4706                 return 0;
4707         }
4708
4709         /* Record that we found atleast one task that could run on dst_cpu */
4710         env->flags &= ~LBF_ALL_PINNED;
4711
4712         if (task_running(env->src_rq, p)) {
4713                 schedstat_inc(p, se.statistics.nr_failed_migrations_running);
4714                 return 0;
4715         }
4716
4717         /*
4718          * Aggressive migration if:
4719          * 1) task is cache cold, or
4720          * 2) too many balance attempts have failed.
4721          */
4722         tsk_cache_hot = task_hot(p, env->src_rq->clock_task, env->sd);
4723         if (!tsk_cache_hot ||
4724                 env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
4725
4726                 if (tsk_cache_hot) {
4727                         schedstat_inc(env->sd, lb_hot_gained[env->idle]);
4728                         schedstat_inc(p, se.statistics.nr_forced_migrations);
4729                 }
4730
4731                 return 1;
4732         }
4733
4734         schedstat_inc(p, se.statistics.nr_failed_migrations_hot);
4735         return 0;
4736 }
4737
4738 /*
4739  * move_one_task tries to move exactly one task from busiest to this_rq, as
4740  * part of active balancing operations within "domain".
4741  * Returns 1 if successful and 0 otherwise.
4742  *
4743  * Called with both runqueues locked.
4744  */
4745 static int move_one_task(struct lb_env *env)
4746 {
4747         struct task_struct *p, *n;
4748
4749         list_for_each_entry_safe(p, n, &env->src_rq->cfs_tasks, se.group_node) {
4750                 if (!can_migrate_task(p, env))
4751                         continue;
4752
4753                 move_task(p, env);
4754                 /*
4755                  * Right now, this is only the second place move_task()
4756                  * is called, so we can safely collect move_task()
4757                  * stats here rather than inside move_task().
4758                  */
4759                 schedstat_inc(env->sd, lb_gained[env->idle]);
4760                 return 1;
4761         }
4762         return 0;
4763 }
4764
4765 static unsigned long task_h_load(struct task_struct *p);
4766
4767 static const unsigned int sched_nr_migrate_break = 32;
4768
4769 /*
4770  * move_tasks tries to move up to imbalance weighted load from busiest to
4771  * this_rq, as part of a balancing operation within domain "sd".
4772  * Returns 1 if successful and 0 otherwise.
4773  *
4774  * Called with both runqueues locked.
4775  */
4776 static int move_tasks(struct lb_env *env)
4777 {
4778         struct list_head *tasks = &env->src_rq->cfs_tasks;
4779         struct task_struct *p;
4780         unsigned long load;
4781         int pulled = 0;
4782
4783         if (env->imbalance <= 0)
4784                 return 0;
4785
4786         while (!list_empty(tasks)) {
4787                 p = list_first_entry(tasks, struct task_struct, se.group_node);
4788
4789                 env->loop++;
4790                 /* We've more or less seen every task there is, call it quits */
4791                 if (env->loop > env->loop_max)
4792                         break;
4793
4794                 /* take a breather every nr_migrate tasks */
4795                 if (env->loop > env->loop_break) {
4796                         env->loop_break += sched_nr_migrate_break;
4797                         env->flags |= LBF_NEED_BREAK;
4798                         break;
4799                 }
4800
4801                 if (!can_migrate_task(p, env))
4802                         goto next;
4803
4804                 load = task_h_load(p);
4805
4806                 if (sched_feat(LB_MIN) && load < 16 && !env->sd->nr_balance_failed)
4807                         goto next;
4808
4809                 if ((load / 2) > env->imbalance)
4810                         goto next;
4811
4812                 move_task(p, env);
4813                 pulled++;
4814                 env->imbalance -= load;
4815
4816 #ifdef CONFIG_PREEMPT
4817                 /*
4818                  * NEWIDLE balancing is a source of latency, so preemptible
4819                  * kernels will stop after the first task is pulled to minimize
4820                  * the critical section.
4821                  */
4822                 if (env->idle == CPU_NEWLY_IDLE)
4823                         break;
4824 #endif
4825
4826                 /*
4827                  * We only want to steal up to the prescribed amount of
4828                  * weighted load.
4829                  */
4830                 if (env->imbalance <= 0)
4831                         break;
4832
4833                 continue;
4834 next:
4835                 list_move_tail(&p->se.group_node, tasks);
4836         }
4837
4838         /*
4839          * Right now, this is one of only two places move_task() is called,
4840          * so we can safely collect move_task() stats here rather than
4841          * inside move_task().
4842          */
4843         schedstat_add(env->sd, lb_gained[env->idle], pulled);
4844
4845         return pulled;
4846 }
4847
4848 #ifdef CONFIG_FAIR_GROUP_SCHED
4849 /*
4850  * update tg->load_weight by folding this cpu's load_avg
4851  */
4852 static void __update_blocked_averages_cpu(struct task_group *tg, int cpu)
4853 {
4854         struct sched_entity *se = tg->se[cpu];
4855         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu];
4856
4857         /* throttled entities do not contribute to load */
4858         if (throttled_hierarchy(cfs_rq))
4859                 return;
4860
4861         update_cfs_rq_blocked_load(cfs_rq, 1);
4862
4863         if (se) {
4864                 update_entity_load_avg(se, 1);
4865                 /*
4866                  * We pivot on our runnable average having decayed to zero for
4867                  * list removal.  This generally implies that all our children
4868                  * have also been removed (modulo rounding error or bandwidth
4869                  * control); however, such cases are rare and we can fix these
4870                  * at enqueue.
4871                  *
4872                  * TODO: fix up out-of-order children on enqueue.
4873                  */
4874                 if (!se->avg.runnable_avg_sum && !cfs_rq->nr_running)
4875                         list_del_leaf_cfs_rq(cfs_rq);
4876         } else {
4877                 struct rq *rq = rq_of(cfs_rq);
4878                 update_rq_runnable_avg(rq, rq->nr_running);
4879         }
4880 }
4881
4882 static void update_blocked_averages(int cpu)
4883 {
4884         struct rq *rq = cpu_rq(cpu);
4885         struct cfs_rq *cfs_rq;
4886         unsigned long flags;
4887
4888         raw_spin_lock_irqsave(&rq->lock, flags);
4889         update_rq_clock(rq);
4890         /*
4891          * Iterates the task_group tree in a bottom up fashion, see
4892          * list_add_leaf_cfs_rq() for details.
4893          */
4894         for_each_leaf_cfs_rq(rq, cfs_rq) {
4895                 /*
4896                  * Note: We may want to consider periodically releasing
4897                  * rq->lock about these updates so that creating many task
4898                  * groups does not result in continually extending hold time.
4899                  */
4900                 __update_blocked_averages_cpu(cfs_rq->tg, rq->cpu);
4901         }
4902
4903         raw_spin_unlock_irqrestore(&rq->lock, flags);
4904 }
4905
4906 /*
4907  * Compute the cpu's hierarchical load factor for each task group.
4908  * This needs to be done in a top-down fashion because the load of a child
4909  * group is a fraction of its parents load.
4910  */
4911 static int tg_load_down(struct task_group *tg, void *data)
4912 {
4913         unsigned long load;
4914         long cpu = (long)data;
4915
4916         if (!tg->parent) {
4917                 load = cpu_rq(cpu)->load.weight;
4918         } else {
4919                 load = tg->parent->cfs_rq[cpu]->h_load;
4920                 load *= tg->se[cpu]->load.weight;
4921                 load /= tg->parent->cfs_rq[cpu]->load.weight + 1;
4922         }
4923
4924         tg->cfs_rq[cpu]->h_load = load;
4925
4926         return 0;
4927 }
4928
4929 static void update_h_load(long cpu)
4930 {
4931         struct rq *rq = cpu_rq(cpu);
4932         unsigned long now = jiffies;
4933
4934         if (rq->h_load_throttle == now)
4935                 return;
4936
4937         rq->h_load_throttle = now;
4938
4939         rcu_read_lock();
4940         walk_tg_tree(tg_load_down, tg_nop, (void *)cpu);
4941         rcu_read_unlock();
4942 }
4943
4944 static unsigned long task_h_load(struct task_struct *p)
4945 {
4946         struct cfs_rq *cfs_rq = task_cfs_rq(p);
4947         unsigned long load;
4948
4949         load = p->se.load.weight;
4950         load = div_u64(load * cfs_rq->h_load, cfs_rq->load.weight + 1);
4951
4952         return load;
4953 }
4954 #else
4955 static inline void update_blocked_averages(int cpu)
4956 {
4957 }
4958
4959 static inline void update_h_load(long cpu)
4960 {
4961 }
4962
4963 static unsigned long task_h_load(struct task_struct *p)
4964 {
4965         return p->se.load.weight;
4966 }
4967 #endif
4968
4969 /********** Helpers for find_busiest_group ************************/
4970 /*
4971  * sd_lb_stats - Structure to store the statistics of a sched_domain
4972  *              during load balancing.
4973  */
4974 struct sd_lb_stats {
4975         struct sched_group *busiest; /* Busiest group in this sd */
4976         struct sched_group *this;  /* Local group in this sd */
4977         unsigned long total_load;  /* Total load of all groups in sd */
4978         unsigned long total_pwr;   /*   Total power of all groups in sd */
4979         unsigned long avg_load;    /* Average load across all groups in sd */
4980
4981         /** Statistics of this group */
4982         unsigned long this_load;
4983         unsigned long this_load_per_task;
4984         unsigned long this_nr_running;
4985         unsigned long this_has_capacity;
4986         unsigned int  this_idle_cpus;
4987
4988         /* Statistics of the busiest group */
4989         unsigned int  busiest_idle_cpus;
4990         unsigned long max_load;
4991         unsigned long busiest_load_per_task;
4992         unsigned long busiest_nr_running;
4993         unsigned long busiest_group_capacity;
4994         unsigned long busiest_has_capacity;
4995         unsigned int  busiest_group_weight;
4996
4997         int group_imb; /* Is there imbalance in this sd */
4998 };
4999
5000 /*
5001  * sg_lb_stats - stats of a sched_group required for load_balancing
5002  */
5003 struct sg_lb_stats {
5004         unsigned long avg_load; /*Avg load across the CPUs of the group */
5005         unsigned long group_load; /* Total load over the CPUs of the group */
5006         unsigned long sum_nr_running; /* Nr tasks running in the group */
5007         unsigned long sum_weighted_load; /* Weighted load of group's tasks */
5008         unsigned long group_capacity;
5009         unsigned long idle_cpus;
5010         unsigned long group_weight;
5011         int group_imb; /* Is there an imbalance in the group ? */
5012         int group_has_capacity; /* Is there extra capacity in the group? */
5013 };
5014
5015 /**
5016  * get_sd_load_idx - Obtain the load index for a given sched domain.
5017  * @sd: The sched_domain whose load_idx is to be obtained.
5018  * @idle: The Idle status of the CPU for whose sd load_icx is obtained.
5019  */
5020 static inline int get_sd_load_idx(struct sched_domain *sd,
5021                                         enum cpu_idle_type idle)
5022 {
5023         int load_idx;
5024
5025         switch (idle) {
5026         case CPU_NOT_IDLE:
5027                 load_idx = sd->busy_idx;
5028                 break;
5029
5030         case CPU_NEWLY_IDLE:
5031                 load_idx = sd->newidle_idx;
5032                 break;
5033         default:
5034                 load_idx = sd->idle_idx;
5035                 break;
5036         }
5037
5038         return load_idx;
5039 }
5040
5041 static unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu)
5042 {
5043         return SCHED_POWER_SCALE;
5044 }
5045
5046 unsigned long __weak arch_scale_freq_power(struct sched_domain *sd, int cpu)
5047 {
5048         return default_scale_freq_power(sd, cpu);
5049 }
5050
5051 static unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu)
5052 {
5053         unsigned long weight = sd->span_weight;
5054         unsigned long smt_gain = sd->smt_gain;
5055
5056         smt_gain /= weight;
5057
5058         return smt_gain;
5059 }
5060
5061 unsigned long __weak arch_scale_smt_power(struct sched_domain *sd, int cpu)
5062 {
5063         return default_scale_smt_power(sd, cpu);
5064 }
5065
5066 static unsigned long scale_rt_power(int cpu)
5067 {
5068         struct rq *rq = cpu_rq(cpu);
5069         u64 total, available, age_stamp, avg;
5070
5071         /*
5072          * Since we're reading these variables without serialization make sure
5073          * we read them once before doing sanity checks on them.
5074          */
5075         age_stamp = ACCESS_ONCE(rq->age_stamp);
5076         avg = ACCESS_ONCE(rq->rt_avg);
5077
5078         total = sched_avg_period() + (rq->clock - age_stamp);
5079
5080         if (unlikely(total < avg)) {
5081                 /* Ensures that power won't end up being negative */
5082                 available = 0;
5083         } else {
5084                 available = total - avg;
5085         }
5086
5087         if (unlikely((s64)total < SCHED_POWER_SCALE))
5088                 total = SCHED_POWER_SCALE;
5089
5090         total >>= SCHED_POWER_SHIFT;
5091
5092         return div_u64(available, total);
5093 }
5094
5095 static void update_cpu_power(struct sched_domain *sd, int cpu)
5096 {
5097         unsigned long weight = sd->span_weight;
5098         unsigned long power = SCHED_POWER_SCALE;
5099         struct sched_group *sdg = sd->groups;
5100
5101         if ((sd->flags & SD_SHARE_CPUPOWER) && weight > 1) {
5102                 if (sched_feat(ARCH_POWER))
5103                         power *= arch_scale_smt_power(sd, cpu);
5104                 else
5105                         power *= default_scale_smt_power(sd, cpu);
5106
5107                 power >>= SCHED_POWER_SHIFT;
5108         }
5109
5110         sdg->sgp->power_orig = power;
5111
5112         if (sched_feat(ARCH_POWER))
5113                 power *= arch_scale_freq_power(sd, cpu);
5114         else
5115                 power *= default_scale_freq_power(sd, cpu);
5116
5117         power >>= SCHED_POWER_SHIFT;
5118
5119         power *= scale_rt_power(cpu);
5120         power >>= SCHED_POWER_SHIFT;
5121
5122         if (!power)
5123                 power = 1;
5124
5125         cpu_rq(cpu)->cpu_power = power;
5126         sdg->sgp->power = power;
5127 }
5128
5129 void update_group_power(struct sched_domain *sd, int cpu)
5130 {
5131         struct sched_domain *child = sd->child;
5132         struct sched_group *group, *sdg = sd->groups;
5133         unsigned long power;
5134         unsigned long interval;
5135
5136         interval = msecs_to_jiffies(sd->balance_interval);
5137         interval = clamp(interval, 1UL, max_load_balance_interval);
5138         sdg->sgp->next_update = jiffies + interval;
5139
5140         if (!child) {
5141                 update_cpu_power(sd, cpu);
5142                 return;
5143         }
5144
5145         power = 0;
5146
5147         if (child->flags & SD_OVERLAP) {
5148                 /*
5149                  * SD_OVERLAP domains cannot assume that child groups
5150                  * span the current group.
5151                  */
5152
5153                 for_each_cpu(cpu, sched_group_cpus(sdg))
5154                         power += power_of(cpu);
5155         } else  {
5156                 /*
5157                  * !SD_OVERLAP domains can assume that child groups
5158                  * span the current group.
5159                  */ 
5160
5161                 group = child->groups;
5162                 do {
5163                         power += group->sgp->power;
5164                         group = group->next;
5165                 } while (group != child->groups);
5166         }
5167
5168         sdg->sgp->power_orig = sdg->sgp->power = power;
5169 }
5170
5171 /*
5172  * Try and fix up capacity for tiny siblings, this is needed when
5173  * things like SD_ASYM_PACKING need f_b_g to select another sibling
5174  * which on its own isn't powerful enough.
5175  *
5176  * See update_sd_pick_busiest() and check_asym_packing().
5177  */
5178 static inline int
5179 fix_small_capacity(struct sched_domain *sd, struct sched_group *group)
5180 {
5181         /*
5182          * Only siblings can have significantly less than SCHED_POWER_SCALE
5183          */
5184         if (!(sd->flags & SD_SHARE_CPUPOWER))
5185                 return 0;
5186
5187         /*
5188          * If ~90% of the cpu_power is still there, we're good.
5189          */
5190         if (group->sgp->power * 32 > group->sgp->power_orig * 29)
5191                 return 1;
5192
5193         return 0;
5194 }
5195
5196 /**
5197  * update_sg_lb_stats - Update sched_group's statistics for load balancing.
5198  * @env: The load balancing environment.
5199  * @group: sched_group whose statistics are to be updated.
5200  * @load_idx: Load index of sched_domain of this_cpu for load calc.
5201  * @local_group: Does group contain this_cpu.
5202  * @balance: Should we balance.
5203  * @sgs: variable to hold the statistics for this group.
5204  */
5205 static inline void update_sg_lb_stats(struct lb_env *env,
5206                         struct sched_group *group, int load_idx,
5207                         int local_group, int *balance, struct sg_lb_stats *sgs)
5208 {
5209         unsigned long nr_running, max_nr_running, min_nr_running;
5210         unsigned long load, max_cpu_load, min_cpu_load;
5211         unsigned int balance_cpu = -1, first_idle_cpu = 0;
5212         unsigned long avg_load_per_task = 0;
5213         int i;
5214
5215         if (local_group)
5216                 balance_cpu = group_balance_cpu(group);
5217
5218         /* Tally up the load of all CPUs in the group */
5219         max_cpu_load = 0;
5220         min_cpu_load = ~0UL;
5221         max_nr_running = 0;
5222         min_nr_running = ~0UL;
5223
5224         for_each_cpu_and(i, sched_group_cpus(group), env->cpus) {
5225                 struct rq *rq = cpu_rq(i);
5226
5227                 nr_running = rq->nr_running;
5228
5229                 /* Bias balancing toward cpus of our domain */
5230                 if (local_group) {
5231                         if (idle_cpu(i) && !first_idle_cpu &&
5232                                         cpumask_test_cpu(i, sched_group_mask(group))) {
5233                                 first_idle_cpu = 1;
5234                                 balance_cpu = i;
5235                         }
5236
5237                         load = target_load(i, load_idx);
5238                 } else {
5239                         load = source_load(i, load_idx);
5240                         if (load > max_cpu_load)
5241                                 max_cpu_load = load;
5242                         if (min_cpu_load > load)
5243                                 min_cpu_load = load;
5244
5245                         if (nr_running > max_nr_running)
5246                                 max_nr_running = nr_running;
5247                         if (min_nr_running > nr_running)
5248                                 min_nr_running = nr_running;
5249                 }
5250
5251                 sgs->group_load += load;
5252                 sgs->sum_nr_running += nr_running;
5253                 sgs->sum_weighted_load += weighted_cpuload(i);
5254                 if (idle_cpu(i))
5255                         sgs->idle_cpus++;
5256         }
5257
5258         /*
5259          * First idle cpu or the first cpu(busiest) in this sched group
5260          * is eligible for doing load balancing at this and above
5261          * domains. In the newly idle case, we will allow all the cpu's
5262          * to do the newly idle load balance.
5263          */
5264         if (local_group) {
5265                 if (env->idle != CPU_NEWLY_IDLE) {
5266                         if (balance_cpu != env->dst_cpu) {
5267                                 *balance = 0;
5268                                 return;
5269                         }
5270                         update_group_power(env->sd, env->dst_cpu);
5271                 } else if (time_after_eq(jiffies, group->sgp->next_update))
5272                         update_group_power(env->sd, env->dst_cpu);
5273         }
5274
5275         /* Adjust by relative CPU power of the group */
5276         sgs->avg_load = (sgs->group_load*SCHED_POWER_SCALE) / group->sgp->power;
5277
5278         /*
5279          * Consider the group unbalanced when the imbalance is larger
5280          * than the average weight of a task.
5281          *
5282          * APZ: with cgroup the avg task weight can vary wildly and
5283          *      might not be a suitable number - should we keep a
5284          *      normalized nr_running number somewhere that negates
5285          *      the hierarchy?
5286          */
5287         if (sgs->sum_nr_running)
5288                 avg_load_per_task = sgs->sum_weighted_load / sgs->sum_nr_running;
5289
5290         if ((max_cpu_load - min_cpu_load) >= avg_load_per_task &&
5291             (max_nr_running - min_nr_running) > 1)
5292                 sgs->group_imb = 1;
5293
5294         sgs->group_capacity = DIV_ROUND_CLOSEST(group->sgp->power,
5295                                                 SCHED_POWER_SCALE);
5296         if (!sgs->group_capacity)
5297                 sgs->group_capacity = fix_small_capacity(env->sd, group);
5298         sgs->group_weight = group->group_weight;
5299
5300         if (sgs->group_capacity > sgs->sum_nr_running)
5301                 sgs->group_has_capacity = 1;
5302 }
5303
5304 /**
5305  * update_sd_pick_busiest - return 1 on busiest group
5306  * @env: The load balancing environment.
5307  * @sds: sched_domain statistics
5308  * @sg: sched_group candidate to be checked for being the busiest
5309  * @sgs: sched_group statistics
5310  *
5311  * Determine if @sg is a busier group than the previously selected
5312  * busiest group.
5313  */
5314 static bool update_sd_pick_busiest(struct lb_env *env,
5315                                    struct sd_lb_stats *sds,
5316                                    struct sched_group *sg,
5317                                    struct sg_lb_stats *sgs)
5318 {
5319         if (sgs->avg_load <= sds->max_load)
5320                 return false;
5321
5322         if (sgs->sum_nr_running > sgs->group_capacity)
5323                 return true;
5324
5325         if (sgs->group_imb)
5326                 return true;
5327
5328         /*
5329          * ASYM_PACKING needs to move all the work to the lowest
5330          * numbered CPUs in the group, therefore mark all groups
5331          * higher than ourself as busy.
5332          */
5333         if ((env->sd->flags & SD_ASYM_PACKING) && sgs->sum_nr_running &&
5334             env->dst_cpu < group_first_cpu(sg)) {
5335                 if (!sds->busiest)
5336                         return true;
5337
5338                 if (group_first_cpu(sds->busiest) > group_first_cpu(sg))
5339                         return true;
5340         }
5341
5342         return false;
5343 }
5344
5345 /**
5346  * update_sd_lb_stats - Update sched_domain's statistics for load balancing.
5347  * @env: The load balancing environment.
5348  * @balance: Should we balance.
5349  * @sds: variable to hold the statistics for this sched_domain.
5350  */
5351 static inline void update_sd_lb_stats(struct lb_env *env,
5352                                         int *balance, struct sd_lb_stats *sds)
5353 {
5354         struct sched_domain *child = env->sd->child;
5355         struct sched_group *sg = env->sd->groups;
5356         struct sg_lb_stats sgs;
5357         int load_idx, prefer_sibling = 0;
5358
5359         if (child && child->flags & SD_PREFER_SIBLING)
5360                 prefer_sibling = 1;
5361
5362         load_idx = get_sd_load_idx(env->sd, env->idle);
5363
5364         do {
5365                 int local_group;
5366
5367                 local_group = cpumask_test_cpu(env->dst_cpu, sched_group_cpus(sg));
5368                 memset(&sgs, 0, sizeof(sgs));
5369                 update_sg_lb_stats(env, sg, load_idx, local_group, balance, &sgs);
5370
5371                 if (local_group && !(*balance))
5372                         return;
5373
5374                 sds->total_load += sgs.group_load;
5375                 sds->total_pwr += sg->sgp->power;
5376
5377                 /*
5378                  * In case the child domain prefers tasks go to siblings
5379                  * first, lower the sg capacity to one so that we'll try
5380                  * and move all the excess tasks away. We lower the capacity
5381                  * of a group only if the local group has the capacity to fit
5382                  * these excess tasks, i.e. nr_running < group_capacity. The
5383                  * extra check prevents the case where you always pull from the
5384                  * heaviest group when it is already under-utilized (possible
5385                  * with a large weight task outweighs the tasks on the system).
5386                  */
5387                 if (prefer_sibling && !local_group && sds->this_has_capacity)
5388                         sgs.group_capacity = min(sgs.group_capacity, 1UL);
5389
5390                 if (local_group) {
5391                         sds->this_load = sgs.avg_load;
5392                         sds->this = sg;
5393                         sds->this_nr_running = sgs.sum_nr_running;
5394                         sds->this_load_per_task = sgs.sum_weighted_load;
5395                         sds->this_has_capacity = sgs.group_has_capacity;
5396                         sds->this_idle_cpus = sgs.idle_cpus;
5397                 } else if (update_sd_pick_busiest(env, sds, sg, &sgs)) {
5398                         sds->max_load = sgs.avg_load;
5399                         sds->busiest = sg;
5400                         sds->busiest_nr_running = sgs.sum_nr_running;
5401                         sds->busiest_idle_cpus = sgs.idle_cpus;
5402                         sds->busiest_group_capacity = sgs.group_capacity;
5403                         sds->busiest_load_per_task = sgs.sum_weighted_load;
5404                         sds->busiest_has_capacity = sgs.group_has_capacity;
5405                         sds->busiest_group_weight = sgs.group_weight;
5406                         sds->group_imb = sgs.group_imb;
5407                 }
5408
5409                 sg = sg->next;
5410         } while (sg != env->sd->groups);
5411 }
5412
5413 /**
5414  * check_asym_packing - Check to see if the group is packed into the
5415  *                      sched doman.
5416  *
5417  * This is primarily intended to used at the sibling level.  Some
5418  * cores like POWER7 prefer to use lower numbered SMT threads.  In the
5419  * case of POWER7, it can move to lower SMT modes only when higher
5420  * threads are idle.  When in lower SMT modes, the threads will
5421  * perform better since they share less core resources.  Hence when we
5422  * have idle threads, we want them to be the higher ones.
5423  *
5424  * This packing function is run on idle threads.  It checks to see if
5425  * the busiest CPU in this domain (core in the P7 case) has a higher
5426  * CPU number than the packing function is being run on.  Here we are
5427  * assuming lower CPU number will be equivalent to lower a SMT thread
5428  * number.
5429  *
5430  * Returns 1 when packing is required and a task should be moved to
5431  * this CPU.  The amount of the imbalance is returned in *imbalance.
5432  *
5433  * @env: The load balancing environment.
5434  * @sds: Statistics of the sched_domain which is to be packed
5435  */
5436 static int check_asym_packing(struct lb_env *env, struct sd_lb_stats *sds)
5437 {
5438         int busiest_cpu;
5439
5440         if (!(env->sd->flags & SD_ASYM_PACKING))
5441                 return 0;
5442
5443         if (!sds->busiest)
5444                 return 0;
5445
5446         busiest_cpu = group_first_cpu(sds->busiest);
5447         if (env->dst_cpu > busiest_cpu)
5448                 return 0;
5449
5450         env->imbalance = DIV_ROUND_CLOSEST(
5451                 sds->max_load * sds->busiest->sgp->power, SCHED_POWER_SCALE);
5452
5453         return 1;
5454 }
5455
5456 /**
5457  * fix_small_imbalance - Calculate the minor imbalance that exists
5458  *                      amongst the groups of a sched_domain, during
5459  *                      load balancing.
5460  * @env: The load balancing environment.
5461  * @sds: Statistics of the sched_domain whose imbalance is to be calculated.
5462  */
5463 static inline
5464 void fix_small_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
5465 {
5466         unsigned long tmp, pwr_now = 0, pwr_move = 0;
5467         unsigned int imbn = 2;
5468         unsigned long scaled_busy_load_per_task;
5469
5470         if (sds->this_nr_running) {
5471                 sds->this_load_per_task /= sds->this_nr_running;
5472                 if (sds->busiest_load_per_task >
5473                                 sds->this_load_per_task)
5474                         imbn = 1;
5475         } else {
5476                 sds->this_load_per_task =
5477                         cpu_avg_load_per_task(env->dst_cpu);
5478         }
5479
5480         scaled_busy_load_per_task = sds->busiest_load_per_task
5481                                          * SCHED_POWER_SCALE;
5482         scaled_busy_load_per_task /= sds->busiest->sgp->power;
5483
5484         if (sds->max_load - sds->this_load + scaled_busy_load_per_task >=
5485                         (scaled_busy_load_per_task * imbn)) {
5486                 env->imbalance = sds->busiest_load_per_task;
5487                 return;
5488         }
5489
5490         /*
5491          * OK, we don't have enough imbalance to justify moving tasks,
5492          * however we may be able to increase total CPU power used by
5493          * moving them.
5494          */
5495
5496         pwr_now += sds->busiest->sgp->power *
5497                         min(sds->busiest_load_per_task, sds->max_load);
5498         pwr_now += sds->this->sgp->power *
5499                         min(sds->this_load_per_task, sds->this_load);
5500         pwr_now /= SCHED_POWER_SCALE;
5501
5502         /* Amount of load we'd subtract */
5503         tmp = (sds->busiest_load_per_task * SCHED_POWER_SCALE) /
5504                 sds->busiest->sgp->power;
5505         if (sds->max_load > tmp)
5506                 pwr_move += sds->busiest->sgp->power *
5507                         min(sds->busiest_load_per_task, sds->max_load - tmp);
5508
5509         /* Amount of load we'd add */
5510         if (sds->max_load * sds->busiest->sgp->power <
5511                 sds->busiest_load_per_task * SCHED_POWER_SCALE)
5512                 tmp = (sds->max_load * sds->busiest->sgp->power) /
5513                         sds->this->sgp->power;
5514         else
5515                 tmp = (sds->busiest_load_per_task * SCHED_POWER_SCALE) /
5516                         sds->this->sgp->power;
5517         pwr_move += sds->this->sgp->power *
5518                         min(sds->this_load_per_task, sds->this_load + tmp);
5519         pwr_move /= SCHED_POWER_SCALE;
5520
5521         /* Move if we gain throughput */
5522         if (pwr_move > pwr_now)
5523                 env->imbalance = sds->busiest_load_per_task;
5524 }
5525
5526 /**
5527  * calculate_imbalance - Calculate the amount of imbalance present within the
5528  *                       groups of a given sched_domain during load balance.
5529  * @env: load balance environment
5530  * @sds: statistics of the sched_domain whose imbalance is to be calculated.
5531  */
5532 static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
5533 {
5534         unsigned long max_pull, load_above_capacity = ~0UL;
5535
5536         sds->busiest_load_per_task /= sds->busiest_nr_running;
5537         if (sds->group_imb) {
5538                 sds->busiest_load_per_task =
5539                         min(sds->busiest_load_per_task, sds->avg_load);
5540         }
5541
5542         /*
5543          * In the presence of smp nice balancing, certain scenarios can have
5544          * max load less than avg load(as we skip the groups at or below
5545          * its cpu_power, while calculating max_load..)
5546          */
5547         if (sds->max_load < sds->avg_load) {
5548                 env->imbalance = 0;
5549                 return fix_small_imbalance(env, sds);
5550         }
5551
5552         if (!sds->group_imb) {
5553                 /*
5554                  * Don't want to pull so many tasks that a group would go idle.
5555                  */
5556                 load_above_capacity = (sds->busiest_nr_running -
5557                                                 sds->busiest_group_capacity);
5558
5559                 load_above_capacity *= (SCHED_LOAD_SCALE * SCHED_POWER_SCALE);
5560
5561                 load_above_capacity /= sds->busiest->sgp->power;
5562         }
5563
5564         /*
5565          * We're trying to get all the cpus to the average_load, so we don't
5566          * want to push ourselves above the average load, nor do we wish to
5567          * reduce the max loaded cpu below the average load. At the same time,
5568          * we also don't want to reduce the group load below the group capacity
5569          * (so that we can implement power-savings policies etc). Thus we look
5570          * for the minimum possible imbalance.
5571          * Be careful of negative numbers as they'll appear as very large values
5572          * with unsigned longs.
5573          */
5574         max_pull = min(sds->max_load - sds->avg_load, load_above_capacity);
5575
5576         /* How much load to actually move to equalise the imbalance */
5577         env->imbalance = min(max_pull * sds->busiest->sgp->power,
5578                 (sds->avg_load - sds->this_load) * sds->this->sgp->power)
5579                         / SCHED_POWER_SCALE;
5580
5581         /*
5582          * if *imbalance is less than the average load per runnable task
5583          * there is no guarantee that any tasks will be moved so we'll have
5584          * a think about bumping its value to force at least one task to be
5585          * moved
5586          */
5587         if (env->imbalance < sds->busiest_load_per_task)
5588                 return fix_small_imbalance(env, sds);
5589
5590 }
5591
5592 /******* find_busiest_group() helpers end here *********************/
5593
5594 /**
5595  * find_busiest_group - Returns the busiest group within the sched_domain
5596  * if there is an imbalance. If there isn't an imbalance, and
5597  * the user has opted for power-savings, it returns a group whose
5598  * CPUs can be put to idle by rebalancing those tasks elsewhere, if
5599  * such a group exists.
5600  *
5601  * Also calculates the amount of weighted load which should be moved
5602  * to restore balance.
5603  *
5604  * @env: The load balancing environment.
5605  * @balance: Pointer to a variable indicating if this_cpu
5606  *      is the appropriate cpu to perform load balancing at this_level.
5607  *
5608  * Returns:     - the busiest group if imbalance exists.
5609  *              - If no imbalance and user has opted for power-savings balance,
5610  *                 return the least loaded group whose CPUs can be
5611  *                 put to idle by rebalancing its tasks onto our group.
5612  */
5613 static struct sched_group *
5614 find_busiest_group(struct lb_env *env, int *balance)
5615 {
5616         struct sd_lb_stats sds;
5617
5618         memset(&sds, 0, sizeof(sds));
5619
5620         /*
5621          * Compute the various statistics relavent for load balancing at
5622          * this level.
5623          */
5624         update_sd_lb_stats(env, balance, &sds);
5625
5626         /*
5627          * this_cpu is not the appropriate cpu to perform load balancing at
5628          * this level.
5629          */
5630         if (!(*balance))
5631                 goto ret;
5632
5633         if ((env->idle == CPU_IDLE || env->idle == CPU_NEWLY_IDLE) &&
5634             check_asym_packing(env, &sds))
5635                 return sds.busiest;
5636
5637         /* There is no busy sibling group to pull tasks from */
5638         if (!sds.busiest || sds.busiest_nr_running == 0)
5639                 goto out_balanced;
5640
5641         sds.avg_load = (SCHED_POWER_SCALE * sds.total_load) / sds.total_pwr;
5642
5643         /*
5644          * If the busiest group is imbalanced the below checks don't
5645          * work because they assumes all things are equal, which typically
5646          * isn't true due to cpus_allowed constraints and the like.
5647          */
5648         if (sds.group_imb)
5649                 goto force_balance;
5650
5651         /* SD_BALANCE_NEWIDLE trumps SMP nice when underutilized */
5652         if (env->idle == CPU_NEWLY_IDLE && sds.this_has_capacity &&
5653                         !sds.busiest_has_capacity)
5654                 goto force_balance;
5655
5656         /*
5657          * If the local group is more busy than the selected busiest group
5658          * don't try and pull any tasks.
5659          */
5660         if (sds.this_load >= sds.max_load)
5661                 goto out_balanced;
5662
5663         /*
5664          * Don't pull any tasks if this group is already above the domain
5665          * average load.
5666          */
5667         if (sds.this_load >= sds.avg_load)
5668                 goto out_balanced;
5669
5670         if (env->idle == CPU_IDLE) {
5671                 /*
5672                  * This cpu is idle. If the busiest group load doesn't
5673                  * have more tasks than the number of available cpu's and
5674                  * there is no imbalance between this and busiest group
5675                  * wrt to idle cpu's, it is balanced.
5676                  */
5677                 if ((sds.this_idle_cpus <= sds.busiest_idle_cpus + 1) &&
5678                     sds.busiest_nr_running <= sds.busiest_group_weight)
5679                         goto out_balanced;
5680         } else {
5681                 /*
5682                  * In the CPU_NEWLY_IDLE, CPU_NOT_IDLE cases, use
5683                  * imbalance_pct to be conservative.
5684                  */
5685                 if (100 * sds.max_load <= env->sd->imbalance_pct * sds.this_load)
5686                         goto out_balanced;
5687         }
5688
5689 force_balance:
5690         /* Looks like there is an imbalance. Compute it */
5691         calculate_imbalance(env, &sds);
5692         return sds.busiest;
5693
5694 out_balanced:
5695 ret:
5696         env->imbalance = 0;
5697         return NULL;
5698 }
5699
5700 /*
5701  * find_busiest_queue - find the busiest runqueue among the cpus in group.
5702  */
5703 static struct rq *find_busiest_queue(struct lb_env *env,
5704                                      struct sched_group *group)
5705 {
5706         struct rq *busiest = NULL, *rq;
5707         unsigned long max_load = 0;
5708         int i;
5709
5710         for_each_cpu(i, sched_group_cpus(group)) {
5711                 unsigned long power = power_of(i);
5712                 unsigned long capacity = DIV_ROUND_CLOSEST(power,
5713                                                            SCHED_POWER_SCALE);
5714                 unsigned long wl;
5715
5716                 if (!capacity)
5717                         capacity = fix_small_capacity(env->sd, group);
5718
5719                 if (!cpumask_test_cpu(i, env->cpus))
5720                         continue;
5721
5722                 rq = cpu_rq(i);
5723                 wl = weighted_cpuload(i);
5724
5725                 /*
5726                  * When comparing with imbalance, use weighted_cpuload()
5727                  * which is not scaled with the cpu power.
5728                  */
5729                 if (capacity && rq->nr_running == 1 && wl > env->imbalance)
5730                         continue;
5731
5732                 /*
5733                  * For the load comparisons with the other cpu's, consider
5734                  * the weighted_cpuload() scaled with the cpu power, so that
5735                  * the load can be moved away from the cpu that is potentially
5736                  * running at a lower capacity.
5737                  */
5738                 wl = (wl * SCHED_POWER_SCALE) / power;
5739
5740                 if (wl > max_load) {
5741                         max_load = wl;
5742                         busiest = rq;
5743                 }
5744         }
5745
5746         return busiest;
5747 }
5748
5749 /*
5750  * Max backoff if we encounter pinned tasks. Pretty arbitrary value, but
5751  * so long as it is large enough.
5752  */
5753 #define MAX_PINNED_INTERVAL     512
5754
5755 /* Working cpumask for load_balance and load_balance_newidle. */
5756 DEFINE_PER_CPU(cpumask_var_t, load_balance_mask);
5757
5758 static int need_active_balance(struct lb_env *env)
5759 {
5760         struct sched_domain *sd = env->sd;
5761
5762         if (env->idle == CPU_NEWLY_IDLE) {
5763
5764                 /*
5765                  * ASYM_PACKING needs to force migrate tasks from busy but
5766                  * higher numbered CPUs in order to pack all tasks in the
5767                  * lowest numbered CPUs.
5768                  */
5769                 if ((sd->flags & SD_ASYM_PACKING) && env->src_cpu > env->dst_cpu)
5770                         return 1;
5771         }
5772
5773         return unlikely(sd->nr_balance_failed > sd->cache_nice_tries+2);
5774 }
5775
5776 static int active_load_balance_cpu_stop(void *data);
5777
5778 /*
5779  * Check this_cpu to ensure it is balanced within domain. Attempt to move
5780  * tasks if there is an imbalance.
5781  */
5782 static int load_balance(int this_cpu, struct rq *this_rq,
5783                         struct sched_domain *sd, enum cpu_idle_type idle,
5784                         int *balance)
5785 {
5786         int ld_moved, cur_ld_moved, active_balance = 0;
5787         struct sched_group *group;
5788         struct rq *busiest;
5789         unsigned long flags;
5790         struct cpumask *cpus = __get_cpu_var(load_balance_mask);
5791
5792         struct lb_env env = {
5793                 .sd             = sd,
5794                 .dst_cpu        = this_cpu,
5795                 .dst_rq         = this_rq,
5796                 .dst_grpmask    = sched_group_cpus(sd->groups),
5797                 .idle           = idle,
5798                 .loop_break     = sched_nr_migrate_break,
5799                 .cpus           = cpus,
5800         };
5801
5802         /*
5803          * For NEWLY_IDLE load_balancing, we don't need to consider
5804          * other cpus in our group
5805          */
5806         if (idle == CPU_NEWLY_IDLE)
5807                 env.dst_grpmask = NULL;
5808
5809         cpumask_copy(cpus, cpu_active_mask);
5810
5811         schedstat_inc(sd, lb_count[idle]);
5812
5813 redo:
5814         group = find_busiest_group(&env, balance);
5815
5816         if (*balance == 0)
5817                 goto out_balanced;
5818
5819         if (!group) {
5820                 schedstat_inc(sd, lb_nobusyg[idle]);
5821                 goto out_balanced;
5822         }
5823
5824         busiest = find_busiest_queue(&env, group);
5825         if (!busiest) {
5826                 schedstat_inc(sd, lb_nobusyq[idle]);
5827                 goto out_balanced;
5828         }
5829
5830         BUG_ON(busiest == env.dst_rq);
5831
5832         schedstat_add(sd, lb_imbalance[idle], env.imbalance);
5833
5834         ld_moved = 0;
5835         if (busiest->nr_running > 1) {
5836                 /*
5837                  * Attempt to move tasks. If find_busiest_group has found
5838                  * an imbalance but busiest->nr_running <= 1, the group is
5839                  * still unbalanced. ld_moved simply stays zero, so it is
5840                  * correctly treated as an imbalance.
5841                  */
5842                 env.flags |= LBF_ALL_PINNED;
5843                 env.src_cpu   = busiest->cpu;
5844                 env.src_rq    = busiest;
5845                 env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
5846
5847                 update_h_load(env.src_cpu);
5848 more_balance:
5849                 local_irq_save(flags);
5850                 double_rq_lock(env.dst_rq, busiest);
5851
5852                 /*
5853                  * cur_ld_moved - load moved in current iteration
5854                  * ld_moved     - cumulative load moved across iterations
5855                  */
5856                 cur_ld_moved = move_tasks(&env);
5857                 ld_moved += cur_ld_moved;
5858                 double_rq_unlock(env.dst_rq, busiest);
5859                 local_irq_restore(flags);
5860
5861                 /*
5862                  * some other cpu did the load balance for us.
5863                  */
5864                 if (cur_ld_moved && env.dst_cpu != smp_processor_id())
5865                         resched_cpu(env.dst_cpu);
5866
5867                 if (env.flags & LBF_NEED_BREAK) {
5868                         env.flags &= ~LBF_NEED_BREAK;
5869                         goto more_balance;
5870                 }
5871
5872                 /*
5873                  * Revisit (affine) tasks on src_cpu that couldn't be moved to
5874                  * us and move them to an alternate dst_cpu in our sched_group
5875                  * where they can run. The upper limit on how many times we
5876                  * iterate on same src_cpu is dependent on number of cpus in our
5877                  * sched_group.
5878                  *
5879                  * This changes load balance semantics a bit on who can move
5880                  * load to a given_cpu. In addition to the given_cpu itself
5881                  * (or a ilb_cpu acting on its behalf where given_cpu is
5882                  * nohz-idle), we now have balance_cpu in a position to move
5883                  * load to given_cpu. In rare situations, this may cause
5884                  * conflicts (balance_cpu and given_cpu/ilb_cpu deciding
5885                  * _independently_ and at _same_ time to move some load to
5886                  * given_cpu) causing exceess load to be moved to given_cpu.
5887                  * This however should not happen so much in practice and
5888                  * moreover subsequent load balance cycles should correct the
5889                  * excess load moved.
5890                  */
5891                 if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0) {
5892
5893                         env.dst_rq       = cpu_rq(env.new_dst_cpu);
5894                         env.dst_cpu      = env.new_dst_cpu;
5895                         env.flags       &= ~LBF_SOME_PINNED;
5896                         env.loop         = 0;
5897                         env.loop_break   = sched_nr_migrate_break;
5898
5899                         /* Prevent to re-select dst_cpu via env's cpus */
5900                         cpumask_clear_cpu(env.dst_cpu, env.cpus);
5901
5902                         /*
5903                          * Go back to "more_balance" rather than "redo" since we
5904                          * need to continue with same src_cpu.
5905                          */
5906                         goto more_balance;
5907                 }
5908
5909                 /* All tasks on this runqueue were pinned by CPU affinity */
5910                 if (unlikely(env.flags & LBF_ALL_PINNED)) {
5911                         cpumask_clear_cpu(cpu_of(busiest), cpus);
5912                         if (!cpumask_empty(cpus)) {
5913                                 env.loop = 0;
5914                                 env.loop_break = sched_nr_migrate_break;
5915                                 goto redo;
5916                         }
5917                         goto out_balanced;
5918                 }
5919         }
5920
5921         if (!ld_moved) {
5922                 schedstat_inc(sd, lb_failed[idle]);
5923                 /*
5924                  * Increment the failure counter only on periodic balance.
5925                  * We do not want newidle balance, which can be very
5926                  * frequent, pollute the failure counter causing
5927                  * excessive cache_hot migrations and active balances.
5928                  */
5929                 if (idle != CPU_NEWLY_IDLE)
5930                         sd->nr_balance_failed++;
5931
5932                 if (need_active_balance(&env)) {
5933                         raw_spin_lock_irqsave(&busiest->lock, flags);
5934
5935                         /* don't kick the active_load_balance_cpu_stop,
5936                          * if the curr task on busiest cpu can't be
5937                          * moved to this_cpu
5938                          */
5939                         if (!cpumask_test_cpu(this_cpu,
5940                                         tsk_cpus_allowed(busiest->curr))) {
5941                                 raw_spin_unlock_irqrestore(&busiest->lock,
5942                                                             flags);
5943                                 env.flags |= LBF_ALL_PINNED;
5944                                 goto out_one_pinned;
5945                         }
5946
5947                         /*
5948                          * ->active_balance synchronizes accesses to
5949                          * ->active_balance_work.  Once set, it's cleared
5950                          * only after active load balance is finished.
5951                          */
5952                         if (!busiest->active_balance) {
5953                                 busiest->active_balance = 1;
5954                                 busiest->push_cpu = this_cpu;
5955                                 active_balance = 1;
5956                         }
5957                         raw_spin_unlock_irqrestore(&busiest->lock, flags);
5958
5959                         if (active_balance) {
5960                                 stop_one_cpu_nowait(cpu_of(busiest),
5961                                         active_load_balance_cpu_stop, busiest,
5962                                         &busiest->active_balance_work);
5963                         }
5964
5965                         /*
5966                          * We've kicked active balancing, reset the failure
5967                          * counter.
5968                          */
5969                         sd->nr_balance_failed = sd->cache_nice_tries+1;
5970                 }
5971         } else
5972                 sd->nr_balance_failed = 0;
5973
5974         if (likely(!active_balance)) {
5975                 /* We were unbalanced, so reset the balancing interval */
5976                 sd->balance_interval = sd->min_interval;
5977         } else {
5978                 /*
5979                  * If we've begun active balancing, start to back off. This
5980                  * case may not be covered by the all_pinned logic if there
5981                  * is only 1 task on the busy runqueue (because we don't call
5982                  * move_tasks).
5983                  */
5984                 if (sd->balance_interval < sd->max_interval)
5985                         sd->balance_interval *= 2;
5986         }
5987
5988         goto out;
5989
5990 out_balanced:
5991         schedstat_inc(sd, lb_balanced[idle]);
5992
5993         sd->nr_balance_failed = 0;
5994
5995 out_one_pinned:
5996         /* tune up the balancing interval */
5997         if (((env.flags & LBF_ALL_PINNED) &&
5998                         sd->balance_interval < MAX_PINNED_INTERVAL) ||
5999                         (sd->balance_interval < sd->max_interval))
6000                 sd->balance_interval *= 2;
6001
6002         ld_moved = 0;
6003 out:
6004         return ld_moved;
6005 }
6006 #ifdef CONFIG_SCHED_HMP
6007 static unsigned int hmp_idle_pull(int this_cpu);
6008 #endif
6009 /*
6010  * idle_balance is called by schedule() if this_cpu is about to become
6011  * idle. Attempts to pull tasks from other CPUs.
6012  */
6013 void idle_balance(int this_cpu, struct rq *this_rq)
6014 {
6015         struct sched_domain *sd;
6016         int pulled_task = 0;
6017         unsigned long next_balance = jiffies + HZ;
6018
6019         this_rq->idle_stamp = this_rq->clock;
6020
6021         if (this_rq->avg_idle < sysctl_sched_migration_cost)
6022                 return;
6023
6024         /*
6025          * Drop the rq->lock, but keep IRQ/preempt disabled.
6026          */
6027         raw_spin_unlock(&this_rq->lock);
6028
6029         update_blocked_averages(this_cpu);
6030         rcu_read_lock();
6031         for_each_domain(this_cpu, sd) {
6032                 unsigned long interval;
6033                 int balance = 1;
6034
6035                 if (!(sd->flags & SD_LOAD_BALANCE))
6036                         continue;
6037
6038                 if (sd->flags & SD_BALANCE_NEWIDLE) {
6039                         /* If we've pulled tasks over stop searching: */
6040                         pulled_task = load_balance(this_cpu, this_rq,
6041                                                    sd, CPU_NEWLY_IDLE, &balance);
6042                 }
6043
6044                 interval = msecs_to_jiffies(sd->balance_interval);
6045                 if (time_after(next_balance, sd->last_balance + interval))
6046                         next_balance = sd->last_balance + interval;
6047                 if (pulled_task) {
6048                         this_rq->idle_stamp = 0;
6049                         break;
6050                 }
6051         }
6052         rcu_read_unlock();
6053 #ifdef CONFIG_SCHED_HMP
6054         if (!pulled_task)
6055                 pulled_task = hmp_idle_pull(this_cpu);
6056 #endif
6057         raw_spin_lock(&this_rq->lock);
6058
6059         if (pulled_task || time_after(jiffies, this_rq->next_balance)) {
6060                 /*
6061                  * We are going idle. next_balance may be set based on
6062                  * a busy processor. So reset next_balance.
6063                  */
6064                 this_rq->next_balance = next_balance;
6065         }
6066 }
6067
6068 /*
6069  * active_load_balance_cpu_stop is run by cpu stopper. It pushes
6070  * running tasks off the busiest CPU onto idle CPUs. It requires at
6071  * least 1 task to be running on each physical CPU where possible, and
6072  * avoids physical / logical imbalances.
6073  */
6074 static int active_load_balance_cpu_stop(void *data)
6075 {
6076         struct rq *busiest_rq = data;
6077         int busiest_cpu = cpu_of(busiest_rq);
6078         int target_cpu = busiest_rq->push_cpu;
6079         struct rq *target_rq = cpu_rq(target_cpu);
6080         struct sched_domain *sd;
6081
6082         raw_spin_lock_irq(&busiest_rq->lock);
6083
6084         /* make sure the requested cpu hasn't gone down in the meantime */
6085         if (unlikely(busiest_cpu != smp_processor_id() ||
6086                      !busiest_rq->active_balance))
6087                 goto out_unlock;
6088
6089         /* Is there any task to move? */
6090         if (busiest_rq->nr_running <= 1)
6091                 goto out_unlock;
6092
6093         /*
6094          * This condition is "impossible", if it occurs
6095          * we need to fix it. Originally reported by
6096          * Bjorn Helgaas on a 128-cpu setup.
6097          */
6098         BUG_ON(busiest_rq == target_rq);
6099
6100         /* move a task from busiest_rq to target_rq */
6101         double_lock_balance(busiest_rq, target_rq);
6102
6103         /* Search for an sd spanning us and the target CPU. */
6104         rcu_read_lock();
6105         for_each_domain(target_cpu, sd) {
6106                 if ((sd->flags & SD_LOAD_BALANCE) &&
6107                     cpumask_test_cpu(busiest_cpu, sched_domain_span(sd)))
6108                                 break;
6109         }
6110
6111         if (likely(sd)) {
6112                 struct lb_env env = {
6113                         .sd             = sd,
6114                         .dst_cpu        = target_cpu,
6115                         .dst_rq         = target_rq,
6116                         .src_cpu        = busiest_rq->cpu,
6117                         .src_rq         = busiest_rq,
6118                         .idle           = CPU_IDLE,
6119                 };
6120
6121                 schedstat_inc(sd, alb_count);
6122
6123                 if (move_one_task(&env))
6124                         schedstat_inc(sd, alb_pushed);
6125                 else
6126                         schedstat_inc(sd, alb_failed);
6127         }
6128         rcu_read_unlock();
6129         double_unlock_balance(busiest_rq, target_rq);
6130 out_unlock:
6131         busiest_rq->active_balance = 0;
6132         raw_spin_unlock_irq(&busiest_rq->lock);
6133         return 0;
6134 }
6135
6136 #ifdef CONFIG_NO_HZ_COMMON
6137 /*
6138  * idle load balancing details
6139  * - When one of the busy CPUs notice that there may be an idle rebalancing
6140  *   needed, they will kick the idle load balancer, which then does idle
6141  *   load balancing for all the idle CPUs.
6142  */
6143 static struct {
6144         cpumask_var_t idle_cpus_mask;
6145         atomic_t nr_cpus;
6146         unsigned long next_balance;     /* in jiffy units */
6147 } nohz ____cacheline_aligned;
6148
6149 static inline int find_new_ilb(int call_cpu)
6150 {
6151         int ilb = cpumask_first(nohz.idle_cpus_mask);
6152 #ifdef CONFIG_SCHED_HMP
6153         /* restrict nohz balancing to occur in the same hmp domain */
6154         ilb = cpumask_first_and(nohz.idle_cpus_mask,
6155                         &((struct hmp_domain *)hmp_cpu_domain(call_cpu))->cpus);
6156 #endif
6157         if (ilb < nr_cpu_ids && idle_cpu(ilb))
6158                 return ilb;
6159
6160         return nr_cpu_ids;
6161 }
6162
6163 /*
6164  * Kick a CPU to do the nohz balancing, if it is time for it. We pick the
6165  * nohz_load_balancer CPU (if there is one) otherwise fallback to any idle
6166  * CPU (if there is one).
6167  */
6168 static void nohz_balancer_kick(int cpu)
6169 {
6170         int ilb_cpu;
6171
6172         nohz.next_balance++;
6173
6174         ilb_cpu = find_new_ilb(cpu);
6175
6176         if (ilb_cpu >= nr_cpu_ids)
6177                 return;
6178
6179         if (test_and_set_bit(NOHZ_BALANCE_KICK, nohz_flags(ilb_cpu)))
6180                 return;
6181         /*
6182          * Use smp_send_reschedule() instead of resched_cpu().
6183          * This way we generate a sched IPI on the target cpu which
6184          * is idle. And the softirq performing nohz idle load balance
6185          * will be run before returning from the IPI.
6186          */
6187         smp_send_reschedule(ilb_cpu);
6188         return;
6189 }
6190
6191 static inline void nohz_balance_exit_idle(int cpu)
6192 {
6193         if (unlikely(test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))) {
6194                 cpumask_clear_cpu(cpu, nohz.idle_cpus_mask);
6195                 atomic_dec(&nohz.nr_cpus);
6196                 clear_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
6197         }
6198 }
6199
6200 static inline void set_cpu_sd_state_busy(void)
6201 {
6202         struct sched_domain *sd;
6203         int cpu = smp_processor_id();
6204
6205         rcu_read_lock();
6206         sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
6207
6208         if (!sd || !sd->nohz_idle)
6209                 goto unlock;
6210         sd->nohz_idle = 0;
6211
6212         for (; sd; sd = sd->parent)
6213                 atomic_inc(&sd->groups->sgp->nr_busy_cpus);
6214 unlock:
6215         rcu_read_unlock();
6216 }
6217
6218 void set_cpu_sd_state_idle(void)
6219 {
6220         struct sched_domain *sd;
6221         int cpu = smp_processor_id();
6222
6223         rcu_read_lock();
6224         sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
6225
6226         if (!sd || sd->nohz_idle)
6227                 goto unlock;
6228         sd->nohz_idle = 1;
6229
6230         for (; sd; sd = sd->parent)
6231                 atomic_dec(&sd->groups->sgp->nr_busy_cpus);
6232 unlock:
6233         rcu_read_unlock();
6234 }
6235
6236 /*
6237  * This routine will record that the cpu is going idle with tick stopped.
6238  * This info will be used in performing idle load balancing in the future.
6239  */
6240 void nohz_balance_enter_idle(int cpu)
6241 {
6242         /*
6243          * If this cpu is going down, then nothing needs to be done.
6244          */
6245         if (!cpu_active(cpu))
6246                 return;
6247
6248         if (test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))
6249                 return;
6250
6251         cpumask_set_cpu(cpu, nohz.idle_cpus_mask);
6252         atomic_inc(&nohz.nr_cpus);
6253         set_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
6254 }
6255
6256 static int __cpuinit sched_ilb_notifier(struct notifier_block *nfb,
6257                                         unsigned long action, void *hcpu)
6258 {
6259         switch (action & ~CPU_TASKS_FROZEN) {
6260         case CPU_DYING:
6261                 nohz_balance_exit_idle(smp_processor_id());
6262                 return NOTIFY_OK;
6263         default:
6264                 return NOTIFY_DONE;
6265         }
6266 }
6267 #endif
6268
6269 static DEFINE_SPINLOCK(balancing);
6270
6271 /*
6272  * Scale the max load_balance interval with the number of CPUs in the system.
6273  * This trades load-balance latency on larger machines for less cross talk.
6274  */
6275 void update_max_interval(void)
6276 {
6277         max_load_balance_interval = HZ*num_online_cpus()/10;
6278 }
6279
6280 /*
6281  * It checks each scheduling domain to see if it is due to be balanced,
6282  * and initiates a balancing operation if so.
6283  *
6284  * Balancing parameters are set up in init_sched_domains.
6285  */
6286 static void rebalance_domains(int cpu, enum cpu_idle_type idle)
6287 {
6288         int balance = 1;
6289         struct rq *rq = cpu_rq(cpu);
6290         unsigned long interval;
6291         struct sched_domain *sd;
6292         /* Earliest time when we have to do rebalance again */
6293         unsigned long next_balance = jiffies + 60*HZ;
6294         int update_next_balance = 0;
6295         int need_serialize;
6296
6297         update_blocked_averages(cpu);
6298
6299         rcu_read_lock();
6300         for_each_domain(cpu, sd) {
6301                 if (!(sd->flags & SD_LOAD_BALANCE))
6302                         continue;
6303
6304                 interval = sd->balance_interval;
6305                 if (idle != CPU_IDLE)
6306                         interval *= sd->busy_factor;
6307
6308                 /* scale ms to jiffies */
6309                 interval = msecs_to_jiffies(interval);
6310                 interval = clamp(interval, 1UL, max_load_balance_interval);
6311
6312                 need_serialize = sd->flags & SD_SERIALIZE;
6313
6314                 if (need_serialize) {
6315                         if (!spin_trylock(&balancing))
6316                                 goto out;
6317                 }
6318
6319                 if (time_after_eq(jiffies, sd->last_balance + interval)) {
6320                         if (load_balance(cpu, rq, sd, idle, &balance)) {
6321                                 /*
6322                                  * The LBF_SOME_PINNED logic could have changed
6323                                  * env->dst_cpu, so we can't know our idle
6324                                  * state even if we migrated tasks. Update it.
6325                                  */
6326                                 idle = idle_cpu(cpu) ? CPU_IDLE : CPU_NOT_IDLE;
6327                         }
6328                         sd->last_balance = jiffies;
6329                 }
6330                 if (need_serialize)
6331                         spin_unlock(&balancing);
6332 out:
6333                 if (time_after(next_balance, sd->last_balance + interval)) {
6334                         next_balance = sd->last_balance + interval;
6335                         update_next_balance = 1;
6336                 }
6337
6338                 /*
6339                  * Stop the load balance at this level. There is another
6340                  * CPU in our sched group which is doing load balancing more
6341                  * actively.
6342                  */
6343                 if (!balance)
6344                         break;
6345         }
6346         rcu_read_unlock();
6347
6348         /*
6349          * next_balance will be updated only when there is a need.
6350          * When the cpu is attached to null domain for ex, it will not be
6351          * updated.
6352          */
6353         if (likely(update_next_balance))
6354                 rq->next_balance = next_balance;
6355 }
6356
6357 #ifdef CONFIG_NO_HZ_COMMON
6358 /*
6359  * In CONFIG_NO_HZ_COMMON case, the idle balance kickee will do the
6360  * rebalancing for all the cpus for whom scheduler ticks are stopped.
6361  */
6362 static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle)
6363 {
6364         struct rq *this_rq = cpu_rq(this_cpu);
6365         struct rq *rq;
6366         int balance_cpu;
6367
6368         if (idle != CPU_IDLE ||
6369             !test_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu)))
6370                 goto end;
6371
6372         for_each_cpu(balance_cpu, nohz.idle_cpus_mask) {
6373                 if (balance_cpu == this_cpu || !idle_cpu(balance_cpu))
6374                         continue;
6375
6376                 /*
6377                  * If this cpu gets work to do, stop the load balancing
6378                  * work being done for other cpus. Next load
6379                  * balancing owner will pick it up.
6380                  */
6381                 if (need_resched())
6382                         break;
6383
6384                 rq = cpu_rq(balance_cpu);
6385
6386                 raw_spin_lock_irq(&rq->lock);
6387                 update_rq_clock(rq);
6388                 update_idle_cpu_load(rq);
6389                 raw_spin_unlock_irq(&rq->lock);
6390
6391                 rebalance_domains(balance_cpu, CPU_IDLE);
6392
6393                 if (time_after(this_rq->next_balance, rq->next_balance))
6394                         this_rq->next_balance = rq->next_balance;
6395         }
6396         nohz.next_balance = this_rq->next_balance;
6397 end:
6398         clear_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu));
6399 }
6400
6401 /*
6402  * Current heuristic for kicking the idle load balancer in the presence
6403  * of an idle cpu is the system.
6404  *   - This rq has more than one task.
6405  *   - At any scheduler domain level, this cpu's scheduler group has multiple
6406  *     busy cpu's exceeding the group's power.
6407  *   - For SD_ASYM_PACKING, if the lower numbered cpu's in the scheduler
6408  *     domain span are idle.
6409  */
6410 static inline int nohz_kick_needed(struct rq *rq, int cpu)
6411 {
6412         unsigned long now = jiffies;
6413         struct sched_domain *sd;
6414
6415         if (unlikely(idle_cpu(cpu)))
6416                 return 0;
6417
6418        /*
6419         * We may be recently in ticked or tickless idle mode. At the first
6420         * busy tick after returning from idle, we will update the busy stats.
6421         */
6422         set_cpu_sd_state_busy();
6423         nohz_balance_exit_idle(cpu);
6424
6425         /*
6426          * None are in tickless mode and hence no need for NOHZ idle load
6427          * balancing.
6428          */
6429         if (likely(!atomic_read(&nohz.nr_cpus)))
6430                 return 0;
6431
6432         if (time_before(now, nohz.next_balance))
6433                 return 0;
6434
6435 #ifdef CONFIG_SCHED_HMP
6436         /*
6437          * Bail out if there are no nohz CPUs in our
6438          * HMP domain, since we will move tasks between
6439          * domains through wakeup and force balancing
6440          * as necessary based upon task load.
6441          */
6442         if (cpumask_first_and(nohz.idle_cpus_mask,
6443                         &((struct hmp_domain *)hmp_cpu_domain(cpu))->cpus) >= nr_cpu_ids)
6444                 return 0;
6445 #endif
6446
6447         if (rq->nr_running >= 2)
6448                 goto need_kick;
6449
6450         rcu_read_lock();
6451         for_each_domain(cpu, sd) {
6452                 struct sched_group *sg = sd->groups;
6453                 struct sched_group_power *sgp = sg->sgp;
6454                 int nr_busy = atomic_read(&sgp->nr_busy_cpus);
6455
6456                 if (sd->flags & SD_SHARE_PKG_RESOURCES && nr_busy > 1)
6457                         goto need_kick_unlock;
6458
6459                 if (sd->flags & SD_ASYM_PACKING && nr_busy != sg->group_weight
6460                     && (cpumask_first_and(nohz.idle_cpus_mask,
6461                                           sched_domain_span(sd)) < cpu))
6462                         goto need_kick_unlock;
6463
6464                 if (!(sd->flags & (SD_SHARE_PKG_RESOURCES | SD_ASYM_PACKING)))
6465                         break;
6466         }
6467         rcu_read_unlock();
6468         return 0;
6469
6470 need_kick_unlock:
6471         rcu_read_unlock();
6472 need_kick:
6473         return 1;
6474 }
6475 #else
6476 static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { }
6477 #endif
6478
6479 #ifdef CONFIG_SCHED_HMP
6480 /* Check if task should migrate to a faster cpu */
6481 static unsigned int hmp_up_migration(int cpu, int *target_cpu, struct sched_entity *se)
6482 {
6483         struct task_struct *p = task_of(se);
6484         u64 now;
6485
6486         if (target_cpu)
6487                 *target_cpu = NR_CPUS;
6488
6489         if (hmp_cpu_is_fastest(cpu))
6490                 return 0;
6491
6492 #ifdef CONFIG_SCHED_HMP_PRIO_FILTER
6493         /* Filter by task priority */
6494         if (p->prio >= hmp_up_prio)
6495                 return 0;
6496 #endif
6497         if (se->avg.load_avg_ratio < hmp_up_threshold)
6498                 return 0;
6499
6500         /* Let the task load settle before doing another up migration */
6501         /* hack - always use clock from first online CPU */
6502         now = cpu_rq(cpumask_first(cpu_online_mask))->clock_task;
6503         if (((now - se->avg.hmp_last_up_migration) >> 10)
6504                                         < hmp_next_up_threshold)
6505                 return 0;
6506
6507         /* hmp_domain_min_load only returns 0 for an
6508          * idle CPU or 1023 for any partly-busy one.
6509          * Be explicit about requirement for an idle CPU.
6510          */
6511         if (hmp_domain_min_load(hmp_faster_domain(cpu), target_cpu) != 0)
6512                 return 0;
6513
6514         if (cpumask_intersects(&hmp_faster_domain(cpu)->cpus,
6515                         tsk_cpus_allowed(p)))
6516                 return 1;
6517
6518         return 0;
6519 }
6520
6521 /* Check if task should migrate to a slower cpu */
6522 static unsigned int hmp_down_migration(int cpu, struct sched_entity *se)
6523 {
6524         struct task_struct *p = task_of(se);
6525         u64 now;
6526
6527         if (hmp_cpu_is_slowest(cpu))
6528                 return 0;
6529
6530 #ifdef CONFIG_SCHED_HMP_PRIO_FILTER
6531         /* Filter by task priority */
6532         if ((p->prio >= hmp_up_prio) &&
6533                 cpumask_intersects(&hmp_slower_domain(cpu)->cpus,
6534                                         tsk_cpus_allowed(p))) {
6535                 return 1;
6536         }
6537 #endif
6538
6539         /* Let the task load settle before doing another down migration */
6540         /* hack - always use clock from first online CPU */
6541         now = cpu_rq(cpumask_first(cpu_online_mask))->clock_task;
6542         if (((now - se->avg.hmp_last_down_migration) >> 10)
6543                                         < hmp_next_down_threshold)
6544                 return 0;
6545
6546         if (cpumask_intersects(&hmp_slower_domain(cpu)->cpus,
6547                                         tsk_cpus_allowed(p))
6548                 && se->avg.load_avg_ratio < hmp_down_threshold) {
6549                 return 1;
6550         }
6551         return 0;
6552 }
6553
6554 /*
6555  * hmp_can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
6556  * Ideally this function should be merged with can_migrate_task() to avoid
6557  * redundant code.
6558  */
6559 static int hmp_can_migrate_task(struct task_struct *p, struct lb_env *env)
6560 {
6561         int tsk_cache_hot = 0;
6562
6563         /*
6564          * We do not migrate tasks that are:
6565          * 1) running (obviously), or
6566          * 2) cannot be migrated to this CPU due to cpus_allowed
6567          */
6568         if (!cpumask_test_cpu(env->dst_cpu, tsk_cpus_allowed(p))) {
6569                 schedstat_inc(p, se.statistics.nr_failed_migrations_affine);
6570                 return 0;
6571         }
6572         env->flags &= ~LBF_ALL_PINNED;
6573
6574         if (task_running(env->src_rq, p)) {
6575                 schedstat_inc(p, se.statistics.nr_failed_migrations_running);
6576                 return 0;
6577         }
6578
6579         /*
6580          * Aggressive migration if:
6581          * 1) task is cache cold, or
6582          * 2) too many balance attempts have failed.
6583          */
6584
6585         tsk_cache_hot = task_hot(p, env->src_rq->clock_task, env->sd);
6586         if (!tsk_cache_hot ||
6587                 env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
6588 #ifdef CONFIG_SCHEDSTATS
6589                 if (tsk_cache_hot) {
6590                         schedstat_inc(env->sd, lb_hot_gained[env->idle]);
6591                         schedstat_inc(p, se.statistics.nr_forced_migrations);
6592                 }
6593 #endif
6594                 return 1;
6595         }
6596
6597         return 1;
6598 }
6599
6600 /*
6601  * move_specific_task tries to move a specific task.
6602  * Returns 1 if successful and 0 otherwise.
6603  * Called with both runqueues locked.
6604  */
6605 static int move_specific_task(struct lb_env *env, struct task_struct *pm)
6606 {
6607         struct task_struct *p, *n;
6608
6609         list_for_each_entry_safe(p, n, &env->src_rq->cfs_tasks, se.group_node) {
6610         if (throttled_lb_pair(task_group(p), env->src_rq->cpu,
6611                                 env->dst_cpu))
6612                 continue;
6613
6614                 if (!hmp_can_migrate_task(p, env))
6615                         continue;
6616                 /* Check if we found the right task */
6617                 if (p != pm)
6618                         continue;
6619
6620                 move_task(p, env);
6621                 /*
6622                  * Right now, this is only the third place move_task()
6623                  * is called, so we can safely collect move_task()
6624                  * stats here rather than inside move_task().
6625                  */
6626                 schedstat_inc(env->sd, lb_gained[env->idle]);
6627                 return 1;
6628         }
6629         return 0;
6630 }
6631
6632 /*
6633  * hmp_active_task_migration_cpu_stop is run by cpu stopper and used to
6634  * migrate a specific task from one runqueue to another.
6635  * hmp_force_up_migration uses this to push a currently running task
6636  * off a runqueue.
6637  * Based on active_load_balance_stop_cpu and can potentially be merged.
6638  */
6639 static int hmp_active_task_migration_cpu_stop(void *data)
6640 {
6641         struct rq *busiest_rq = data;
6642         struct task_struct *p = busiest_rq->migrate_task;
6643         int busiest_cpu = cpu_of(busiest_rq);
6644         int target_cpu = busiest_rq->push_cpu;
6645         struct rq *target_rq = cpu_rq(target_cpu);
6646         struct sched_domain *sd;
6647
6648         raw_spin_lock_irq(&busiest_rq->lock);
6649         /* make sure the requested cpu hasn't gone down in the meantime */
6650         if (unlikely(busiest_cpu != smp_processor_id() ||
6651                 !busiest_rq->active_balance)) {
6652                 goto out_unlock;
6653         }
6654         /* Is there any task to move? */
6655         if (busiest_rq->nr_running <= 1)
6656                 goto out_unlock;
6657         /* Task has migrated meanwhile, abort forced migration */
6658         if (task_rq(p) != busiest_rq)
6659                 goto out_unlock;
6660         /*
6661          * This condition is "impossible", if it occurs
6662          * we need to fix it. Originally reported by
6663          * Bjorn Helgaas on a 128-cpu setup.
6664          */
6665         BUG_ON(busiest_rq == target_rq);
6666
6667         /* move a task from busiest_rq to target_rq */
6668         double_lock_balance(busiest_rq, target_rq);
6669
6670         /* Search for an sd spanning us and the target CPU. */
6671         rcu_read_lock();
6672         for_each_domain(target_cpu, sd) {
6673                 if (cpumask_test_cpu(busiest_cpu, sched_domain_span(sd)))
6674                         break;
6675         }
6676
6677         if (likely(sd)) {
6678                 struct lb_env env = {
6679                         .sd             = sd,
6680                         .dst_cpu        = target_cpu,
6681                         .dst_rq         = target_rq,
6682                         .src_cpu        = busiest_rq->cpu,
6683                         .src_rq         = busiest_rq,
6684                         .idle           = CPU_IDLE,
6685                 };
6686
6687                 schedstat_inc(sd, alb_count);
6688
6689                 if (move_specific_task(&env, p))
6690                         schedstat_inc(sd, alb_pushed);
6691                 else
6692                         schedstat_inc(sd, alb_failed);
6693         }
6694         rcu_read_unlock();
6695         double_unlock_balance(busiest_rq, target_rq);
6696 out_unlock:
6697         busiest_rq->active_balance = 0;
6698         raw_spin_unlock_irq(&busiest_rq->lock);
6699         return 0;
6700 }
6701
6702 /*
6703  * hmp_idle_pull_cpu_stop is run by cpu stopper and used to
6704  * migrate a specific task from one runqueue to another.
6705  * hmp_idle_pull uses this to push a currently running task
6706  * off a runqueue to a faster CPU.
6707  * Locking is slightly different than usual.
6708  * Based on active_load_balance_stop_cpu and can potentially be merged.
6709  */
6710 static int hmp_idle_pull_cpu_stop(void *data)
6711 {
6712         struct rq *busiest_rq = data;
6713         struct task_struct *p = busiest_rq->migrate_task;
6714         int busiest_cpu = cpu_of(busiest_rq);
6715         int target_cpu = busiest_rq->push_cpu;
6716         struct rq *target_rq = cpu_rq(target_cpu);
6717         struct sched_domain *sd;
6718
6719         raw_spin_lock_irq(&busiest_rq->lock);
6720
6721         /* make sure the requested cpu hasn't gone down in the meantime */
6722         if (unlikely(busiest_cpu != smp_processor_id() ||
6723                 !busiest_rq->active_balance))
6724                 goto out_unlock;
6725
6726         /* Is there any task to move? */
6727         if (busiest_rq->nr_running <= 1)
6728                 goto out_unlock;
6729
6730         /* Task has migrated meanwhile, abort forced migration */
6731         if (task_rq(p) != busiest_rq)
6732                 goto out_unlock;
6733
6734         /*
6735          * This condition is "impossible", if it occurs
6736          * we need to fix it. Originally reported by
6737          * Bjorn Helgaas on a 128-cpu setup.
6738          */
6739         BUG_ON(busiest_rq == target_rq);
6740
6741         /* move a task from busiest_rq to target_rq */
6742         double_lock_balance(busiest_rq, target_rq);
6743
6744         /* Search for an sd spanning us and the target CPU. */
6745         rcu_read_lock();
6746         for_each_domain(target_cpu, sd) {
6747                 if (cpumask_test_cpu(busiest_cpu, sched_domain_span(sd)))
6748                         break;
6749         }
6750         if (likely(sd)) {
6751                 struct lb_env env = {
6752                         .sd             = sd,
6753                         .dst_cpu        = target_cpu,
6754                         .dst_rq         = target_rq,
6755                         .src_cpu        = busiest_rq->cpu,
6756                         .src_rq         = busiest_rq,
6757                         .idle           = CPU_IDLE,
6758                 };
6759
6760                 schedstat_inc(sd, alb_count);
6761
6762                 if (move_specific_task(&env, p))
6763                         schedstat_inc(sd, alb_pushed);
6764                 else
6765                         schedstat_inc(sd, alb_failed);
6766         }
6767         rcu_read_unlock();
6768         double_unlock_balance(busiest_rq, target_rq);
6769 out_unlock:
6770         busiest_rq->active_balance = 0;
6771         raw_spin_unlock_irq(&busiest_rq->lock);
6772         return 0;
6773 }
6774
6775 static DEFINE_SPINLOCK(hmp_force_migration);
6776
6777 /*
6778  * hmp_force_up_migration checks runqueues for tasks that need to
6779  * be actively migrated to a faster cpu.
6780  */
6781 static void hmp_force_up_migration(int this_cpu)
6782 {
6783         int cpu, target_cpu;
6784         struct sched_entity *curr, *orig;
6785         struct rq *target;
6786         unsigned long flags;
6787         unsigned int force;
6788         struct task_struct *p;
6789
6790         if (!spin_trylock(&hmp_force_migration))
6791                 return;
6792         for_each_online_cpu(cpu) {
6793                 force = 0;
6794                 target = cpu_rq(cpu);
6795                 raw_spin_lock_irqsave(&target->lock, flags);
6796                 curr = target->cfs.curr;
6797                 if (!curr) {
6798                         raw_spin_unlock_irqrestore(&target->lock, flags);
6799                         continue;
6800                 }
6801                 if (!entity_is_task(curr)) {
6802                         struct cfs_rq *cfs_rq;
6803
6804                         cfs_rq = group_cfs_rq(curr);
6805                         while (cfs_rq) {
6806                                 curr = cfs_rq->curr;
6807                                 cfs_rq = group_cfs_rq(curr);
6808                         }
6809                 }
6810                 orig = curr;
6811                 curr = hmp_get_heaviest_task(curr, 1);
6812                 p = task_of(curr);
6813                 if (hmp_up_migration(cpu, &target_cpu, curr)) {
6814                         if (!target->active_balance) {
6815                                 target->active_balance = 1;
6816                                 target->push_cpu = target_cpu;
6817                                 target->migrate_task = p;
6818                                 force = 1;
6819                                 trace_sched_hmp_migrate(p, target->push_cpu, 1);
6820                                 hmp_next_up_delay(&p->se, target->push_cpu);
6821                         }
6822                 }
6823                 if (!force && !target->active_balance) {
6824                         /*
6825                          * For now we just check the currently running task.
6826                          * Selecting the lightest task for offloading will
6827                          * require extensive book keeping.
6828                          */
6829                         curr = hmp_get_lightest_task(orig, 1);
6830                         target->push_cpu = hmp_offload_down(cpu, curr);
6831                         if (target->push_cpu < NR_CPUS) {
6832                                 target->active_balance = 1;
6833                                 target->migrate_task = p;
6834                                 force = 1;
6835                                 trace_sched_hmp_migrate(p, target->push_cpu, 2);
6836                                 hmp_next_down_delay(&p->se, target->push_cpu);
6837                         }
6838                 }
6839                 raw_spin_unlock_irqrestore(&target->lock, flags);
6840                 if (force)
6841                         stop_one_cpu_nowait(cpu_of(target),
6842                                 hmp_active_task_migration_cpu_stop,
6843                                 target, &target->active_balance_work);
6844         }
6845         spin_unlock(&hmp_force_migration);
6846 }
6847 /*
6848  * hmp_idle_pull looks at little domain runqueues to see
6849  * if a task should be pulled.
6850  *
6851  * Reuses hmp_force_migration spinlock.
6852  *
6853  */
6854 static unsigned int hmp_idle_pull(int this_cpu)
6855 {
6856         int cpu;
6857         struct sched_entity *curr, *orig;
6858         struct hmp_domain *hmp_domain = NULL;
6859         struct rq *target, *rq;
6860         unsigned long flags, ratio = 0;
6861         unsigned int force = 0;
6862         struct task_struct *p = NULL;
6863
6864         if (!hmp_cpu_is_slowest(this_cpu))
6865                 hmp_domain = hmp_slower_domain(this_cpu);
6866         if (!hmp_domain)
6867                 return 0;
6868
6869         if (!spin_trylock(&hmp_force_migration))
6870                 return 0;
6871
6872         /* first select a task */
6873         for_each_cpu(cpu, &hmp_domain->cpus) {
6874                 rq = cpu_rq(cpu);
6875                 raw_spin_lock_irqsave(&rq->lock, flags);
6876                 curr = rq->cfs.curr;
6877                 if (!curr) {
6878                         raw_spin_unlock_irqrestore(&rq->lock, flags);
6879                         continue;
6880                 }
6881                 if (!entity_is_task(curr)) {
6882                         struct cfs_rq *cfs_rq;
6883
6884                         cfs_rq = group_cfs_rq(curr);
6885                         while (cfs_rq) {
6886                                 curr = cfs_rq->curr;
6887                                 if (!entity_is_task(curr))
6888                                         cfs_rq = group_cfs_rq(curr);
6889                                 else
6890                                         cfs_rq = NULL;
6891                         }
6892                 }
6893                 orig = curr;
6894                 curr = hmp_get_heaviest_task(curr, 1);
6895                 if (curr->avg.load_avg_ratio > hmp_up_threshold &&
6896                         curr->avg.load_avg_ratio > ratio) {
6897                         p = task_of(curr);
6898                         target = rq;
6899                         ratio = curr->avg.load_avg_ratio;
6900                 }
6901                 raw_spin_unlock_irqrestore(&rq->lock, flags);
6902         }
6903
6904         if (!p)
6905                 goto done;
6906
6907         /* now we have a candidate */
6908         raw_spin_lock_irqsave(&target->lock, flags);
6909         if (!target->active_balance && task_rq(p) == target) {
6910                 target->active_balance = 1;
6911                 target->push_cpu = this_cpu;
6912                 target->migrate_task = p;
6913                 force = 1;
6914                 trace_sched_hmp_migrate(p, target->push_cpu, 3);
6915                 hmp_next_up_delay(&p->se, target->push_cpu);
6916         }
6917         raw_spin_unlock_irqrestore(&target->lock, flags);
6918         if (force) {
6919                 stop_one_cpu_nowait(cpu_of(target),
6920                         hmp_idle_pull_cpu_stop,
6921                         target, &target->active_balance_work);
6922         }
6923 done:
6924         spin_unlock(&hmp_force_migration);
6925         return force;
6926 }
6927 #else
6928 static void hmp_force_up_migration(int this_cpu) { }
6929 #endif /* CONFIG_SCHED_HMP */
6930
6931 /*
6932  * run_rebalance_domains is triggered when needed from the scheduler tick.
6933  * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
6934  */
6935 static void run_rebalance_domains(struct softirq_action *h)
6936 {
6937         int this_cpu = smp_processor_id();
6938         struct rq *this_rq = cpu_rq(this_cpu);
6939         enum cpu_idle_type idle = this_rq->idle_balance ?
6940                                                 CPU_IDLE : CPU_NOT_IDLE;
6941
6942         hmp_force_up_migration(this_cpu);
6943
6944         rebalance_domains(this_cpu, idle);
6945
6946         /*
6947          * If this cpu has a pending nohz_balance_kick, then do the
6948          * balancing on behalf of the other idle cpus whose ticks are
6949          * stopped.
6950          */
6951         nohz_idle_balance(this_cpu, idle);
6952 }
6953
6954 static inline int on_null_domain(int cpu)
6955 {
6956         return !rcu_dereference_sched(cpu_rq(cpu)->sd);
6957 }
6958
6959 /*
6960  * Trigger the SCHED_SOFTIRQ if it is time to do periodic load balancing.
6961  */
6962 void trigger_load_balance(struct rq *rq, int cpu)
6963 {
6964         /* Don't need to rebalance while attached to NULL domain */
6965         if (time_after_eq(jiffies, rq->next_balance) &&
6966             likely(!on_null_domain(cpu)))
6967                 raise_softirq(SCHED_SOFTIRQ);
6968 #ifdef CONFIG_NO_HZ_COMMON
6969         if (nohz_kick_needed(rq, cpu) && likely(!on_null_domain(cpu)))
6970                 nohz_balancer_kick(cpu);
6971 #endif
6972 }
6973
6974 static void rq_online_fair(struct rq *rq)
6975 {
6976 #ifdef CONFIG_SCHED_HMP
6977         hmp_online_cpu(rq->cpu);
6978 #endif
6979         update_sysctl();
6980 }
6981
6982 static void rq_offline_fair(struct rq *rq)
6983 {
6984 #ifdef CONFIG_SCHED_HMP
6985         hmp_offline_cpu(rq->cpu);
6986 #endif
6987         update_sysctl();
6988
6989         /* Ensure any throttled groups are reachable by pick_next_task */
6990         unthrottle_offline_cfs_rqs(rq);
6991 }
6992
6993 #endif /* CONFIG_SMP */
6994
6995 /*
6996  * scheduler tick hitting a task of our scheduling class:
6997  */
6998 static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued)
6999 {
7000         struct cfs_rq *cfs_rq;
7001         struct sched_entity *se = &curr->se;
7002
7003         for_each_sched_entity(se) {
7004                 cfs_rq = cfs_rq_of(se);
7005                 entity_tick(cfs_rq, se, queued);
7006         }
7007
7008         if (sched_feat_numa(NUMA))
7009                 task_tick_numa(rq, curr);
7010
7011         update_rq_runnable_avg(rq, 1);
7012 }
7013
7014 /*
7015  * called on fork with the child task as argument from the parent's context
7016  *  - child not yet on the tasklist
7017  *  - preemption disabled
7018  */
7019 static void task_fork_fair(struct task_struct *p)
7020 {
7021         struct cfs_rq *cfs_rq;
7022         struct sched_entity *se = &p->se, *curr;
7023         int this_cpu = smp_processor_id();
7024         struct rq *rq = this_rq();
7025         unsigned long flags;
7026
7027         raw_spin_lock_irqsave(&rq->lock, flags);
7028
7029         update_rq_clock(rq);
7030
7031         cfs_rq = task_cfs_rq(current);
7032         curr = cfs_rq->curr;
7033
7034         if (unlikely(task_cpu(p) != this_cpu)) {
7035                 rcu_read_lock();
7036                 __set_task_cpu(p, this_cpu);
7037                 rcu_read_unlock();
7038         }
7039
7040         update_curr(cfs_rq);
7041
7042         if (curr)
7043                 se->vruntime = curr->vruntime;
7044         place_entity(cfs_rq, se, 1);
7045
7046         if (sysctl_sched_child_runs_first && curr && entity_before(curr, se)) {
7047                 /*
7048                  * Upon rescheduling, sched_class::put_prev_task() will place
7049                  * 'current' within the tree based on its new key value.
7050                  */
7051                 swap(curr->vruntime, se->vruntime);
7052                 resched_task(rq->curr);
7053         }
7054
7055         se->vruntime -= cfs_rq->min_vruntime;
7056
7057         raw_spin_unlock_irqrestore(&rq->lock, flags);
7058 }
7059
7060 /*
7061  * Priority of the task has changed. Check to see if we preempt
7062  * the current task.
7063  */
7064 static void
7065 prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio)
7066 {
7067         if (!p->se.on_rq)
7068                 return;
7069
7070         /*
7071          * Reschedule if we are currently running on this runqueue and
7072          * our priority decreased, or if we are not currently running on
7073          * this runqueue and our priority is higher than the current's
7074          */
7075         if (rq->curr == p) {
7076                 if (p->prio > oldprio)
7077                         resched_task(rq->curr);
7078         } else
7079                 check_preempt_curr(rq, p, 0);
7080 }
7081
7082 static void switched_from_fair(struct rq *rq, struct task_struct *p)
7083 {
7084         struct sched_entity *se = &p->se;
7085         struct cfs_rq *cfs_rq = cfs_rq_of(se);
7086
7087         /*
7088          * Ensure the task's vruntime is normalized, so that when its
7089          * switched back to the fair class the enqueue_entity(.flags=0) will
7090          * do the right thing.
7091          *
7092          * If it was on_rq, then the dequeue_entity(.flags=0) will already
7093          * have normalized the vruntime, if it was !on_rq, then only when
7094          * the task is sleeping will it still have non-normalized vruntime.
7095          */
7096         if (!se->on_rq && p->state != TASK_RUNNING) {
7097                 /*
7098                  * Fix up our vruntime so that the current sleep doesn't
7099                  * cause 'unlimited' sleep bonus.
7100                  */
7101                 place_entity(cfs_rq, se, 0);
7102                 se->vruntime -= cfs_rq->min_vruntime;
7103         }
7104
7105 #if defined(CONFIG_FAIR_GROUP_SCHED) && defined(CONFIG_SMP)
7106         /*
7107         * Remove our load from contribution when we leave sched_fair
7108         * and ensure we don't carry in an old decay_count if we
7109         * switch back.
7110         */
7111         if (p->se.avg.decay_count) {
7112                 struct cfs_rq *cfs_rq = cfs_rq_of(&p->se);
7113                 __synchronize_entity_decay(&p->se);
7114                 subtract_blocked_load_contrib(cfs_rq,
7115                                 p->se.avg.load_avg_contrib);
7116         }
7117 #endif
7118 }
7119
7120 /*
7121  * We switched to the sched_fair class.
7122  */
7123 static void switched_to_fair(struct rq *rq, struct task_struct *p)
7124 {
7125         if (!p->se.on_rq)
7126                 return;
7127
7128         /*
7129          * We were most likely switched from sched_rt, so
7130          * kick off the schedule if running, otherwise just see
7131          * if we can still preempt the current task.
7132          */
7133         if (rq->curr == p)
7134                 resched_task(rq->curr);
7135         else
7136                 check_preempt_curr(rq, p, 0);
7137 }
7138
7139 /* Account for a task changing its policy or group.
7140  *
7141  * This routine is mostly called to set cfs_rq->curr field when a task
7142  * migrates between groups/classes.
7143  */
7144 static void set_curr_task_fair(struct rq *rq)
7145 {
7146         struct sched_entity *se = &rq->curr->se;
7147
7148         for_each_sched_entity(se) {
7149                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
7150
7151                 set_next_entity(cfs_rq, se);
7152                 /* ensure bandwidth has been allocated on our new cfs_rq */
7153                 account_cfs_rq_runtime(cfs_rq, 0);
7154         }
7155 }
7156
7157 void init_cfs_rq(struct cfs_rq *cfs_rq)
7158 {
7159         cfs_rq->tasks_timeline = RB_ROOT;
7160         cfs_rq->min_vruntime = (u64)(-(1LL << 20));
7161 #ifndef CONFIG_64BIT
7162         cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime;
7163 #endif
7164 #if defined(CONFIG_FAIR_GROUP_SCHED) && defined(CONFIG_SMP)
7165         atomic64_set(&cfs_rq->decay_counter, 1);
7166         atomic64_set(&cfs_rq->removed_load, 0);
7167 #endif
7168 }
7169
7170 #ifdef CONFIG_FAIR_GROUP_SCHED
7171 static void task_move_group_fair(struct task_struct *p, int on_rq)
7172 {
7173         struct cfs_rq *cfs_rq;
7174         /*
7175          * If the task was not on the rq at the time of this cgroup movement
7176          * it must have been asleep, sleeping tasks keep their ->vruntime
7177          * absolute on their old rq until wakeup (needed for the fair sleeper
7178          * bonus in place_entity()).
7179          *
7180          * If it was on the rq, we've just 'preempted' it, which does convert
7181          * ->vruntime to a relative base.
7182          *
7183          * Make sure both cases convert their relative position when migrating
7184          * to another cgroup's rq. This does somewhat interfere with the
7185          * fair sleeper stuff for the first placement, but who cares.
7186          */
7187         /*
7188          * When !on_rq, vruntime of the task has usually NOT been normalized.
7189          * But there are some cases where it has already been normalized:
7190          *
7191          * - Moving a forked child which is waiting for being woken up by
7192          *   wake_up_new_task().
7193          * - Moving a task which has been woken up by try_to_wake_up() and
7194          *   waiting for actually being woken up by sched_ttwu_pending().
7195          *
7196          * To prevent boost or penalty in the new cfs_rq caused by delta
7197          * min_vruntime between the two cfs_rqs, we skip vruntime adjustment.
7198          */
7199         if (!on_rq && (!p->se.sum_exec_runtime || p->state == TASK_WAKING))
7200                 on_rq = 1;
7201
7202         if (!on_rq)
7203                 p->se.vruntime -= cfs_rq_of(&p->se)->min_vruntime;
7204         set_task_rq(p, task_cpu(p));
7205         if (!on_rq) {
7206                 cfs_rq = cfs_rq_of(&p->se);
7207                 p->se.vruntime += cfs_rq->min_vruntime;
7208 #ifdef CONFIG_SMP
7209                 /*
7210                  * migrate_task_rq_fair() will have removed our previous
7211                  * contribution, but we must synchronize for ongoing future
7212                  * decay.
7213                  */
7214                 p->se.avg.decay_count = atomic64_read(&cfs_rq->decay_counter);
7215                 cfs_rq->blocked_load_avg += p->se.avg.load_avg_contrib;
7216 #endif
7217         }
7218 }
7219
7220 void free_fair_sched_group(struct task_group *tg)
7221 {
7222         int i;
7223
7224         destroy_cfs_bandwidth(tg_cfs_bandwidth(tg));
7225
7226         for_each_possible_cpu(i) {
7227                 if (tg->cfs_rq)
7228                         kfree(tg->cfs_rq[i]);
7229                 if (tg->se)
7230                         kfree(tg->se[i]);
7231         }
7232
7233         kfree(tg->cfs_rq);
7234         kfree(tg->se);
7235 }
7236
7237 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
7238 {
7239         struct cfs_rq *cfs_rq;
7240         struct sched_entity *se;
7241         int i;
7242
7243         tg->cfs_rq = kzalloc(sizeof(cfs_rq) * nr_cpu_ids, GFP_KERNEL);
7244         if (!tg->cfs_rq)
7245                 goto err;
7246         tg->se = kzalloc(sizeof(se) * nr_cpu_ids, GFP_KERNEL);
7247         if (!tg->se)
7248                 goto err;
7249
7250         tg->shares = NICE_0_LOAD;
7251
7252         init_cfs_bandwidth(tg_cfs_bandwidth(tg));
7253
7254         for_each_possible_cpu(i) {
7255                 cfs_rq = kzalloc_node(sizeof(struct cfs_rq),
7256                                       GFP_KERNEL, cpu_to_node(i));
7257                 if (!cfs_rq)
7258                         goto err;
7259
7260                 se = kzalloc_node(sizeof(struct sched_entity),
7261                                   GFP_KERNEL, cpu_to_node(i));
7262                 if (!se)
7263                         goto err_free_rq;
7264
7265                 init_cfs_rq(cfs_rq);
7266                 init_tg_cfs_entry(tg, cfs_rq, se, i, parent->se[i]);
7267         }
7268
7269         return 1;
7270
7271 err_free_rq:
7272         kfree(cfs_rq);
7273 err:
7274         return 0;
7275 }
7276
7277 void unregister_fair_sched_group(struct task_group *tg, int cpu)
7278 {
7279         struct rq *rq = cpu_rq(cpu);
7280         unsigned long flags;
7281
7282         /*
7283         * Only empty task groups can be destroyed; so we can speculatively
7284         * check on_list without danger of it being re-added.
7285         */
7286         if (!tg->cfs_rq[cpu]->on_list)
7287                 return;
7288
7289         raw_spin_lock_irqsave(&rq->lock, flags);
7290         list_del_leaf_cfs_rq(tg->cfs_rq[cpu]);
7291         raw_spin_unlock_irqrestore(&rq->lock, flags);
7292 }
7293
7294 void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
7295                         struct sched_entity *se, int cpu,
7296                         struct sched_entity *parent)
7297 {
7298         struct rq *rq = cpu_rq(cpu);
7299
7300         cfs_rq->tg = tg;
7301         cfs_rq->rq = rq;
7302         init_cfs_rq_runtime(cfs_rq);
7303
7304         tg->cfs_rq[cpu] = cfs_rq;
7305         tg->se[cpu] = se;
7306
7307         /* se could be NULL for root_task_group */
7308         if (!se)
7309                 return;
7310
7311         if (!parent)
7312                 se->cfs_rq = &rq->cfs;
7313         else
7314                 se->cfs_rq = parent->my_q;
7315
7316         se->my_q = cfs_rq;
7317         update_load_set(&se->load, 0);
7318         se->parent = parent;
7319 }
7320
7321 static DEFINE_MUTEX(shares_mutex);
7322
7323 int sched_group_set_shares(struct task_group *tg, unsigned long shares)
7324 {
7325         int i;
7326         unsigned long flags;
7327
7328         /*
7329          * We can't change the weight of the root cgroup.
7330          */
7331         if (!tg->se[0])
7332                 return -EINVAL;
7333
7334         shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES));
7335
7336         mutex_lock(&shares_mutex);
7337         if (tg->shares == shares)
7338                 goto done;
7339
7340         tg->shares = shares;
7341         for_each_possible_cpu(i) {
7342                 struct rq *rq = cpu_rq(i);
7343                 struct sched_entity *se;
7344
7345                 se = tg->se[i];
7346                 /* Propagate contribution to hierarchy */
7347                 raw_spin_lock_irqsave(&rq->lock, flags);
7348                 for_each_sched_entity(se)
7349                         update_cfs_shares(group_cfs_rq(se));
7350                 raw_spin_unlock_irqrestore(&rq->lock, flags);
7351         }
7352
7353 done:
7354         mutex_unlock(&shares_mutex);
7355         return 0;
7356 }
7357 #else /* CONFIG_FAIR_GROUP_SCHED */
7358
7359 void free_fair_sched_group(struct task_group *tg) { }
7360
7361 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
7362 {
7363         return 1;
7364 }
7365
7366 void unregister_fair_sched_group(struct task_group *tg, int cpu) { }
7367
7368 #endif /* CONFIG_FAIR_GROUP_SCHED */
7369
7370
7371 static unsigned int get_rr_interval_fair(struct rq *rq, struct task_struct *task)
7372 {
7373         struct sched_entity *se = &task->se;
7374         unsigned int rr_interval = 0;
7375
7376         /*
7377          * Time slice is 0 for SCHED_OTHER tasks that are on an otherwise
7378          * idle runqueue:
7379          */
7380         if (rq->cfs.load.weight)
7381                 rr_interval = NS_TO_JIFFIES(sched_slice(cfs_rq_of(se), se));
7382
7383         return rr_interval;
7384 }
7385
7386 /*
7387  * All the scheduling class methods:
7388  */
7389 const struct sched_class fair_sched_class = {
7390         .next                   = &idle_sched_class,
7391         .enqueue_task           = enqueue_task_fair,
7392         .dequeue_task           = dequeue_task_fair,
7393         .yield_task             = yield_task_fair,
7394         .yield_to_task          = yield_to_task_fair,
7395
7396         .check_preempt_curr     = check_preempt_wakeup,
7397
7398         .pick_next_task         = pick_next_task_fair,
7399         .put_prev_task          = put_prev_task_fair,
7400
7401 #ifdef CONFIG_SMP
7402         .select_task_rq         = select_task_rq_fair,
7403 #ifdef CONFIG_FAIR_GROUP_SCHED
7404         .migrate_task_rq        = migrate_task_rq_fair,
7405 #endif
7406         .rq_online              = rq_online_fair,
7407         .rq_offline             = rq_offline_fair,
7408
7409         .task_waking            = task_waking_fair,
7410 #endif
7411
7412         .set_curr_task          = set_curr_task_fair,
7413         .task_tick              = task_tick_fair,
7414         .task_fork              = task_fork_fair,
7415
7416         .prio_changed           = prio_changed_fair,
7417         .switched_from          = switched_from_fair,
7418         .switched_to            = switched_to_fair,
7419
7420         .get_rr_interval        = get_rr_interval_fair,
7421
7422 #ifdef CONFIG_FAIR_GROUP_SCHED
7423         .task_move_group        = task_move_group_fair,
7424 #endif
7425 };
7426
7427 #ifdef CONFIG_SCHED_DEBUG
7428 void print_cfs_stats(struct seq_file *m, int cpu)
7429 {
7430         struct cfs_rq *cfs_rq;
7431
7432         rcu_read_lock();
7433         for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq)
7434                 print_cfs_rq(m, cpu, cfs_rq);
7435         rcu_read_unlock();
7436 }
7437 #endif
7438
7439 __init void init_sched_fair_class(void)
7440 {
7441 #ifdef CONFIG_SMP
7442         open_softirq(SCHED_SOFTIRQ, run_rebalance_domains);
7443
7444 #ifdef CONFIG_NO_HZ_COMMON
7445         nohz.next_balance = jiffies;
7446         zalloc_cpumask_var(&nohz.idle_cpus_mask, GFP_NOWAIT);
7447         cpu_notifier(sched_ilb_notifier, 0);
7448 #endif
7449
7450 #ifdef CONFIG_SCHED_HMP
7451         hmp_cpu_mask_setup();
7452 #endif
7453 #endif /* SMP */
7454
7455 }
7456
7457 #ifdef CONFIG_HMP_FREQUENCY_INVARIANT_SCALE
7458 static u32 cpufreq_calc_scale(u32 min, u32 max, u32 curr)
7459 {
7460         u32 result = curr / max;
7461         return result;
7462 }
7463
7464 /* Called when the CPU Frequency is changed.
7465  * Once for each CPU.
7466  */
7467 static int cpufreq_callback(struct notifier_block *nb,
7468                                         unsigned long val, void *data)
7469 {
7470         struct cpufreq_freqs *freq = data;
7471         int cpu = freq->cpu;
7472         struct cpufreq_extents *extents;
7473
7474         if (freq->flags & CPUFREQ_CONST_LOOPS)
7475                 return NOTIFY_OK;
7476
7477         if (val != CPUFREQ_POSTCHANGE)
7478                 return NOTIFY_OK;
7479
7480         /* if dynamic load scale is disabled, set the load scale to 1.0 */
7481         if (!hmp_data.freqinvar_load_scale_enabled) {
7482                 freq_scale[cpu].curr_scale = 1024;
7483                 return NOTIFY_OK;
7484         }
7485
7486         extents = &freq_scale[cpu];
7487         if (extents->flags & SCHED_LOAD_FREQINVAR_SINGLEFREQ) {
7488                 /* If our governor was recognised as a single-freq governor,
7489                  * use 1.0
7490                  */
7491                 extents->curr_scale = 1024;
7492         } else {
7493                 extents->curr_scale = cpufreq_calc_scale(extents->min,
7494                                 extents->max, freq->new);
7495         }
7496
7497         return NOTIFY_OK;
7498 }
7499
7500 /* Called when the CPUFreq governor is changed.
7501  * Only called for the CPUs which are actually changed by the
7502  * userspace.
7503  */
7504 static int cpufreq_policy_callback(struct notifier_block *nb,
7505                                        unsigned long event, void *data)
7506 {
7507         struct cpufreq_policy *policy = data;
7508         struct cpufreq_extents *extents;
7509         int cpu, singleFreq = 0;
7510         static const char performance_governor[] = "performance";
7511         static const char powersave_governor[] = "powersave";
7512
7513         if (event == CPUFREQ_START)
7514                 return 0;
7515
7516         if (event != CPUFREQ_INCOMPATIBLE)
7517                 return 0;
7518
7519         /* CPUFreq governors do not accurately report the range of
7520          * CPU Frequencies they will choose from.
7521          * We recognise performance and powersave governors as
7522          * single-frequency only.
7523          */
7524         if (!strncmp(policy->governor->name, performance_governor,
7525                         strlen(performance_governor)) ||
7526                 !strncmp(policy->governor->name, powersave_governor,
7527                                 strlen(powersave_governor)))
7528                 singleFreq = 1;
7529
7530         /* Make sure that all CPUs impacted by this policy are
7531          * updated since we will only get a notification when the
7532          * user explicitly changes the policy on a CPU.
7533          */
7534         for_each_cpu(cpu, policy->cpus) {
7535                 extents = &freq_scale[cpu];
7536                 extents->max = policy->max >> SCHED_FREQSCALE_SHIFT;
7537                 extents->min = policy->min >> SCHED_FREQSCALE_SHIFT;
7538                 if (!hmp_data.freqinvar_load_scale_enabled) {
7539                         extents->curr_scale = 1024;
7540                 } else if (singleFreq) {
7541                         extents->flags |= SCHED_LOAD_FREQINVAR_SINGLEFREQ;
7542                         extents->curr_scale = 1024;
7543                 } else {
7544                         extents->flags &= ~SCHED_LOAD_FREQINVAR_SINGLEFREQ;
7545                         extents->curr_scale = cpufreq_calc_scale(extents->min,
7546                                         extents->max, policy->cur);
7547                 }
7548         }
7549
7550         return 0;
7551 }
7552
7553 static struct notifier_block cpufreq_notifier = {
7554         .notifier_call  = cpufreq_callback,
7555 };
7556 static struct notifier_block cpufreq_policy_notifier = {
7557         .notifier_call  = cpufreq_policy_callback,
7558 };
7559
7560 static int __init register_sched_cpufreq_notifier(void)
7561 {
7562         int ret = 0;
7563
7564         /* init safe defaults since there are no policies at registration */
7565         for (ret = 0; ret < CONFIG_NR_CPUS; ret++) {
7566                 /* safe defaults */
7567                 freq_scale[ret].max = 1024;
7568                 freq_scale[ret].min = 1024;
7569                 freq_scale[ret].curr_scale = 1024;
7570         }
7571
7572         pr_info("sched: registering cpufreq notifiers for scale-invariant loads\n");
7573         ret = cpufreq_register_notifier(&cpufreq_policy_notifier,
7574                         CPUFREQ_POLICY_NOTIFIER);
7575
7576         if (ret != -EINVAL)
7577                 ret = cpufreq_register_notifier(&cpufreq_notifier,
7578                         CPUFREQ_TRANSITION_NOTIFIER);
7579
7580         return ret;
7581 }
7582
7583 core_initcall(register_sched_cpufreq_notifier);
7584 #endif /* CONFIG_HMP_FREQUENCY_INVARIANT_SCALE */