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