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