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