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