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