UPSTREAM: sched/fair: Improve PELT stuff some more
[firefly-linux-kernel-4.4.55.git] / kernel / sched / fair.c
1 /*
2  * Completely Fair Scheduling (CFS) Class (SCHED_NORMAL/SCHED_BATCH)
3  *
4  *  Copyright (C) 2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
5  *
6  *  Interactivity improvements by Mike Galbraith
7  *  (C) 2007 Mike Galbraith <efault@gmx.de>
8  *
9  *  Various enhancements by Dmitry Adamushko.
10  *  (C) 2007 Dmitry Adamushko <dmitry.adamushko@gmail.com>
11  *
12  *  Group scheduling enhancements by Srivatsa Vaddagiri
13  *  Copyright IBM Corporation, 2007
14  *  Author: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
15  *
16  *  Scaled math optimizations by Thomas Gleixner
17  *  Copyright (C) 2007, Thomas Gleixner <tglx@linutronix.de>
18  *
19  *  Adaptive scheduling granularity, math enhancements by Peter Zijlstra
20  *  Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
21  */
22
23 #include <linux/latencytop.h>
24 #include <linux/sched.h>
25 #include <linux/cpumask.h>
26 #include <linux/cpuidle.h>
27 #include <linux/slab.h>
28 #include <linux/profile.h>
29 #include <linux/interrupt.h>
30 #include <linux/mempolicy.h>
31 #include <linux/migrate.h>
32 #include <linux/task_work.h>
33 #include <linux/module.h>
34
35 #include <trace/events/sched.h>
36
37 #include "sched.h"
38 #include "tune.h"
39 #include "walt.h"
40
41 /*
42  * Targeted preemption latency for CPU-bound tasks:
43  * (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
44  *
45  * NOTE: this latency value is not the same as the concept of
46  * 'timeslice length' - timeslices in CFS are of variable length
47  * and have no persistent notion like in traditional, time-slice
48  * based scheduling concepts.
49  *
50  * (to see the precise effective timeslice length of your workload,
51  *  run vmstat and monitor the context-switches (cs) field)
52  */
53 unsigned int sysctl_sched_latency = 6000000ULL;
54 unsigned int normalized_sysctl_sched_latency = 6000000ULL;
55
56 unsigned int sysctl_sched_sync_hint_enable = 1;
57 unsigned int sysctl_sched_initial_task_util = 0;
58 unsigned int sysctl_sched_cstate_aware = 1;
59
60 #ifdef CONFIG_SCHED_WALT
61 unsigned int sysctl_sched_use_walt_cpu_util = 1;
62 unsigned int sysctl_sched_use_walt_task_util = 1;
63 __read_mostly unsigned int sysctl_sched_walt_cpu_high_irqload =
64     (10 * NSEC_PER_MSEC);
65 #endif
66 /*
67  * The initial- and re-scaling of tunables is configurable
68  * (default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus))
69  *
70  * Options are:
71  * SCHED_TUNABLESCALING_NONE - unscaled, always *1
72  * SCHED_TUNABLESCALING_LOG - scaled logarithmical, *1+ilog(ncpus)
73  * SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus
74  */
75 enum sched_tunable_scaling sysctl_sched_tunable_scaling
76         = SCHED_TUNABLESCALING_LOG;
77
78 /*
79  * Minimal preemption granularity for CPU-bound tasks:
80  * (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
81  */
82 unsigned int sysctl_sched_min_granularity = 750000ULL;
83 unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
84
85 /*
86  * is kept at sysctl_sched_latency / sysctl_sched_min_granularity
87  */
88 static unsigned int sched_nr_latency = 8;
89
90 /*
91  * After fork, child runs first. If set to 0 (default) then
92  * parent will (try to) run first.
93  */
94 unsigned int sysctl_sched_child_runs_first __read_mostly;
95
96 /*
97  * SCHED_OTHER wake-up granularity.
98  * (default: 1 msec * (1 + ilog(ncpus)), units: nanoseconds)
99  *
100  * This option delays the preemption effects of decoupled workloads
101  * and reduces their over-scheduling. Synchronous workloads will still
102  * have immediate wakeup/sleep latencies.
103  */
104 unsigned int sysctl_sched_wakeup_granularity = 1000000UL;
105 unsigned int normalized_sysctl_sched_wakeup_granularity = 1000000UL;
106
107 const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
108
109 /*
110  * The exponential sliding  window over which load is averaged for shares
111  * distribution.
112  * (default: 10msec)
113  */
114 unsigned int __read_mostly sysctl_sched_shares_window = 10000000UL;
115
116 #ifdef CONFIG_CFS_BANDWIDTH
117 /*
118  * Amount of runtime to allocate from global (tg) to local (per-cfs_rq) pool
119  * each time a cfs_rq requests quota.
120  *
121  * Note: in the case that the slice exceeds the runtime remaining (either due
122  * to consumption or the quota being specified to be smaller than the slice)
123  * we will always only issue the remaining available time.
124  *
125  * default: 5 msec, units: microseconds
126   */
127 unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
128 #endif
129
130 /*
131  * The margin used when comparing utilization with CPU capacity:
132  * util * margin < capacity * 1024
133  */
134 unsigned int capacity_margin = 1280; /* ~20% */
135
136 static inline void update_load_add(struct load_weight *lw, unsigned long inc)
137 {
138         lw->weight += inc;
139         lw->inv_weight = 0;
140 }
141
142 static inline void update_load_sub(struct load_weight *lw, unsigned long dec)
143 {
144         lw->weight -= dec;
145         lw->inv_weight = 0;
146 }
147
148 static inline void update_load_set(struct load_weight *lw, unsigned long w)
149 {
150         lw->weight = w;
151         lw->inv_weight = 0;
152 }
153
154 /*
155  * Increase the granularity value when there are more CPUs,
156  * because with more CPUs the 'effective latency' as visible
157  * to users decreases. But the relationship is not linear,
158  * so pick a second-best guess by going with the log2 of the
159  * number of CPUs.
160  *
161  * This idea comes from the SD scheduler of Con Kolivas:
162  */
163 static unsigned int get_update_sysctl_factor(void)
164 {
165         unsigned int cpus = min_t(unsigned int, num_online_cpus(), 8);
166         unsigned int factor;
167
168         switch (sysctl_sched_tunable_scaling) {
169         case SCHED_TUNABLESCALING_NONE:
170                 factor = 1;
171                 break;
172         case SCHED_TUNABLESCALING_LINEAR:
173                 factor = cpus;
174                 break;
175         case SCHED_TUNABLESCALING_LOG:
176         default:
177                 factor = 1 + ilog2(cpus);
178                 break;
179         }
180
181         return factor;
182 }
183
184 static void update_sysctl(void)
185 {
186         unsigned int factor = get_update_sysctl_factor();
187
188 #define SET_SYSCTL(name) \
189         (sysctl_##name = (factor) * normalized_sysctl_##name)
190         SET_SYSCTL(sched_min_granularity);
191         SET_SYSCTL(sched_latency);
192         SET_SYSCTL(sched_wakeup_granularity);
193 #undef SET_SYSCTL
194 }
195
196 void sched_init_granularity(void)
197 {
198         update_sysctl();
199 }
200
201 #define WMULT_CONST     (~0U)
202 #define WMULT_SHIFT     32
203
204 static void __update_inv_weight(struct load_weight *lw)
205 {
206         unsigned long w;
207
208         if (likely(lw->inv_weight))
209                 return;
210
211         w = scale_load_down(lw->weight);
212
213         if (BITS_PER_LONG > 32 && unlikely(w >= WMULT_CONST))
214                 lw->inv_weight = 1;
215         else if (unlikely(!w))
216                 lw->inv_weight = WMULT_CONST;
217         else
218                 lw->inv_weight = WMULT_CONST / w;
219 }
220
221 /*
222  * delta_exec * weight / lw.weight
223  *   OR
224  * (delta_exec * (weight * lw->inv_weight)) >> WMULT_SHIFT
225  *
226  * Either weight := NICE_0_LOAD and lw \e prio_to_wmult[], in which case
227  * we're guaranteed shift stays positive because inv_weight is guaranteed to
228  * fit 32 bits, and NICE_0_LOAD gives another 10 bits; therefore shift >= 22.
229  *
230  * Or, weight =< lw.weight (because lw.weight is the runqueue weight), thus
231  * weight/lw.weight <= 1, and therefore our shift will also be positive.
232  */
233 static u64 __calc_delta(u64 delta_exec, unsigned long weight, struct load_weight *lw)
234 {
235         u64 fact = scale_load_down(weight);
236         int shift = WMULT_SHIFT;
237
238         __update_inv_weight(lw);
239
240         if (unlikely(fact >> 32)) {
241                 while (fact >> 32) {
242                         fact >>= 1;
243                         shift--;
244                 }
245         }
246
247         /* hint to use a 32x32->64 mul */
248         fact = (u64)(u32)fact * lw->inv_weight;
249
250         while (fact >> 32) {
251                 fact >>= 1;
252                 shift--;
253         }
254
255         return mul_u64_u32_shr(delta_exec, fact, shift);
256 }
257
258
259 const struct sched_class fair_sched_class;
260
261 /**************************************************************
262  * CFS operations on generic schedulable entities:
263  */
264
265 #ifdef CONFIG_FAIR_GROUP_SCHED
266
267 /* cpu runqueue to which this cfs_rq is attached */
268 static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
269 {
270         return cfs_rq->rq;
271 }
272
273 /* An entity is a task if it doesn't "own" a runqueue */
274 #define entity_is_task(se)      (!se->my_q)
275
276 static inline struct task_struct *task_of(struct sched_entity *se)
277 {
278 #ifdef CONFIG_SCHED_DEBUG
279         WARN_ON_ONCE(!entity_is_task(se));
280 #endif
281         return container_of(se, struct task_struct, se);
282 }
283
284 /* Walk up scheduling entities hierarchy */
285 #define for_each_sched_entity(se) \
286                 for (; se; se = se->parent)
287
288 static inline struct cfs_rq *task_cfs_rq(struct task_struct *p)
289 {
290         return p->se.cfs_rq;
291 }
292
293 /* runqueue on which this entity is (to be) queued */
294 static inline struct cfs_rq *cfs_rq_of(struct sched_entity *se)
295 {
296         return se->cfs_rq;
297 }
298
299 /* runqueue "owned" by this group */
300 static inline struct cfs_rq *group_cfs_rq(struct sched_entity *grp)
301 {
302         return grp->my_q;
303 }
304
305 static inline void list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
306 {
307         if (!cfs_rq->on_list) {
308                 /*
309                  * Ensure we either appear before our parent (if already
310                  * enqueued) or force our parent to appear after us when it is
311                  * enqueued.  The fact that we always enqueue bottom-up
312                  * reduces this to two cases.
313                  */
314                 if (cfs_rq->tg->parent &&
315                     cfs_rq->tg->parent->cfs_rq[cpu_of(rq_of(cfs_rq))]->on_list) {
316                         list_add_rcu(&cfs_rq->leaf_cfs_rq_list,
317                                 &rq_of(cfs_rq)->leaf_cfs_rq_list);
318                 } else {
319                         list_add_tail_rcu(&cfs_rq->leaf_cfs_rq_list,
320                                 &rq_of(cfs_rq)->leaf_cfs_rq_list);
321                 }
322
323                 cfs_rq->on_list = 1;
324         }
325 }
326
327 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
328 {
329         if (cfs_rq->on_list) {
330                 list_del_rcu(&cfs_rq->leaf_cfs_rq_list);
331                 cfs_rq->on_list = 0;
332         }
333 }
334
335 /* Iterate thr' all leaf cfs_rq's on a runqueue */
336 #define for_each_leaf_cfs_rq(rq, cfs_rq) \
337         list_for_each_entry_rcu(cfs_rq, &rq->leaf_cfs_rq_list, leaf_cfs_rq_list)
338
339 /* Do the two (enqueued) entities belong to the same group ? */
340 static inline struct cfs_rq *
341 is_same_group(struct sched_entity *se, struct sched_entity *pse)
342 {
343         if (se->cfs_rq == pse->cfs_rq)
344                 return se->cfs_rq;
345
346         return NULL;
347 }
348
349 static inline struct sched_entity *parent_entity(struct sched_entity *se)
350 {
351         return se->parent;
352 }
353
354 static void
355 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
356 {
357         int se_depth, pse_depth;
358
359         /*
360          * preemption test can be made between sibling entities who are in the
361          * same cfs_rq i.e who have a common parent. Walk up the hierarchy of
362          * both tasks until we find their ancestors who are siblings of common
363          * parent.
364          */
365
366         /* First walk up until both entities are at same depth */
367         se_depth = (*se)->depth;
368         pse_depth = (*pse)->depth;
369
370         while (se_depth > pse_depth) {
371                 se_depth--;
372                 *se = parent_entity(*se);
373         }
374
375         while (pse_depth > se_depth) {
376                 pse_depth--;
377                 *pse = parent_entity(*pse);
378         }
379
380         while (!is_same_group(*se, *pse)) {
381                 *se = parent_entity(*se);
382                 *pse = parent_entity(*pse);
383         }
384 }
385
386 #else   /* !CONFIG_FAIR_GROUP_SCHED */
387
388 static inline struct task_struct *task_of(struct sched_entity *se)
389 {
390         return container_of(se, struct task_struct, se);
391 }
392
393 static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
394 {
395         return container_of(cfs_rq, struct rq, cfs);
396 }
397
398 #define entity_is_task(se)      1
399
400 #define for_each_sched_entity(se) \
401                 for (; se; se = NULL)
402
403 static inline struct cfs_rq *task_cfs_rq(struct task_struct *p)
404 {
405         return &task_rq(p)->cfs;
406 }
407
408 static inline struct cfs_rq *cfs_rq_of(struct sched_entity *se)
409 {
410         struct task_struct *p = task_of(se);
411         struct rq *rq = task_rq(p);
412
413         return &rq->cfs;
414 }
415
416 /* runqueue "owned" by this group */
417 static inline struct cfs_rq *group_cfs_rq(struct sched_entity *grp)
418 {
419         return NULL;
420 }
421
422 static inline void list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
423 {
424 }
425
426 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
427 {
428 }
429
430 #define for_each_leaf_cfs_rq(rq, cfs_rq) \
431                 for (cfs_rq = &rq->cfs; cfs_rq; cfs_rq = NULL)
432
433 static inline struct sched_entity *parent_entity(struct sched_entity *se)
434 {
435         return NULL;
436 }
437
438 static inline void
439 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
440 {
441 }
442
443 #endif  /* CONFIG_FAIR_GROUP_SCHED */
444
445 static __always_inline
446 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec);
447
448 /**************************************************************
449  * Scheduling class tree data structure manipulation methods:
450  */
451
452 static inline u64 max_vruntime(u64 max_vruntime, u64 vruntime)
453 {
454         s64 delta = (s64)(vruntime - max_vruntime);
455         if (delta > 0)
456                 max_vruntime = vruntime;
457
458         return max_vruntime;
459 }
460
461 static inline u64 min_vruntime(u64 min_vruntime, u64 vruntime)
462 {
463         s64 delta = (s64)(vruntime - min_vruntime);
464         if (delta < 0)
465                 min_vruntime = vruntime;
466
467         return min_vruntime;
468 }
469
470 static inline int entity_before(struct sched_entity *a,
471                                 struct sched_entity *b)
472 {
473         return (s64)(a->vruntime - b->vruntime) < 0;
474 }
475
476 static void update_min_vruntime(struct cfs_rq *cfs_rq)
477 {
478         u64 vruntime = cfs_rq->min_vruntime;
479
480         if (cfs_rq->curr)
481                 vruntime = cfs_rq->curr->vruntime;
482
483         if (cfs_rq->rb_leftmost) {
484                 struct sched_entity *se = rb_entry(cfs_rq->rb_leftmost,
485                                                    struct sched_entity,
486                                                    run_node);
487
488                 if (!cfs_rq->curr)
489                         vruntime = se->vruntime;
490                 else
491                         vruntime = min_vruntime(vruntime, se->vruntime);
492         }
493
494         /* ensure we never gain time by being placed backwards. */
495         cfs_rq->min_vruntime = max_vruntime(cfs_rq->min_vruntime, vruntime);
496 #ifndef CONFIG_64BIT
497         smp_wmb();
498         cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime;
499 #endif
500 }
501
502 /*
503  * Enqueue an entity into the rb-tree:
504  */
505 static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
506 {
507         struct rb_node **link = &cfs_rq->tasks_timeline.rb_node;
508         struct rb_node *parent = NULL;
509         struct sched_entity *entry;
510         int leftmost = 1;
511
512         /*
513          * Find the right place in the rbtree:
514          */
515         while (*link) {
516                 parent = *link;
517                 entry = rb_entry(parent, struct sched_entity, run_node);
518                 /*
519                  * We dont care about collisions. Nodes with
520                  * the same key stay together.
521                  */
522                 if (entity_before(se, entry)) {
523                         link = &parent->rb_left;
524                 } else {
525                         link = &parent->rb_right;
526                         leftmost = 0;
527                 }
528         }
529
530         /*
531          * Maintain a cache of leftmost tree entries (it is frequently
532          * used):
533          */
534         if (leftmost)
535                 cfs_rq->rb_leftmost = &se->run_node;
536
537         rb_link_node(&se->run_node, parent, link);
538         rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline);
539 }
540
541 static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
542 {
543         if (cfs_rq->rb_leftmost == &se->run_node) {
544                 struct rb_node *next_node;
545
546                 next_node = rb_next(&se->run_node);
547                 cfs_rq->rb_leftmost = next_node;
548         }
549
550         rb_erase(&se->run_node, &cfs_rq->tasks_timeline);
551 }
552
553 struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
554 {
555         struct rb_node *left = cfs_rq->rb_leftmost;
556
557         if (!left)
558                 return NULL;
559
560         return rb_entry(left, struct sched_entity, run_node);
561 }
562
563 static struct sched_entity *__pick_next_entity(struct sched_entity *se)
564 {
565         struct rb_node *next = rb_next(&se->run_node);
566
567         if (!next)
568                 return NULL;
569
570         return rb_entry(next, struct sched_entity, run_node);
571 }
572
573 #ifdef CONFIG_SCHED_DEBUG
574 struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
575 {
576         struct rb_node *last = rb_last(&cfs_rq->tasks_timeline);
577
578         if (!last)
579                 return NULL;
580
581         return rb_entry(last, struct sched_entity, run_node);
582 }
583
584 /**************************************************************
585  * Scheduling class statistics methods:
586  */
587
588 int sched_proc_update_handler(struct ctl_table *table, int write,
589                 void __user *buffer, size_t *lenp,
590                 loff_t *ppos)
591 {
592         int ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
593         unsigned int factor = get_update_sysctl_factor();
594
595         if (ret || !write)
596                 return ret;
597
598         sched_nr_latency = DIV_ROUND_UP(sysctl_sched_latency,
599                                         sysctl_sched_min_granularity);
600
601 #define WRT_SYSCTL(name) \
602         (normalized_sysctl_##name = sysctl_##name / (factor))
603         WRT_SYSCTL(sched_min_granularity);
604         WRT_SYSCTL(sched_latency);
605         WRT_SYSCTL(sched_wakeup_granularity);
606 #undef WRT_SYSCTL
607
608         return 0;
609 }
610 #endif
611
612 /*
613  * delta /= w
614  */
615 static inline u64 calc_delta_fair(u64 delta, struct sched_entity *se)
616 {
617         if (unlikely(se->load.weight != NICE_0_LOAD))
618                 delta = __calc_delta(delta, NICE_0_LOAD, &se->load);
619
620         return delta;
621 }
622
623 /*
624  * The idea is to set a period in which each task runs once.
625  *
626  * When there are too many tasks (sched_nr_latency) we have to stretch
627  * this period because otherwise the slices get too small.
628  *
629  * p = (nr <= nl) ? l : l*nr/nl
630  */
631 static u64 __sched_period(unsigned long nr_running)
632 {
633         if (unlikely(nr_running > sched_nr_latency))
634                 return nr_running * sysctl_sched_min_granularity;
635         else
636                 return sysctl_sched_latency;
637 }
638
639 /*
640  * We calculate the wall-time slice from the period by taking a part
641  * proportional to the weight.
642  *
643  * s = p*P[w/rw]
644  */
645 static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se)
646 {
647         u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq);
648
649         for_each_sched_entity(se) {
650                 struct load_weight *load;
651                 struct load_weight lw;
652
653                 cfs_rq = cfs_rq_of(se);
654                 load = &cfs_rq->load;
655
656                 if (unlikely(!se->on_rq)) {
657                         lw = cfs_rq->load;
658
659                         update_load_add(&lw, se->load.weight);
660                         load = &lw;
661                 }
662                 slice = __calc_delta(slice, se->load.weight, load);
663         }
664         return slice;
665 }
666
667 /*
668  * We calculate the vruntime slice of a to-be-inserted task.
669  *
670  * vs = s/w
671  */
672 static u64 sched_vslice(struct cfs_rq *cfs_rq, struct sched_entity *se)
673 {
674         return calc_delta_fair(sched_slice(cfs_rq, se), se);
675 }
676
677 #ifdef CONFIG_SMP
678 static int select_idle_sibling(struct task_struct *p, int prev_cpu, int cpu);
679 static unsigned long task_h_load(struct task_struct *p);
680
681 /*
682  * We choose a half-life close to 1 scheduling period.
683  * Note: The tables runnable_avg_yN_inv and runnable_avg_yN_sum are
684  * dependent on this value.
685  */
686 #define LOAD_AVG_PERIOD 32
687 #define LOAD_AVG_MAX 47742 /* maximum possible load avg */
688 #define LOAD_AVG_MAX_N 345 /* number of full periods to produce LOAD_AVG_MAX */
689
690 /* Give new sched_entity start runnable values to heavy its load in infant time */
691 void init_entity_runnable_average(struct sched_entity *se)
692 {
693         struct sched_avg *sa = &se->avg;
694
695         sa->last_update_time = 0;
696         /*
697          * sched_avg's period_contrib should be strictly less then 1024, so
698          * we give it 1023 to make sure it is almost a period (1024us), and
699          * will definitely be update (after enqueue).
700          */
701         sa->period_contrib = 1023;
702         sa->load_avg = scale_load_down(se->load.weight);
703         sa->load_sum = sa->load_avg * LOAD_AVG_MAX;
704         /*
705          * In previous Android versions, we used to have:
706          *      sa->util_avg =  sched_freq() ?
707          *              sysctl_sched_initial_task_util :
708          *              scale_load_down(SCHED_LOAD_SCALE);
709          *      sa->util_sum = sa->util_avg * LOAD_AVG_MAX;
710          * However, that functionality has been moved to enqueue.
711          * It is unclear if we should restore this in enqueue.
712          */
713         /*
714          * At this point, util_avg won't be used in select_task_rq_fair anyway
715          */
716         sa->util_avg = 0;
717         sa->util_sum = 0;
718         /* when this task enqueue'ed, it will contribute to its cfs_rq's load_avg */
719 }
720
721 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq);
722 static int update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq, bool update_freq);
723 static void update_tg_load_avg(struct cfs_rq *cfs_rq, int force);
724 static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se);
725
726 /*
727  * With new tasks being created, their initial util_avgs are extrapolated
728  * based on the cfs_rq's current util_avg:
729  *
730  *   util_avg = cfs_rq->util_avg / (cfs_rq->load_avg + 1) * se.load.weight
731  *
732  * However, in many cases, the above util_avg does not give a desired
733  * value. Moreover, the sum of the util_avgs may be divergent, such
734  * as when the series is a harmonic series.
735  *
736  * To solve this problem, we also cap the util_avg of successive tasks to
737  * only 1/2 of the left utilization budget:
738  *
739  *   util_avg_cap = (1024 - cfs_rq->avg.util_avg) / 2^n
740  *
741  * where n denotes the nth task.
742  *
743  * For example, a simplest series from the beginning would be like:
744  *
745  *  task  util_avg: 512, 256, 128,  64,  32,   16,    8, ...
746  * cfs_rq util_avg: 512, 768, 896, 960, 992, 1008, 1016, ...
747  *
748  * Finally, that extrapolated util_avg is clamped to the cap (util_avg_cap)
749  * if util_avg > util_avg_cap.
750  */
751 void post_init_entity_util_avg(struct sched_entity *se)
752 {
753         struct cfs_rq *cfs_rq = cfs_rq_of(se);
754         struct sched_avg *sa = &se->avg;
755         long cap = (long)(SCHED_CAPACITY_SCALE - cfs_rq->avg.util_avg) / 2;
756         u64 now = cfs_rq_clock_task(cfs_rq);
757
758         if (cap > 0) {
759                 if (cfs_rq->avg.util_avg != 0) {
760                         sa->util_avg  = cfs_rq->avg.util_avg * se->load.weight;
761                         sa->util_avg /= (cfs_rq->avg.load_avg + 1);
762
763                         if (sa->util_avg > cap)
764                                 sa->util_avg = cap;
765                 } else {
766                         sa->util_avg = cap;
767                 }
768                 /*
769                  * If we wish to restore tuning via setting initial util,
770                  * this is where we should do it.
771                  */
772                 sa->util_sum = sa->util_avg * LOAD_AVG_MAX;
773         }
774
775         if (entity_is_task(se)) {
776                 struct task_struct *p = task_of(se);
777                 if (p->sched_class != &fair_sched_class) {
778                         /*
779                          * For !fair tasks do:
780                          *
781                         update_cfs_rq_load_avg(now, cfs_rq, false);
782                         attach_entity_load_avg(cfs_rq, se);
783                         switched_from_fair(rq, p);
784                          *
785                          * such that the next switched_to_fair() has the
786                          * expected state.
787                          */
788                         se->avg.last_update_time = now;
789                         return;
790                 }
791         }
792
793         update_cfs_rq_load_avg(now, cfs_rq, false);
794         attach_entity_load_avg(cfs_rq, se);
795         update_tg_load_avg(cfs_rq, false);
796 }
797
798 static inline unsigned long cfs_rq_runnable_load_avg(struct cfs_rq *cfs_rq);
799 static inline unsigned long cfs_rq_load_avg(struct cfs_rq *cfs_rq);
800 #else
801 void init_entity_runnable_average(struct sched_entity *se)
802 {
803 }
804 void post_init_entity_util_avg(struct sched_entity *se)
805 {
806 }
807 static void update_tg_load_avg(struct cfs_rq *cfs_rq, int force)
808 {
809 }
810 #endif /* CONFIG_SMP */
811
812 /*
813  * Update the current task's runtime statistics.
814  */
815 static void update_curr(struct cfs_rq *cfs_rq)
816 {
817         struct sched_entity *curr = cfs_rq->curr;
818         u64 now = rq_clock_task(rq_of(cfs_rq));
819         u64 delta_exec;
820
821         if (unlikely(!curr))
822                 return;
823
824         delta_exec = now - curr->exec_start;
825         if (unlikely((s64)delta_exec <= 0))
826                 return;
827
828         curr->exec_start = now;
829
830         schedstat_set(curr->statistics.exec_max,
831                       max(delta_exec, curr->statistics.exec_max));
832
833         curr->sum_exec_runtime += delta_exec;
834         schedstat_add(cfs_rq, exec_clock, delta_exec);
835
836         curr->vruntime += calc_delta_fair(delta_exec, curr);
837         update_min_vruntime(cfs_rq);
838
839         if (entity_is_task(curr)) {
840                 struct task_struct *curtask = task_of(curr);
841
842                 trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime);
843                 cpuacct_charge(curtask, delta_exec);
844                 account_group_exec_runtime(curtask, delta_exec);
845         }
846
847         account_cfs_rq_runtime(cfs_rq, delta_exec);
848 }
849
850 static void update_curr_fair(struct rq *rq)
851 {
852         update_curr(cfs_rq_of(&rq->curr->se));
853 }
854
855 static inline void
856 update_stats_wait_start(struct cfs_rq *cfs_rq, struct sched_entity *se)
857 {
858         schedstat_set(se->statistics.wait_start, rq_clock(rq_of(cfs_rq)));
859 }
860
861 /*
862  * Task is being enqueued - update stats:
863  */
864 static void update_stats_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
865 {
866         /*
867          * Are we enqueueing a waiting task? (for current tasks
868          * a dequeue/enqueue event is a NOP)
869          */
870         if (se != cfs_rq->curr)
871                 update_stats_wait_start(cfs_rq, se);
872 }
873
874 static void
875 update_stats_wait_end(struct cfs_rq *cfs_rq, struct sched_entity *se)
876 {
877         schedstat_set(se->statistics.wait_max, max(se->statistics.wait_max,
878                         rq_clock(rq_of(cfs_rq)) - se->statistics.wait_start));
879         schedstat_set(se->statistics.wait_count, se->statistics.wait_count + 1);
880         schedstat_set(se->statistics.wait_sum, se->statistics.wait_sum +
881                         rq_clock(rq_of(cfs_rq)) - se->statistics.wait_start);
882 #ifdef CONFIG_SCHEDSTATS
883         if (entity_is_task(se)) {
884                 trace_sched_stat_wait(task_of(se),
885                         rq_clock(rq_of(cfs_rq)) - se->statistics.wait_start);
886         }
887 #endif
888         schedstat_set(se->statistics.wait_start, 0);
889 }
890
891 static inline void
892 update_stats_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
893 {
894         /*
895          * Mark the end of the wait period if dequeueing a
896          * waiting task:
897          */
898         if (se != cfs_rq->curr)
899                 update_stats_wait_end(cfs_rq, se);
900 }
901
902 /*
903  * We are picking a new current task - update its stats:
904  */
905 static inline void
906 update_stats_curr_start(struct cfs_rq *cfs_rq, struct sched_entity *se)
907 {
908         /*
909          * We are starting a new run period:
910          */
911         se->exec_start = rq_clock_task(rq_of(cfs_rq));
912 }
913
914 /**************************************************
915  * Scheduling class queueing methods:
916  */
917
918 #ifdef CONFIG_NUMA_BALANCING
919 /*
920  * Approximate time to scan a full NUMA task in ms. The task scan period is
921  * calculated based on the tasks virtual memory size and
922  * numa_balancing_scan_size.
923  */
924 unsigned int sysctl_numa_balancing_scan_period_min = 1000;
925 unsigned int sysctl_numa_balancing_scan_period_max = 60000;
926
927 /* Portion of address space to scan in MB */
928 unsigned int sysctl_numa_balancing_scan_size = 256;
929
930 /* Scan @scan_size MB every @scan_period after an initial @scan_delay in ms */
931 unsigned int sysctl_numa_balancing_scan_delay = 1000;
932
933 static unsigned int task_nr_scan_windows(struct task_struct *p)
934 {
935         unsigned long rss = 0;
936         unsigned long nr_scan_pages;
937
938         /*
939          * Calculations based on RSS as non-present and empty pages are skipped
940          * by the PTE scanner and NUMA hinting faults should be trapped based
941          * on resident pages
942          */
943         nr_scan_pages = sysctl_numa_balancing_scan_size << (20 - PAGE_SHIFT);
944         rss = get_mm_rss(p->mm);
945         if (!rss)
946                 rss = nr_scan_pages;
947
948         rss = round_up(rss, nr_scan_pages);
949         return rss / nr_scan_pages;
950 }
951
952 /* For sanitys sake, never scan more PTEs than MAX_SCAN_WINDOW MB/sec. */
953 #define MAX_SCAN_WINDOW 2560
954
955 static unsigned int task_scan_min(struct task_struct *p)
956 {
957         unsigned int scan_size = READ_ONCE(sysctl_numa_balancing_scan_size);
958         unsigned int scan, floor;
959         unsigned int windows = 1;
960
961         if (scan_size < MAX_SCAN_WINDOW)
962                 windows = MAX_SCAN_WINDOW / scan_size;
963         floor = 1000 / windows;
964
965         scan = sysctl_numa_balancing_scan_period_min / task_nr_scan_windows(p);
966         return max_t(unsigned int, floor, scan);
967 }
968
969 static unsigned int task_scan_max(struct task_struct *p)
970 {
971         unsigned int smin = task_scan_min(p);
972         unsigned int smax;
973
974         /* Watch for min being lower than max due to floor calculations */
975         smax = sysctl_numa_balancing_scan_period_max / task_nr_scan_windows(p);
976         return max(smin, smax);
977 }
978
979 static void account_numa_enqueue(struct rq *rq, struct task_struct *p)
980 {
981         rq->nr_numa_running += (p->numa_preferred_nid != -1);
982         rq->nr_preferred_running += (p->numa_preferred_nid == task_node(p));
983 }
984
985 static void account_numa_dequeue(struct rq *rq, struct task_struct *p)
986 {
987         rq->nr_numa_running -= (p->numa_preferred_nid != -1);
988         rq->nr_preferred_running -= (p->numa_preferred_nid == task_node(p));
989 }
990
991 struct numa_group {
992         atomic_t refcount;
993
994         spinlock_t lock; /* nr_tasks, tasks */
995         int nr_tasks;
996         pid_t gid;
997
998         struct rcu_head rcu;
999         nodemask_t active_nodes;
1000         unsigned long total_faults;
1001         /*
1002          * Faults_cpu is used to decide whether memory should move
1003          * towards the CPU. As a consequence, these stats are weighted
1004          * more by CPU use than by memory faults.
1005          */
1006         unsigned long *faults_cpu;
1007         unsigned long faults[0];
1008 };
1009
1010 /* Shared or private faults. */
1011 #define NR_NUMA_HINT_FAULT_TYPES 2
1012
1013 /* Memory and CPU locality */
1014 #define NR_NUMA_HINT_FAULT_STATS (NR_NUMA_HINT_FAULT_TYPES * 2)
1015
1016 /* Averaged statistics, and temporary buffers. */
1017 #define NR_NUMA_HINT_FAULT_BUCKETS (NR_NUMA_HINT_FAULT_STATS * 2)
1018
1019 pid_t task_numa_group_id(struct task_struct *p)
1020 {
1021         return p->numa_group ? p->numa_group->gid : 0;
1022 }
1023
1024 /*
1025  * The averaged statistics, shared & private, memory & cpu,
1026  * occupy the first half of the array. The second half of the
1027  * array is for current counters, which are averaged into the
1028  * first set by task_numa_placement.
1029  */
1030 static inline int task_faults_idx(enum numa_faults_stats s, int nid, int priv)
1031 {
1032         return NR_NUMA_HINT_FAULT_TYPES * (s * nr_node_ids + nid) + priv;
1033 }
1034
1035 static inline unsigned long task_faults(struct task_struct *p, int nid)
1036 {
1037         if (!p->numa_faults)
1038                 return 0;
1039
1040         return p->numa_faults[task_faults_idx(NUMA_MEM, nid, 0)] +
1041                 p->numa_faults[task_faults_idx(NUMA_MEM, nid, 1)];
1042 }
1043
1044 static inline unsigned long group_faults(struct task_struct *p, int nid)
1045 {
1046         if (!p->numa_group)
1047                 return 0;
1048
1049         return p->numa_group->faults[task_faults_idx(NUMA_MEM, nid, 0)] +
1050                 p->numa_group->faults[task_faults_idx(NUMA_MEM, nid, 1)];
1051 }
1052
1053 static inline unsigned long group_faults_cpu(struct numa_group *group, int nid)
1054 {
1055         return group->faults_cpu[task_faults_idx(NUMA_MEM, nid, 0)] +
1056                 group->faults_cpu[task_faults_idx(NUMA_MEM, nid, 1)];
1057 }
1058
1059 /* Handle placement on systems where not all nodes are directly connected. */
1060 static unsigned long score_nearby_nodes(struct task_struct *p, int nid,
1061                                         int maxdist, bool task)
1062 {
1063         unsigned long score = 0;
1064         int node;
1065
1066         /*
1067          * All nodes are directly connected, and the same distance
1068          * from each other. No need for fancy placement algorithms.
1069          */
1070         if (sched_numa_topology_type == NUMA_DIRECT)
1071                 return 0;
1072
1073         /*
1074          * This code is called for each node, introducing N^2 complexity,
1075          * which should be ok given the number of nodes rarely exceeds 8.
1076          */
1077         for_each_online_node(node) {
1078                 unsigned long faults;
1079                 int dist = node_distance(nid, node);
1080
1081                 /*
1082                  * The furthest away nodes in the system are not interesting
1083                  * for placement; nid was already counted.
1084                  */
1085                 if (dist == sched_max_numa_distance || node == nid)
1086                         continue;
1087
1088                 /*
1089                  * On systems with a backplane NUMA topology, compare groups
1090                  * of nodes, and move tasks towards the group with the most
1091                  * memory accesses. When comparing two nodes at distance
1092                  * "hoplimit", only nodes closer by than "hoplimit" are part
1093                  * of each group. Skip other nodes.
1094                  */
1095                 if (sched_numa_topology_type == NUMA_BACKPLANE &&
1096                                         dist > maxdist)
1097                         continue;
1098
1099                 /* Add up the faults from nearby nodes. */
1100                 if (task)
1101                         faults = task_faults(p, node);
1102                 else
1103                         faults = group_faults(p, node);
1104
1105                 /*
1106                  * On systems with a glueless mesh NUMA topology, there are
1107                  * no fixed "groups of nodes". Instead, nodes that are not
1108                  * directly connected bounce traffic through intermediate
1109                  * nodes; a numa_group can occupy any set of nodes.
1110                  * The further away a node is, the less the faults count.
1111                  * This seems to result in good task placement.
1112                  */
1113                 if (sched_numa_topology_type == NUMA_GLUELESS_MESH) {
1114                         faults *= (sched_max_numa_distance - dist);
1115                         faults /= (sched_max_numa_distance - LOCAL_DISTANCE);
1116                 }
1117
1118                 score += faults;
1119         }
1120
1121         return score;
1122 }
1123
1124 /*
1125  * These return the fraction of accesses done by a particular task, or
1126  * task group, on a particular numa node.  The group weight is given a
1127  * larger multiplier, in order to group tasks together that are almost
1128  * evenly spread out between numa nodes.
1129  */
1130 static inline unsigned long task_weight(struct task_struct *p, int nid,
1131                                         int dist)
1132 {
1133         unsigned long faults, total_faults;
1134
1135         if (!p->numa_faults)
1136                 return 0;
1137
1138         total_faults = p->total_numa_faults;
1139
1140         if (!total_faults)
1141                 return 0;
1142
1143         faults = task_faults(p, nid);
1144         faults += score_nearby_nodes(p, nid, dist, true);
1145
1146         return 1000 * faults / total_faults;
1147 }
1148
1149 static inline unsigned long group_weight(struct task_struct *p, int nid,
1150                                          int dist)
1151 {
1152         unsigned long faults, total_faults;
1153
1154         if (!p->numa_group)
1155                 return 0;
1156
1157         total_faults = p->numa_group->total_faults;
1158
1159         if (!total_faults)
1160                 return 0;
1161
1162         faults = group_faults(p, nid);
1163         faults += score_nearby_nodes(p, nid, dist, false);
1164
1165         return 1000 * faults / total_faults;
1166 }
1167
1168 bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
1169                                 int src_nid, int dst_cpu)
1170 {
1171         struct numa_group *ng = p->numa_group;
1172         int dst_nid = cpu_to_node(dst_cpu);
1173         int last_cpupid, this_cpupid;
1174
1175         this_cpupid = cpu_pid_to_cpupid(dst_cpu, current->pid);
1176
1177         /*
1178          * Multi-stage node selection is used in conjunction with a periodic
1179          * migration fault to build a temporal task<->page relation. By using
1180          * a two-stage filter we remove short/unlikely relations.
1181          *
1182          * Using P(p) ~ n_p / n_t as per frequentist probability, we can equate
1183          * a task's usage of a particular page (n_p) per total usage of this
1184          * page (n_t) (in a given time-span) to a probability.
1185          *
1186          * Our periodic faults will sample this probability and getting the
1187          * same result twice in a row, given these samples are fully
1188          * independent, is then given by P(n)^2, provided our sample period
1189          * is sufficiently short compared to the usage pattern.
1190          *
1191          * This quadric squishes small probabilities, making it less likely we
1192          * act on an unlikely task<->page relation.
1193          */
1194         last_cpupid = page_cpupid_xchg_last(page, this_cpupid);
1195         if (!cpupid_pid_unset(last_cpupid) &&
1196                                 cpupid_to_nid(last_cpupid) != dst_nid)
1197                 return false;
1198
1199         /* Always allow migrate on private faults */
1200         if (cpupid_match_pid(p, last_cpupid))
1201                 return true;
1202
1203         /* A shared fault, but p->numa_group has not been set up yet. */
1204         if (!ng)
1205                 return true;
1206
1207         /*
1208          * Do not migrate if the destination is not a node that
1209          * is actively used by this numa group.
1210          */
1211         if (!node_isset(dst_nid, ng->active_nodes))
1212                 return false;
1213
1214         /*
1215          * Source is a node that is not actively used by this
1216          * numa group, while the destination is. Migrate.
1217          */
1218         if (!node_isset(src_nid, ng->active_nodes))
1219                 return true;
1220
1221         /*
1222          * Both source and destination are nodes in active
1223          * use by this numa group. Maximize memory bandwidth
1224          * by migrating from more heavily used groups, to less
1225          * heavily used ones, spreading the load around.
1226          * Use a 1/4 hysteresis to avoid spurious page movement.
1227          */
1228         return group_faults(p, dst_nid) < (group_faults(p, src_nid) * 3 / 4);
1229 }
1230
1231 static unsigned long weighted_cpuload(const int cpu);
1232 static unsigned long source_load(int cpu, int type);
1233 static unsigned long target_load(int cpu, int type);
1234 static unsigned long capacity_of(int cpu);
1235 static long effective_load(struct task_group *tg, int cpu, long wl, long wg);
1236
1237 /* Cached statistics for all CPUs within a node */
1238 struct numa_stats {
1239         unsigned long nr_running;
1240         unsigned long load;
1241
1242         /* Total compute capacity of CPUs on a node */
1243         unsigned long compute_capacity;
1244
1245         /* Approximate capacity in terms of runnable tasks on a node */
1246         unsigned long task_capacity;
1247         int has_free_capacity;
1248 };
1249
1250 /*
1251  * XXX borrowed from update_sg_lb_stats
1252  */
1253 static void update_numa_stats(struct numa_stats *ns, int nid)
1254 {
1255         int smt, cpu, cpus = 0;
1256         unsigned long capacity;
1257
1258         memset(ns, 0, sizeof(*ns));
1259         for_each_cpu(cpu, cpumask_of_node(nid)) {
1260                 struct rq *rq = cpu_rq(cpu);
1261
1262                 ns->nr_running += rq->nr_running;
1263                 ns->load += weighted_cpuload(cpu);
1264                 ns->compute_capacity += capacity_of(cpu);
1265
1266                 cpus++;
1267         }
1268
1269         /*
1270          * If we raced with hotplug and there are no CPUs left in our mask
1271          * the @ns structure is NULL'ed and task_numa_compare() will
1272          * not find this node attractive.
1273          *
1274          * We'll either bail at !has_free_capacity, or we'll detect a huge
1275          * imbalance and bail there.
1276          */
1277         if (!cpus)
1278                 return;
1279
1280         /* smt := ceil(cpus / capacity), assumes: 1 < smt_power < 2 */
1281         smt = DIV_ROUND_UP(SCHED_CAPACITY_SCALE * cpus, ns->compute_capacity);
1282         capacity = cpus / smt; /* cores */
1283
1284         ns->task_capacity = min_t(unsigned, capacity,
1285                 DIV_ROUND_CLOSEST(ns->compute_capacity, SCHED_CAPACITY_SCALE));
1286         ns->has_free_capacity = (ns->nr_running < ns->task_capacity);
1287 }
1288
1289 struct task_numa_env {
1290         struct task_struct *p;
1291
1292         int src_cpu, src_nid;
1293         int dst_cpu, dst_nid;
1294
1295         struct numa_stats src_stats, dst_stats;
1296
1297         int imbalance_pct;
1298         int dist;
1299
1300         struct task_struct *best_task;
1301         long best_imp;
1302         int best_cpu;
1303 };
1304
1305 static void task_numa_assign(struct task_numa_env *env,
1306                              struct task_struct *p, long imp)
1307 {
1308         if (env->best_task)
1309                 put_task_struct(env->best_task);
1310
1311         env->best_task = p;
1312         env->best_imp = imp;
1313         env->best_cpu = env->dst_cpu;
1314 }
1315
1316 static bool load_too_imbalanced(long src_load, long dst_load,
1317                                 struct task_numa_env *env)
1318 {
1319         long imb, old_imb;
1320         long orig_src_load, orig_dst_load;
1321         long src_capacity, dst_capacity;
1322
1323         /*
1324          * The load is corrected for the CPU capacity available on each node.
1325          *
1326          * src_load        dst_load
1327          * ------------ vs ---------
1328          * src_capacity    dst_capacity
1329          */
1330         src_capacity = env->src_stats.compute_capacity;
1331         dst_capacity = env->dst_stats.compute_capacity;
1332
1333         /* We care about the slope of the imbalance, not the direction. */
1334         if (dst_load < src_load)
1335                 swap(dst_load, src_load);
1336
1337         /* Is the difference below the threshold? */
1338         imb = dst_load * src_capacity * 100 -
1339               src_load * dst_capacity * env->imbalance_pct;
1340         if (imb <= 0)
1341                 return false;
1342
1343         /*
1344          * The imbalance is above the allowed threshold.
1345          * Compare it with the old imbalance.
1346          */
1347         orig_src_load = env->src_stats.load;
1348         orig_dst_load = env->dst_stats.load;
1349
1350         if (orig_dst_load < orig_src_load)
1351                 swap(orig_dst_load, orig_src_load);
1352
1353         old_imb = orig_dst_load * src_capacity * 100 -
1354                   orig_src_load * dst_capacity * env->imbalance_pct;
1355
1356         /* Would this change make things worse? */
1357         return (imb > old_imb);
1358 }
1359
1360 /*
1361  * This checks if the overall compute and NUMA accesses of the system would
1362  * be improved if the source tasks was migrated to the target dst_cpu taking
1363  * into account that it might be best if task running on the dst_cpu should
1364  * be exchanged with the source task
1365  */
1366 static void task_numa_compare(struct task_numa_env *env,
1367                               long taskimp, long groupimp)
1368 {
1369         struct rq *src_rq = cpu_rq(env->src_cpu);
1370         struct rq *dst_rq = cpu_rq(env->dst_cpu);
1371         struct task_struct *cur;
1372         long src_load, dst_load;
1373         long load;
1374         long imp = env->p->numa_group ? groupimp : taskimp;
1375         long moveimp = imp;
1376         int dist = env->dist;
1377         bool assigned = false;
1378
1379         rcu_read_lock();
1380
1381         raw_spin_lock_irq(&dst_rq->lock);
1382         cur = dst_rq->curr;
1383         /*
1384          * No need to move the exiting task or idle task.
1385          */
1386         if ((cur->flags & PF_EXITING) || is_idle_task(cur))
1387                 cur = NULL;
1388         else {
1389                 /*
1390                  * The task_struct must be protected here to protect the
1391                  * p->numa_faults access in the task_weight since the
1392                  * numa_faults could already be freed in the following path:
1393                  * finish_task_switch()
1394                  *     --> put_task_struct()
1395                  *         --> __put_task_struct()
1396                  *             --> task_numa_free()
1397                  */
1398                 get_task_struct(cur);
1399         }
1400
1401         raw_spin_unlock_irq(&dst_rq->lock);
1402
1403         /*
1404          * Because we have preemption enabled we can get migrated around and
1405          * end try selecting ourselves (current == env->p) as a swap candidate.
1406          */
1407         if (cur == env->p)
1408                 goto unlock;
1409
1410         /*
1411          * "imp" is the fault differential for the source task between the
1412          * source and destination node. Calculate the total differential for
1413          * the source task and potential destination task. The more negative
1414          * the value is, the more rmeote accesses that would be expected to
1415          * be incurred if the tasks were swapped.
1416          */
1417         if (cur) {
1418                 /* Skip this swap candidate if cannot move to the source cpu */
1419                 if (!cpumask_test_cpu(env->src_cpu, tsk_cpus_allowed(cur)))
1420                         goto unlock;
1421
1422                 /*
1423                  * If dst and source tasks are in the same NUMA group, or not
1424                  * in any group then look only at task weights.
1425                  */
1426                 if (cur->numa_group == env->p->numa_group) {
1427                         imp = taskimp + task_weight(cur, env->src_nid, dist) -
1428                               task_weight(cur, env->dst_nid, dist);
1429                         /*
1430                          * Add some hysteresis to prevent swapping the
1431                          * tasks within a group over tiny differences.
1432                          */
1433                         if (cur->numa_group)
1434                                 imp -= imp/16;
1435                 } else {
1436                         /*
1437                          * Compare the group weights. If a task is all by
1438                          * itself (not part of a group), use the task weight
1439                          * instead.
1440                          */
1441                         if (cur->numa_group)
1442                                 imp += group_weight(cur, env->src_nid, dist) -
1443                                        group_weight(cur, env->dst_nid, dist);
1444                         else
1445                                 imp += task_weight(cur, env->src_nid, dist) -
1446                                        task_weight(cur, env->dst_nid, dist);
1447                 }
1448         }
1449
1450         if (imp <= env->best_imp && moveimp <= env->best_imp)
1451                 goto unlock;
1452
1453         if (!cur) {
1454                 /* Is there capacity at our destination? */
1455                 if (env->src_stats.nr_running <= env->src_stats.task_capacity &&
1456                     !env->dst_stats.has_free_capacity)
1457                         goto unlock;
1458
1459                 goto balance;
1460         }
1461
1462         /* Balance doesn't matter much if we're running a task per cpu */
1463         if (imp > env->best_imp && src_rq->nr_running == 1 &&
1464                         dst_rq->nr_running == 1)
1465                 goto assign;
1466
1467         /*
1468          * In the overloaded case, try and keep the load balanced.
1469          */
1470 balance:
1471         load = task_h_load(env->p);
1472         dst_load = env->dst_stats.load + load;
1473         src_load = env->src_stats.load - load;
1474
1475         if (moveimp > imp && moveimp > env->best_imp) {
1476                 /*
1477                  * If the improvement from just moving env->p direction is
1478                  * better than swapping tasks around, check if a move is
1479                  * possible. Store a slightly smaller score than moveimp,
1480                  * so an actually idle CPU will win.
1481                  */
1482                 if (!load_too_imbalanced(src_load, dst_load, env)) {
1483                         imp = moveimp - 1;
1484                         put_task_struct(cur);
1485                         cur = NULL;
1486                         goto assign;
1487                 }
1488         }
1489
1490         if (imp <= env->best_imp)
1491                 goto unlock;
1492
1493         if (cur) {
1494                 load = task_h_load(cur);
1495                 dst_load -= load;
1496                 src_load += load;
1497         }
1498
1499         if (load_too_imbalanced(src_load, dst_load, env))
1500                 goto unlock;
1501
1502         /*
1503          * One idle CPU per node is evaluated for a task numa move.
1504          * Call select_idle_sibling to maybe find a better one.
1505          */
1506         if (!cur)
1507                 env->dst_cpu = select_idle_sibling(env->p, env->src_cpu,
1508                                                    env->dst_cpu);
1509
1510 assign:
1511         assigned = true;
1512         task_numa_assign(env, cur, imp);
1513 unlock:
1514         rcu_read_unlock();
1515         /*
1516          * The dst_rq->curr isn't assigned. The protection for task_struct is
1517          * finished.
1518          */
1519         if (cur && !assigned)
1520                 put_task_struct(cur);
1521 }
1522
1523 static void task_numa_find_cpu(struct task_numa_env *env,
1524                                 long taskimp, long groupimp)
1525 {
1526         int cpu;
1527
1528         for_each_cpu(cpu, cpumask_of_node(env->dst_nid)) {
1529                 /* Skip this CPU if the source task cannot migrate */
1530                 if (!cpumask_test_cpu(cpu, tsk_cpus_allowed(env->p)))
1531                         continue;
1532
1533                 env->dst_cpu = cpu;
1534                 task_numa_compare(env, taskimp, groupimp);
1535         }
1536 }
1537
1538 /* Only move tasks to a NUMA node less busy than the current node. */
1539 static bool numa_has_capacity(struct task_numa_env *env)
1540 {
1541         struct numa_stats *src = &env->src_stats;
1542         struct numa_stats *dst = &env->dst_stats;
1543
1544         if (src->has_free_capacity && !dst->has_free_capacity)
1545                 return false;
1546
1547         /*
1548          * Only consider a task move if the source has a higher load
1549          * than the destination, corrected for CPU capacity on each node.
1550          *
1551          *      src->load                dst->load
1552          * --------------------- vs ---------------------
1553          * src->compute_capacity    dst->compute_capacity
1554          */
1555         if (src->load * dst->compute_capacity * env->imbalance_pct >
1556
1557             dst->load * src->compute_capacity * 100)
1558                 return true;
1559
1560         return false;
1561 }
1562
1563 static int task_numa_migrate(struct task_struct *p)
1564 {
1565         struct task_numa_env env = {
1566                 .p = p,
1567
1568                 .src_cpu = task_cpu(p),
1569                 .src_nid = task_node(p),
1570
1571                 .imbalance_pct = 112,
1572
1573                 .best_task = NULL,
1574                 .best_imp = 0,
1575                 .best_cpu = -1
1576         };
1577         struct sched_domain *sd;
1578         unsigned long taskweight, groupweight;
1579         int nid, ret, dist;
1580         long taskimp, groupimp;
1581
1582         /*
1583          * Pick the lowest SD_NUMA domain, as that would have the smallest
1584          * imbalance and would be the first to start moving tasks about.
1585          *
1586          * And we want to avoid any moving of tasks about, as that would create
1587          * random movement of tasks -- counter the numa conditions we're trying
1588          * to satisfy here.
1589          */
1590         rcu_read_lock();
1591         sd = rcu_dereference(per_cpu(sd_numa, env.src_cpu));
1592         if (sd)
1593                 env.imbalance_pct = 100 + (sd->imbalance_pct - 100) / 2;
1594         rcu_read_unlock();
1595
1596         /*
1597          * Cpusets can break the scheduler domain tree into smaller
1598          * balance domains, some of which do not cross NUMA boundaries.
1599          * Tasks that are "trapped" in such domains cannot be migrated
1600          * elsewhere, so there is no point in (re)trying.
1601          */
1602         if (unlikely(!sd)) {
1603                 p->numa_preferred_nid = task_node(p);
1604                 return -EINVAL;
1605         }
1606
1607         env.dst_nid = p->numa_preferred_nid;
1608         dist = env.dist = node_distance(env.src_nid, env.dst_nid);
1609         taskweight = task_weight(p, env.src_nid, dist);
1610         groupweight = group_weight(p, env.src_nid, dist);
1611         update_numa_stats(&env.src_stats, env.src_nid);
1612         taskimp = task_weight(p, env.dst_nid, dist) - taskweight;
1613         groupimp = group_weight(p, env.dst_nid, dist) - groupweight;
1614         update_numa_stats(&env.dst_stats, env.dst_nid);
1615
1616         /* Try to find a spot on the preferred nid. */
1617         if (numa_has_capacity(&env))
1618                 task_numa_find_cpu(&env, taskimp, groupimp);
1619
1620         /*
1621          * Look at other nodes in these cases:
1622          * - there is no space available on the preferred_nid
1623          * - the task is part of a numa_group that is interleaved across
1624          *   multiple NUMA nodes; in order to better consolidate the group,
1625          *   we need to check other locations.
1626          */
1627         if (env.best_cpu == -1 || (p->numa_group &&
1628                         nodes_weight(p->numa_group->active_nodes) > 1)) {
1629                 for_each_online_node(nid) {
1630                         if (nid == env.src_nid || nid == p->numa_preferred_nid)
1631                                 continue;
1632
1633                         dist = node_distance(env.src_nid, env.dst_nid);
1634                         if (sched_numa_topology_type == NUMA_BACKPLANE &&
1635                                                 dist != env.dist) {
1636                                 taskweight = task_weight(p, env.src_nid, dist);
1637                                 groupweight = group_weight(p, env.src_nid, dist);
1638                         }
1639
1640                         /* Only consider nodes where both task and groups benefit */
1641                         taskimp = task_weight(p, nid, dist) - taskweight;
1642                         groupimp = group_weight(p, nid, dist) - groupweight;
1643                         if (taskimp < 0 && groupimp < 0)
1644                                 continue;
1645
1646                         env.dist = dist;
1647                         env.dst_nid = nid;
1648                         update_numa_stats(&env.dst_stats, env.dst_nid);
1649                         if (numa_has_capacity(&env))
1650                                 task_numa_find_cpu(&env, taskimp, groupimp);
1651                 }
1652         }
1653
1654         /*
1655          * If the task is part of a workload that spans multiple NUMA nodes,
1656          * and is migrating into one of the workload's active nodes, remember
1657          * this node as the task's preferred numa node, so the workload can
1658          * settle down.
1659          * A task that migrated to a second choice node will be better off
1660          * trying for a better one later. Do not set the preferred node here.
1661          */
1662         if (p->numa_group) {
1663                 if (env.best_cpu == -1)
1664                         nid = env.src_nid;
1665                 else
1666                         nid = env.dst_nid;
1667
1668                 if (node_isset(nid, p->numa_group->active_nodes))
1669                         sched_setnuma(p, env.dst_nid);
1670         }
1671
1672         /* No better CPU than the current one was found. */
1673         if (env.best_cpu == -1)
1674                 return -EAGAIN;
1675
1676         /*
1677          * Reset the scan period if the task is being rescheduled on an
1678          * alternative node to recheck if the tasks is now properly placed.
1679          */
1680         p->numa_scan_period = task_scan_min(p);
1681
1682         if (env.best_task == NULL) {
1683                 ret = migrate_task_to(p, env.best_cpu);
1684                 if (ret != 0)
1685                         trace_sched_stick_numa(p, env.src_cpu, env.best_cpu);
1686                 return ret;
1687         }
1688
1689         ret = migrate_swap(p, env.best_task);
1690         if (ret != 0)
1691                 trace_sched_stick_numa(p, env.src_cpu, task_cpu(env.best_task));
1692         put_task_struct(env.best_task);
1693         return ret;
1694 }
1695
1696 /* Attempt to migrate a task to a CPU on the preferred node. */
1697 static void numa_migrate_preferred(struct task_struct *p)
1698 {
1699         unsigned long interval = HZ;
1700
1701         /* This task has no NUMA fault statistics yet */
1702         if (unlikely(p->numa_preferred_nid == -1 || !p->numa_faults))
1703                 return;
1704
1705         /* Periodically retry migrating the task to the preferred node */
1706         interval = min(interval, msecs_to_jiffies(p->numa_scan_period) / 16);
1707         p->numa_migrate_retry = jiffies + interval;
1708
1709         /* Success if task is already running on preferred CPU */
1710         if (task_node(p) == p->numa_preferred_nid)
1711                 return;
1712
1713         /* Otherwise, try migrate to a CPU on the preferred node */
1714         task_numa_migrate(p);
1715 }
1716
1717 /*
1718  * Find the nodes on which the workload is actively running. We do this by
1719  * tracking the nodes from which NUMA hinting faults are triggered. This can
1720  * be different from the set of nodes where the workload's memory is currently
1721  * located.
1722  *
1723  * The bitmask is used to make smarter decisions on when to do NUMA page
1724  * migrations, To prevent flip-flopping, and excessive page migrations, nodes
1725  * are added when they cause over 6/16 of the maximum number of faults, but
1726  * only removed when they drop below 3/16.
1727  */
1728 static void update_numa_active_node_mask(struct numa_group *numa_group)
1729 {
1730         unsigned long faults, max_faults = 0;
1731         int nid;
1732
1733         for_each_online_node(nid) {
1734                 faults = group_faults_cpu(numa_group, nid);
1735                 if (faults > max_faults)
1736                         max_faults = faults;
1737         }
1738
1739         for_each_online_node(nid) {
1740                 faults = group_faults_cpu(numa_group, nid);
1741                 if (!node_isset(nid, numa_group->active_nodes)) {
1742                         if (faults > max_faults * 6 / 16)
1743                                 node_set(nid, numa_group->active_nodes);
1744                 } else if (faults < max_faults * 3 / 16)
1745                         node_clear(nid, numa_group->active_nodes);
1746         }
1747 }
1748
1749 /*
1750  * When adapting the scan rate, the period is divided into NUMA_PERIOD_SLOTS
1751  * increments. The more local the fault statistics are, the higher the scan
1752  * period will be for the next scan window. If local/(local+remote) ratio is
1753  * below NUMA_PERIOD_THRESHOLD (where range of ratio is 1..NUMA_PERIOD_SLOTS)
1754  * the scan period will decrease. Aim for 70% local accesses.
1755  */
1756 #define NUMA_PERIOD_SLOTS 10
1757 #define NUMA_PERIOD_THRESHOLD 7
1758
1759 /*
1760  * Increase the scan period (slow down scanning) if the majority of
1761  * our memory is already on our local node, or if the majority of
1762  * the page accesses are shared with other processes.
1763  * Otherwise, decrease the scan period.
1764  */
1765 static void update_task_scan_period(struct task_struct *p,
1766                         unsigned long shared, unsigned long private)
1767 {
1768         unsigned int period_slot;
1769         int ratio;
1770         int diff;
1771
1772         unsigned long remote = p->numa_faults_locality[0];
1773         unsigned long local = p->numa_faults_locality[1];
1774
1775         /*
1776          * If there were no record hinting faults then either the task is
1777          * completely idle or all activity is areas that are not of interest
1778          * to automatic numa balancing. Related to that, if there were failed
1779          * migration then it implies we are migrating too quickly or the local
1780          * node is overloaded. In either case, scan slower
1781          */
1782         if (local + shared == 0 || p->numa_faults_locality[2]) {
1783                 p->numa_scan_period = min(p->numa_scan_period_max,
1784                         p->numa_scan_period << 1);
1785
1786                 p->mm->numa_next_scan = jiffies +
1787                         msecs_to_jiffies(p->numa_scan_period);
1788
1789                 return;
1790         }
1791
1792         /*
1793          * Prepare to scale scan period relative to the current period.
1794          *       == NUMA_PERIOD_THRESHOLD scan period stays the same
1795          *       <  NUMA_PERIOD_THRESHOLD scan period decreases (scan faster)
1796          *       >= NUMA_PERIOD_THRESHOLD scan period increases (scan slower)
1797          */
1798         period_slot = DIV_ROUND_UP(p->numa_scan_period, NUMA_PERIOD_SLOTS);
1799         ratio = (local * NUMA_PERIOD_SLOTS) / (local + remote);
1800         if (ratio >= NUMA_PERIOD_THRESHOLD) {
1801                 int slot = ratio - NUMA_PERIOD_THRESHOLD;
1802                 if (!slot)
1803                         slot = 1;
1804                 diff = slot * period_slot;
1805         } else {
1806                 diff = -(NUMA_PERIOD_THRESHOLD - ratio) * period_slot;
1807
1808                 /*
1809                  * Scale scan rate increases based on sharing. There is an
1810                  * inverse relationship between the degree of sharing and
1811                  * the adjustment made to the scanning period. Broadly
1812                  * speaking the intent is that there is little point
1813                  * scanning faster if shared accesses dominate as it may
1814                  * simply bounce migrations uselessly
1815                  */
1816                 ratio = DIV_ROUND_UP(private * NUMA_PERIOD_SLOTS, (private + shared + 1));
1817                 diff = (diff * ratio) / NUMA_PERIOD_SLOTS;
1818         }
1819
1820         p->numa_scan_period = clamp(p->numa_scan_period + diff,
1821                         task_scan_min(p), task_scan_max(p));
1822         memset(p->numa_faults_locality, 0, sizeof(p->numa_faults_locality));
1823 }
1824
1825 /*
1826  * Get the fraction of time the task has been running since the last
1827  * NUMA placement cycle. The scheduler keeps similar statistics, but
1828  * decays those on a 32ms period, which is orders of magnitude off
1829  * from the dozens-of-seconds NUMA balancing period. Use the scheduler
1830  * stats only if the task is so new there are no NUMA statistics yet.
1831  */
1832 static u64 numa_get_avg_runtime(struct task_struct *p, u64 *period)
1833 {
1834         u64 runtime, delta, now;
1835         /* Use the start of this time slice to avoid calculations. */
1836         now = p->se.exec_start;
1837         runtime = p->se.sum_exec_runtime;
1838
1839         if (p->last_task_numa_placement) {
1840                 delta = runtime - p->last_sum_exec_runtime;
1841                 *period = now - p->last_task_numa_placement;
1842         } else {
1843                 delta = p->se.avg.load_sum / p->se.load.weight;
1844                 *period = LOAD_AVG_MAX;
1845         }
1846
1847         p->last_sum_exec_runtime = runtime;
1848         p->last_task_numa_placement = now;
1849
1850         return delta;
1851 }
1852
1853 /*
1854  * Determine the preferred nid for a task in a numa_group. This needs to
1855  * be done in a way that produces consistent results with group_weight,
1856  * otherwise workloads might not converge.
1857  */
1858 static int preferred_group_nid(struct task_struct *p, int nid)
1859 {
1860         nodemask_t nodes;
1861         int dist;
1862
1863         /* Direct connections between all NUMA nodes. */
1864         if (sched_numa_topology_type == NUMA_DIRECT)
1865                 return nid;
1866
1867         /*
1868          * On a system with glueless mesh NUMA topology, group_weight
1869          * scores nodes according to the number of NUMA hinting faults on
1870          * both the node itself, and on nearby nodes.
1871          */
1872         if (sched_numa_topology_type == NUMA_GLUELESS_MESH) {
1873                 unsigned long score, max_score = 0;
1874                 int node, max_node = nid;
1875
1876                 dist = sched_max_numa_distance;
1877
1878                 for_each_online_node(node) {
1879                         score = group_weight(p, node, dist);
1880                         if (score > max_score) {
1881                                 max_score = score;
1882                                 max_node = node;
1883                         }
1884                 }
1885                 return max_node;
1886         }
1887
1888         /*
1889          * Finding the preferred nid in a system with NUMA backplane
1890          * interconnect topology is more involved. The goal is to locate
1891          * tasks from numa_groups near each other in the system, and
1892          * untangle workloads from different sides of the system. This requires
1893          * searching down the hierarchy of node groups, recursively searching
1894          * inside the highest scoring group of nodes. The nodemask tricks
1895          * keep the complexity of the search down.
1896          */
1897         nodes = node_online_map;
1898         for (dist = sched_max_numa_distance; dist > LOCAL_DISTANCE; dist--) {
1899                 unsigned long max_faults = 0;
1900                 nodemask_t max_group = NODE_MASK_NONE;
1901                 int a, b;
1902
1903                 /* Are there nodes at this distance from each other? */
1904                 if (!find_numa_distance(dist))
1905                         continue;
1906
1907                 for_each_node_mask(a, nodes) {
1908                         unsigned long faults = 0;
1909                         nodemask_t this_group;
1910                         nodes_clear(this_group);
1911
1912                         /* Sum group's NUMA faults; includes a==b case. */
1913                         for_each_node_mask(b, nodes) {
1914                                 if (node_distance(a, b) < dist) {
1915                                         faults += group_faults(p, b);
1916                                         node_set(b, this_group);
1917                                         node_clear(b, nodes);
1918                                 }
1919                         }
1920
1921                         /* Remember the top group. */
1922                         if (faults > max_faults) {
1923                                 max_faults = faults;
1924                                 max_group = this_group;
1925                                 /*
1926                                  * subtle: at the smallest distance there is
1927                                  * just one node left in each "group", the
1928                                  * winner is the preferred nid.
1929                                  */
1930                                 nid = a;
1931                         }
1932                 }
1933                 /* Next round, evaluate the nodes within max_group. */
1934                 if (!max_faults)
1935                         break;
1936                 nodes = max_group;
1937         }
1938         return nid;
1939 }
1940
1941 static void task_numa_placement(struct task_struct *p)
1942 {
1943         int seq, nid, max_nid = -1, max_group_nid = -1;
1944         unsigned long max_faults = 0, max_group_faults = 0;
1945         unsigned long fault_types[2] = { 0, 0 };
1946         unsigned long total_faults;
1947         u64 runtime, period;
1948         spinlock_t *group_lock = NULL;
1949
1950         /*
1951          * The p->mm->numa_scan_seq field gets updated without
1952          * exclusive access. Use READ_ONCE() here to ensure
1953          * that the field is read in a single access:
1954          */
1955         seq = READ_ONCE(p->mm->numa_scan_seq);
1956         if (p->numa_scan_seq == seq)
1957                 return;
1958         p->numa_scan_seq = seq;
1959         p->numa_scan_period_max = task_scan_max(p);
1960
1961         total_faults = p->numa_faults_locality[0] +
1962                        p->numa_faults_locality[1];
1963         runtime = numa_get_avg_runtime(p, &period);
1964
1965         /* If the task is part of a group prevent parallel updates to group stats */
1966         if (p->numa_group) {
1967                 group_lock = &p->numa_group->lock;
1968                 spin_lock_irq(group_lock);
1969         }
1970
1971         /* Find the node with the highest number of faults */
1972         for_each_online_node(nid) {
1973                 /* Keep track of the offsets in numa_faults array */
1974                 int mem_idx, membuf_idx, cpu_idx, cpubuf_idx;
1975                 unsigned long faults = 0, group_faults = 0;
1976                 int priv;
1977
1978                 for (priv = 0; priv < NR_NUMA_HINT_FAULT_TYPES; priv++) {
1979                         long diff, f_diff, f_weight;
1980
1981                         mem_idx = task_faults_idx(NUMA_MEM, nid, priv);
1982                         membuf_idx = task_faults_idx(NUMA_MEMBUF, nid, priv);
1983                         cpu_idx = task_faults_idx(NUMA_CPU, nid, priv);
1984                         cpubuf_idx = task_faults_idx(NUMA_CPUBUF, nid, priv);
1985
1986                         /* Decay existing window, copy faults since last scan */
1987                         diff = p->numa_faults[membuf_idx] - p->numa_faults[mem_idx] / 2;
1988                         fault_types[priv] += p->numa_faults[membuf_idx];
1989                         p->numa_faults[membuf_idx] = 0;
1990
1991                         /*
1992                          * Normalize the faults_from, so all tasks in a group
1993                          * count according to CPU use, instead of by the raw
1994                          * number of faults. Tasks with little runtime have
1995                          * little over-all impact on throughput, and thus their
1996                          * faults are less important.
1997                          */
1998                         f_weight = div64_u64(runtime << 16, period + 1);
1999                         f_weight = (f_weight * p->numa_faults[cpubuf_idx]) /
2000                                    (total_faults + 1);
2001                         f_diff = f_weight - p->numa_faults[cpu_idx] / 2;
2002                         p->numa_faults[cpubuf_idx] = 0;
2003
2004                         p->numa_faults[mem_idx] += diff;
2005                         p->numa_faults[cpu_idx] += f_diff;
2006                         faults += p->numa_faults[mem_idx];
2007                         p->total_numa_faults += diff;
2008                         if (p->numa_group) {
2009                                 /*
2010                                  * safe because we can only change our own group
2011                                  *
2012                                  * mem_idx represents the offset for a given
2013                                  * nid and priv in a specific region because it
2014                                  * is at the beginning of the numa_faults array.
2015                                  */
2016                                 p->numa_group->faults[mem_idx] += diff;
2017                                 p->numa_group->faults_cpu[mem_idx] += f_diff;
2018                                 p->numa_group->total_faults += diff;
2019                                 group_faults += p->numa_group->faults[mem_idx];
2020                         }
2021                 }
2022
2023                 if (faults > max_faults) {
2024                         max_faults = faults;
2025                         max_nid = nid;
2026                 }
2027
2028                 if (group_faults > max_group_faults) {
2029                         max_group_faults = group_faults;
2030                         max_group_nid = nid;
2031                 }
2032         }
2033
2034         update_task_scan_period(p, fault_types[0], fault_types[1]);
2035
2036         if (p->numa_group) {
2037                 update_numa_active_node_mask(p->numa_group);
2038                 spin_unlock_irq(group_lock);
2039                 max_nid = preferred_group_nid(p, max_group_nid);
2040         }
2041
2042         if (max_faults) {
2043                 /* Set the new preferred node */
2044                 if (max_nid != p->numa_preferred_nid)
2045                         sched_setnuma(p, max_nid);
2046
2047                 if (task_node(p) != p->numa_preferred_nid)
2048                         numa_migrate_preferred(p);
2049         }
2050 }
2051
2052 static inline int get_numa_group(struct numa_group *grp)
2053 {
2054         return atomic_inc_not_zero(&grp->refcount);
2055 }
2056
2057 static inline void put_numa_group(struct numa_group *grp)
2058 {
2059         if (atomic_dec_and_test(&grp->refcount))
2060                 kfree_rcu(grp, rcu);
2061 }
2062
2063 static void task_numa_group(struct task_struct *p, int cpupid, int flags,
2064                         int *priv)
2065 {
2066         struct numa_group *grp, *my_grp;
2067         struct task_struct *tsk;
2068         bool join = false;
2069         int cpu = cpupid_to_cpu(cpupid);
2070         int i;
2071
2072         if (unlikely(!p->numa_group)) {
2073                 unsigned int size = sizeof(struct numa_group) +
2074                                     4*nr_node_ids*sizeof(unsigned long);
2075
2076                 grp = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
2077                 if (!grp)
2078                         return;
2079
2080                 atomic_set(&grp->refcount, 1);
2081                 spin_lock_init(&grp->lock);
2082                 grp->gid = p->pid;
2083                 /* Second half of the array tracks nids where faults happen */
2084                 grp->faults_cpu = grp->faults + NR_NUMA_HINT_FAULT_TYPES *
2085                                                 nr_node_ids;
2086
2087                 node_set(task_node(current), grp->active_nodes);
2088
2089                 for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
2090                         grp->faults[i] = p->numa_faults[i];
2091
2092                 grp->total_faults = p->total_numa_faults;
2093
2094                 grp->nr_tasks++;
2095                 rcu_assign_pointer(p->numa_group, grp);
2096         }
2097
2098         rcu_read_lock();
2099         tsk = READ_ONCE(cpu_rq(cpu)->curr);
2100
2101         if (!cpupid_match_pid(tsk, cpupid))
2102                 goto no_join;
2103
2104         grp = rcu_dereference(tsk->numa_group);
2105         if (!grp)
2106                 goto no_join;
2107
2108         my_grp = p->numa_group;
2109         if (grp == my_grp)
2110                 goto no_join;
2111
2112         /*
2113          * Only join the other group if its bigger; if we're the bigger group,
2114          * the other task will join us.
2115          */
2116         if (my_grp->nr_tasks > grp->nr_tasks)
2117                 goto no_join;
2118
2119         /*
2120          * Tie-break on the grp address.
2121          */
2122         if (my_grp->nr_tasks == grp->nr_tasks && my_grp > grp)
2123                 goto no_join;
2124
2125         /* Always join threads in the same process. */
2126         if (tsk->mm == current->mm)
2127                 join = true;
2128
2129         /* Simple filter to avoid false positives due to PID collisions */
2130         if (flags & TNF_SHARED)
2131                 join = true;
2132
2133         /* Update priv based on whether false sharing was detected */
2134         *priv = !join;
2135
2136         if (join && !get_numa_group(grp))
2137                 goto no_join;
2138
2139         rcu_read_unlock();
2140
2141         if (!join)
2142                 return;
2143
2144         BUG_ON(irqs_disabled());
2145         double_lock_irq(&my_grp->lock, &grp->lock);
2146
2147         for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++) {
2148                 my_grp->faults[i] -= p->numa_faults[i];
2149                 grp->faults[i] += p->numa_faults[i];
2150         }
2151         my_grp->total_faults -= p->total_numa_faults;
2152         grp->total_faults += p->total_numa_faults;
2153
2154         my_grp->nr_tasks--;
2155         grp->nr_tasks++;
2156
2157         spin_unlock(&my_grp->lock);
2158         spin_unlock_irq(&grp->lock);
2159
2160         rcu_assign_pointer(p->numa_group, grp);
2161
2162         put_numa_group(my_grp);
2163         return;
2164
2165 no_join:
2166         rcu_read_unlock();
2167         return;
2168 }
2169
2170 void task_numa_free(struct task_struct *p)
2171 {
2172         struct numa_group *grp = p->numa_group;
2173         void *numa_faults = p->numa_faults;
2174         unsigned long flags;
2175         int i;
2176
2177         if (grp) {
2178                 spin_lock_irqsave(&grp->lock, flags);
2179                 for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
2180                         grp->faults[i] -= p->numa_faults[i];
2181                 grp->total_faults -= p->total_numa_faults;
2182
2183                 grp->nr_tasks--;
2184                 spin_unlock_irqrestore(&grp->lock, flags);
2185                 RCU_INIT_POINTER(p->numa_group, NULL);
2186                 put_numa_group(grp);
2187         }
2188
2189         p->numa_faults = NULL;
2190         kfree(numa_faults);
2191 }
2192
2193 /*
2194  * Got a PROT_NONE fault for a page on @node.
2195  */
2196 void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
2197 {
2198         struct task_struct *p = current;
2199         bool migrated = flags & TNF_MIGRATED;
2200         int cpu_node = task_node(current);
2201         int local = !!(flags & TNF_FAULT_LOCAL);
2202         int priv;
2203
2204         if (!static_branch_likely(&sched_numa_balancing))
2205                 return;
2206
2207         /* for example, ksmd faulting in a user's mm */
2208         if (!p->mm)
2209                 return;
2210
2211         /* Allocate buffer to track faults on a per-node basis */
2212         if (unlikely(!p->numa_faults)) {
2213                 int size = sizeof(*p->numa_faults) *
2214                            NR_NUMA_HINT_FAULT_BUCKETS * nr_node_ids;
2215
2216                 p->numa_faults = kzalloc(size, GFP_KERNEL|__GFP_NOWARN);
2217                 if (!p->numa_faults)
2218                         return;
2219
2220                 p->total_numa_faults = 0;
2221                 memset(p->numa_faults_locality, 0, sizeof(p->numa_faults_locality));
2222         }
2223
2224         /*
2225          * First accesses are treated as private, otherwise consider accesses
2226          * to be private if the accessing pid has not changed
2227          */
2228         if (unlikely(last_cpupid == (-1 & LAST_CPUPID_MASK))) {
2229                 priv = 1;
2230         } else {
2231                 priv = cpupid_match_pid(p, last_cpupid);
2232                 if (!priv && !(flags & TNF_NO_GROUP))
2233                         task_numa_group(p, last_cpupid, flags, &priv);
2234         }
2235
2236         /*
2237          * If a workload spans multiple NUMA nodes, a shared fault that
2238          * occurs wholly within the set of nodes that the workload is
2239          * actively using should be counted as local. This allows the
2240          * scan rate to slow down when a workload has settled down.
2241          */
2242         if (!priv && !local && p->numa_group &&
2243                         node_isset(cpu_node, p->numa_group->active_nodes) &&
2244                         node_isset(mem_node, p->numa_group->active_nodes))
2245                 local = 1;
2246
2247         task_numa_placement(p);
2248
2249         /*
2250          * Retry task to preferred node migration periodically, in case it
2251          * case it previously failed, or the scheduler moved us.
2252          */
2253         if (time_after(jiffies, p->numa_migrate_retry))
2254                 numa_migrate_preferred(p);
2255
2256         if (migrated)
2257                 p->numa_pages_migrated += pages;
2258         if (flags & TNF_MIGRATE_FAIL)
2259                 p->numa_faults_locality[2] += pages;
2260
2261         p->numa_faults[task_faults_idx(NUMA_MEMBUF, mem_node, priv)] += pages;
2262         p->numa_faults[task_faults_idx(NUMA_CPUBUF, cpu_node, priv)] += pages;
2263         p->numa_faults_locality[local] += pages;
2264 }
2265
2266 static void reset_ptenuma_scan(struct task_struct *p)
2267 {
2268         /*
2269          * We only did a read acquisition of the mmap sem, so
2270          * p->mm->numa_scan_seq is written to without exclusive access
2271          * and the update is not guaranteed to be atomic. That's not
2272          * much of an issue though, since this is just used for
2273          * statistical sampling. Use READ_ONCE/WRITE_ONCE, which are not
2274          * expensive, to avoid any form of compiler optimizations:
2275          */
2276         WRITE_ONCE(p->mm->numa_scan_seq, READ_ONCE(p->mm->numa_scan_seq) + 1);
2277         p->mm->numa_scan_offset = 0;
2278 }
2279
2280 /*
2281  * The expensive part of numa migration is done from task_work context.
2282  * Triggered from task_tick_numa().
2283  */
2284 void task_numa_work(struct callback_head *work)
2285 {
2286         unsigned long migrate, next_scan, now = jiffies;
2287         struct task_struct *p = current;
2288         struct mm_struct *mm = p->mm;
2289         struct vm_area_struct *vma;
2290         unsigned long start, end;
2291         unsigned long nr_pte_updates = 0;
2292         long pages, virtpages;
2293
2294         WARN_ON_ONCE(p != container_of(work, struct task_struct, numa_work));
2295
2296         work->next = work; /* protect against double add */
2297         /*
2298          * Who cares about NUMA placement when they're dying.
2299          *
2300          * NOTE: make sure not to dereference p->mm before this check,
2301          * exit_task_work() happens _after_ exit_mm() so we could be called
2302          * without p->mm even though we still had it when we enqueued this
2303          * work.
2304          */
2305         if (p->flags & PF_EXITING)
2306                 return;
2307
2308         if (!mm->numa_next_scan) {
2309                 mm->numa_next_scan = now +
2310                         msecs_to_jiffies(sysctl_numa_balancing_scan_delay);
2311         }
2312
2313         /*
2314          * Enforce maximal scan/migration frequency..
2315          */
2316         migrate = mm->numa_next_scan;
2317         if (time_before(now, migrate))
2318                 return;
2319
2320         if (p->numa_scan_period == 0) {
2321                 p->numa_scan_period_max = task_scan_max(p);
2322                 p->numa_scan_period = task_scan_min(p);
2323         }
2324
2325         next_scan = now + msecs_to_jiffies(p->numa_scan_period);
2326         if (cmpxchg(&mm->numa_next_scan, migrate, next_scan) != migrate)
2327                 return;
2328
2329         /*
2330          * Delay this task enough that another task of this mm will likely win
2331          * the next time around.
2332          */
2333         p->node_stamp += 2 * TICK_NSEC;
2334
2335         start = mm->numa_scan_offset;
2336         pages = sysctl_numa_balancing_scan_size;
2337         pages <<= 20 - PAGE_SHIFT; /* MB in pages */
2338         virtpages = pages * 8;     /* Scan up to this much virtual space */
2339         if (!pages)
2340                 return;
2341
2342
2343         down_read(&mm->mmap_sem);
2344         vma = find_vma(mm, start);
2345         if (!vma) {
2346                 reset_ptenuma_scan(p);
2347                 start = 0;
2348                 vma = mm->mmap;
2349         }
2350         for (; vma; vma = vma->vm_next) {
2351                 if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
2352                         is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) {
2353                         continue;
2354                 }
2355
2356                 /*
2357                  * Shared library pages mapped by multiple processes are not
2358                  * migrated as it is expected they are cache replicated. Avoid
2359                  * hinting faults in read-only file-backed mappings or the vdso
2360                  * as migrating the pages will be of marginal benefit.
2361                  */
2362                 if (!vma->vm_mm ||
2363                     (vma->vm_file && (vma->vm_flags & (VM_READ|VM_WRITE)) == (VM_READ)))
2364                         continue;
2365
2366                 /*
2367                  * Skip inaccessible VMAs to avoid any confusion between
2368                  * PROT_NONE and NUMA hinting ptes
2369                  */
2370                 if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
2371                         continue;
2372
2373                 do {
2374                         start = max(start, vma->vm_start);
2375                         end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
2376                         end = min(end, vma->vm_end);
2377                         nr_pte_updates = change_prot_numa(vma, start, end);
2378
2379                         /*
2380                          * Try to scan sysctl_numa_balancing_size worth of
2381                          * hpages that have at least one present PTE that
2382                          * is not already pte-numa. If the VMA contains
2383                          * areas that are unused or already full of prot_numa
2384                          * PTEs, scan up to virtpages, to skip through those
2385                          * areas faster.
2386                          */
2387                         if (nr_pte_updates)
2388                                 pages -= (end - start) >> PAGE_SHIFT;
2389                         virtpages -= (end - start) >> PAGE_SHIFT;
2390
2391                         start = end;
2392                         if (pages <= 0 || virtpages <= 0)
2393                                 goto out;
2394
2395                         cond_resched();
2396                 } while (end != vma->vm_end);
2397         }
2398
2399 out:
2400         /*
2401          * It is possible to reach the end of the VMA list but the last few
2402          * VMAs are not guaranteed to the vma_migratable. If they are not, we
2403          * would find the !migratable VMA on the next scan but not reset the
2404          * scanner to the start so check it now.
2405          */
2406         if (vma)
2407                 mm->numa_scan_offset = start;
2408         else
2409                 reset_ptenuma_scan(p);
2410         up_read(&mm->mmap_sem);
2411 }
2412
2413 /*
2414  * Drive the periodic memory faults..
2415  */
2416 void task_tick_numa(struct rq *rq, struct task_struct *curr)
2417 {
2418         struct callback_head *work = &curr->numa_work;
2419         u64 period, now;
2420
2421         /*
2422          * We don't care about NUMA placement if we don't have memory.
2423          */
2424         if (!curr->mm || (curr->flags & PF_EXITING) || work->next != work)
2425                 return;
2426
2427         /*
2428          * Using runtime rather than walltime has the dual advantage that
2429          * we (mostly) drive the selection from busy threads and that the
2430          * task needs to have done some actual work before we bother with
2431          * NUMA placement.
2432          */
2433         now = curr->se.sum_exec_runtime;
2434         period = (u64)curr->numa_scan_period * NSEC_PER_MSEC;
2435
2436         if (now > curr->node_stamp + period) {
2437                 if (!curr->node_stamp)
2438                         curr->numa_scan_period = task_scan_min(curr);
2439                 curr->node_stamp += period;
2440
2441                 if (!time_before(jiffies, curr->mm->numa_next_scan)) {
2442                         init_task_work(work, task_numa_work); /* TODO: move this into sched_fork() */
2443                         task_work_add(curr, work, true);
2444                 }
2445         }
2446 }
2447 #else
2448 static void task_tick_numa(struct rq *rq, struct task_struct *curr)
2449 {
2450 }
2451
2452 static inline void account_numa_enqueue(struct rq *rq, struct task_struct *p)
2453 {
2454 }
2455
2456 static inline void account_numa_dequeue(struct rq *rq, struct task_struct *p)
2457 {
2458 }
2459 #endif /* CONFIG_NUMA_BALANCING */
2460
2461 static void
2462 account_entity_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
2463 {
2464         update_load_add(&cfs_rq->load, se->load.weight);
2465         if (!parent_entity(se))
2466                 update_load_add(&rq_of(cfs_rq)->load, se->load.weight);
2467 #ifdef CONFIG_SMP
2468         if (entity_is_task(se)) {
2469                 struct rq *rq = rq_of(cfs_rq);
2470
2471                 account_numa_enqueue(rq, task_of(se));
2472                 list_add(&se->group_node, &rq->cfs_tasks);
2473         }
2474 #endif
2475         cfs_rq->nr_running++;
2476 }
2477
2478 static void
2479 account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
2480 {
2481         update_load_sub(&cfs_rq->load, se->load.weight);
2482         if (!parent_entity(se))
2483                 update_load_sub(&rq_of(cfs_rq)->load, se->load.weight);
2484         if (entity_is_task(se)) {
2485                 account_numa_dequeue(rq_of(cfs_rq), task_of(se));
2486                 list_del_init(&se->group_node);
2487         }
2488         cfs_rq->nr_running--;
2489 }
2490
2491 #ifdef CONFIG_FAIR_GROUP_SCHED
2492 # ifdef CONFIG_SMP
2493 static inline long calc_tg_weight(struct task_group *tg, struct cfs_rq *cfs_rq)
2494 {
2495         long tg_weight;
2496
2497         /*
2498          * Use this CPU's real-time load instead of the last load contribution
2499          * as the updating of the contribution is delayed, and we will use the
2500          * the real-time load to calc the share. See update_tg_load_avg().
2501          */
2502         tg_weight = atomic_long_read(&tg->load_avg);
2503         tg_weight -= cfs_rq->tg_load_avg_contrib;
2504         tg_weight += cfs_rq->load.weight;
2505
2506         return tg_weight;
2507 }
2508
2509 static long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg)
2510 {
2511         long tg_weight, load, shares;
2512
2513         tg_weight = calc_tg_weight(tg, cfs_rq);
2514         load = cfs_rq->load.weight;
2515
2516         shares = (tg->shares * load);
2517         if (tg_weight)
2518                 shares /= tg_weight;
2519
2520         if (shares < MIN_SHARES)
2521                 shares = MIN_SHARES;
2522         if (shares > tg->shares)
2523                 shares = tg->shares;
2524
2525         return shares;
2526 }
2527 # else /* CONFIG_SMP */
2528 static inline long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg)
2529 {
2530         return tg->shares;
2531 }
2532 # endif /* CONFIG_SMP */
2533 static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
2534                             unsigned long weight)
2535 {
2536         if (se->on_rq) {
2537                 /* commit outstanding execution time */
2538                 if (cfs_rq->curr == se)
2539                         update_curr(cfs_rq);
2540                 account_entity_dequeue(cfs_rq, se);
2541         }
2542
2543         update_load_set(&se->load, weight);
2544
2545         if (se->on_rq)
2546                 account_entity_enqueue(cfs_rq, se);
2547 }
2548
2549 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq);
2550
2551 static void update_cfs_shares(struct cfs_rq *cfs_rq)
2552 {
2553         struct task_group *tg;
2554         struct sched_entity *se;
2555         long shares;
2556
2557         tg = cfs_rq->tg;
2558         se = tg->se[cpu_of(rq_of(cfs_rq))];
2559         if (!se || throttled_hierarchy(cfs_rq))
2560                 return;
2561 #ifndef CONFIG_SMP
2562         if (likely(se->load.weight == tg->shares))
2563                 return;
2564 #endif
2565         shares = calc_cfs_shares(cfs_rq, tg);
2566
2567         reweight_entity(cfs_rq_of(se), se, shares);
2568 }
2569 #else /* CONFIG_FAIR_GROUP_SCHED */
2570 static inline void update_cfs_shares(struct cfs_rq *cfs_rq)
2571 {
2572 }
2573 #endif /* CONFIG_FAIR_GROUP_SCHED */
2574
2575 #ifdef CONFIG_SMP
2576 /* Precomputed fixed inverse multiplies for multiplication by y^n */
2577 static const u32 runnable_avg_yN_inv[] = {
2578         0xffffffff, 0xfa83b2da, 0xf5257d14, 0xefe4b99a, 0xeac0c6e6, 0xe5b906e6,
2579         0xe0ccdeeb, 0xdbfbb796, 0xd744fcc9, 0xd2a81d91, 0xce248c14, 0xc9b9bd85,
2580         0xc5672a10, 0xc12c4cc9, 0xbd08a39e, 0xb8fbaf46, 0xb504f333, 0xb123f581,
2581         0xad583ee9, 0xa9a15ab4, 0xa5fed6a9, 0xa2704302, 0x9ef5325f, 0x9b8d39b9,
2582         0x9837f050, 0x94f4efa8, 0x91c3d373, 0x8ea4398a, 0x8b95c1e3, 0x88980e80,
2583         0x85aac367, 0x82cd8698,
2584 };
2585
2586 /*
2587  * Precomputed \Sum y^k { 1<=k<=n }.  These are floor(true_value) to prevent
2588  * over-estimates when re-combining.
2589  */
2590 static const u32 runnable_avg_yN_sum[] = {
2591             0, 1002, 1982, 2941, 3880, 4798, 5697, 6576, 7437, 8279, 9103,
2592          9909,10698,11470,12226,12966,13690,14398,15091,15769,16433,17082,
2593         17718,18340,18949,19545,20128,20698,21256,21802,22336,22859,23371,
2594 };
2595
2596 /*
2597  * Approximate:
2598  *   val * y^n,    where y^32 ~= 0.5 (~1 scheduling period)
2599  */
2600 static __always_inline u64 decay_load(u64 val, u64 n)
2601 {
2602         unsigned int local_n;
2603
2604         if (!n)
2605                 return val;
2606         else if (unlikely(n > LOAD_AVG_PERIOD * 63))
2607                 return 0;
2608
2609         /* after bounds checking we can collapse to 32-bit */
2610         local_n = n;
2611
2612         /*
2613          * As y^PERIOD = 1/2, we can combine
2614          *    y^n = 1/2^(n/PERIOD) * y^(n%PERIOD)
2615          * With a look-up table which covers y^n (n<PERIOD)
2616          *
2617          * To achieve constant time decay_load.
2618          */
2619         if (unlikely(local_n >= LOAD_AVG_PERIOD)) {
2620                 val >>= local_n / LOAD_AVG_PERIOD;
2621                 local_n %= LOAD_AVG_PERIOD;
2622         }
2623
2624         val = mul_u64_u32_shr(val, runnable_avg_yN_inv[local_n], 32);
2625         return val;
2626 }
2627
2628 /*
2629  * For updates fully spanning n periods, the contribution to runnable
2630  * average will be: \Sum 1024*y^n
2631  *
2632  * We can compute this reasonably efficiently by combining:
2633  *   y^PERIOD = 1/2 with precomputed \Sum 1024*y^n {for  n <PERIOD}
2634  */
2635 static u32 __compute_runnable_contrib(u64 n)
2636 {
2637         u32 contrib = 0;
2638
2639         if (likely(n <= LOAD_AVG_PERIOD))
2640                 return runnable_avg_yN_sum[n];
2641         else if (unlikely(n >= LOAD_AVG_MAX_N))
2642                 return LOAD_AVG_MAX;
2643
2644         /* Compute \Sum k^n combining precomputed values for k^i, \Sum k^j */
2645         do {
2646                 contrib /= 2; /* y^LOAD_AVG_PERIOD = 1/2 */
2647                 contrib += runnable_avg_yN_sum[LOAD_AVG_PERIOD];
2648
2649                 n -= LOAD_AVG_PERIOD;
2650         } while (n > LOAD_AVG_PERIOD);
2651
2652         contrib = decay_load(contrib, n);
2653         return contrib + runnable_avg_yN_sum[n];
2654 }
2655
2656 #if (SCHED_LOAD_SHIFT - SCHED_LOAD_RESOLUTION) != 10 || SCHED_CAPACITY_SHIFT != 10
2657 #error "load tracking assumes 2^10 as unit"
2658 #endif
2659
2660 #define cap_scale(v, s) ((v)*(s) >> SCHED_CAPACITY_SHIFT)
2661
2662 /*
2663  * We can represent the historical contribution to runnable average as the
2664  * coefficients of a geometric series.  To do this we sub-divide our runnable
2665  * history into segments of approximately 1ms (1024us); label the segment that
2666  * occurred N-ms ago p_N, with p_0 corresponding to the current period, e.g.
2667  *
2668  * [<- 1024us ->|<- 1024us ->|<- 1024us ->| ...
2669  *      p0            p1           p2
2670  *     (now)       (~1ms ago)  (~2ms ago)
2671  *
2672  * Let u_i denote the fraction of p_i that the entity was runnable.
2673  *
2674  * We then designate the fractions u_i as our co-efficients, yielding the
2675  * following representation of historical load:
2676  *   u_0 + u_1*y + u_2*y^2 + u_3*y^3 + ...
2677  *
2678  * We choose y based on the with of a reasonably scheduling period, fixing:
2679  *   y^32 = 0.5
2680  *
2681  * This means that the contribution to load ~32ms ago (u_32) will be weighted
2682  * approximately half as much as the contribution to load within the last ms
2683  * (u_0).
2684  *
2685  * When a period "rolls over" and we have new u_0`, multiplying the previous
2686  * sum again by y is sufficient to update:
2687  *   load_avg = u_0` + y*(u_0 + u_1*y + u_2*y^2 + ... )
2688  *            = u_0 + u_1*y + u_2*y^2 + ... [re-labeling u_i --> u_{i+1}]
2689  */
2690 static __always_inline int
2691 __update_load_avg(u64 now, int cpu, struct sched_avg *sa,
2692                   unsigned long weight, int running, struct cfs_rq *cfs_rq)
2693 {
2694         u64 delta, scaled_delta, periods;
2695         u32 contrib;
2696         unsigned int delta_w, scaled_delta_w, decayed = 0;
2697         unsigned long scale_freq, scale_cpu;
2698
2699         delta = now - sa->last_update_time;
2700         /*
2701          * This should only happen when time goes backwards, which it
2702          * unfortunately does during sched clock init when we swap over to TSC.
2703          */
2704         if ((s64)delta < 0) {
2705                 sa->last_update_time = now;
2706                 return 0;
2707         }
2708
2709         /*
2710          * Use 1024ns as the unit of measurement since it's a reasonable
2711          * approximation of 1us and fast to compute.
2712          */
2713         delta >>= 10;
2714         if (!delta)
2715                 return 0;
2716         sa->last_update_time = now;
2717
2718         scale_freq = arch_scale_freq_capacity(NULL, cpu);
2719         scale_cpu = arch_scale_cpu_capacity(NULL, cpu);
2720         trace_sched_contrib_scale_f(cpu, scale_freq, scale_cpu);
2721
2722         /* delta_w is the amount already accumulated against our next period */
2723         delta_w = sa->period_contrib;
2724         if (delta + delta_w >= 1024) {
2725                 decayed = 1;
2726
2727                 /* how much left for next period will start over, we don't know yet */
2728                 sa->period_contrib = 0;
2729
2730                 /*
2731                  * Now that we know we're crossing a period boundary, figure
2732                  * out how much from delta we need to complete the current
2733                  * period and accrue it.
2734                  */
2735                 delta_w = 1024 - delta_w;
2736                 scaled_delta_w = cap_scale(delta_w, scale_freq);
2737                 if (weight) {
2738                         sa->load_sum += weight * scaled_delta_w;
2739                         if (cfs_rq) {
2740                                 cfs_rq->runnable_load_sum +=
2741                                                 weight * scaled_delta_w;
2742                         }
2743                 }
2744                 if (running)
2745                         sa->util_sum += scaled_delta_w * scale_cpu;
2746
2747                 delta -= delta_w;
2748
2749                 /* Figure out how many additional periods this update spans */
2750                 periods = delta / 1024;
2751                 delta %= 1024;
2752
2753                 sa->load_sum = decay_load(sa->load_sum, periods + 1);
2754                 if (cfs_rq) {
2755                         cfs_rq->runnable_load_sum =
2756                                 decay_load(cfs_rq->runnable_load_sum, periods + 1);
2757                 }
2758                 sa->util_sum = decay_load((u64)(sa->util_sum), periods + 1);
2759
2760                 /* Efficiently calculate \sum (1..n_period) 1024*y^i */
2761                 contrib = __compute_runnable_contrib(periods);
2762                 contrib = cap_scale(contrib, scale_freq);
2763                 if (weight) {
2764                         sa->load_sum += weight * contrib;
2765                         if (cfs_rq)
2766                                 cfs_rq->runnable_load_sum += weight * contrib;
2767                 }
2768                 if (running)
2769                         sa->util_sum += contrib * scale_cpu;
2770         }
2771
2772         /* Remainder of delta accrued against u_0` */
2773         scaled_delta = cap_scale(delta, scale_freq);
2774         if (weight) {
2775                 sa->load_sum += weight * scaled_delta;
2776                 if (cfs_rq)
2777                         cfs_rq->runnable_load_sum += weight * scaled_delta;
2778         }
2779         if (running)
2780                 sa->util_sum += scaled_delta * scale_cpu;
2781
2782         sa->period_contrib += delta;
2783
2784         if (decayed) {
2785                 sa->load_avg = div_u64(sa->load_sum, LOAD_AVG_MAX);
2786                 if (cfs_rq) {
2787                         cfs_rq->runnable_load_avg =
2788                                 div_u64(cfs_rq->runnable_load_sum, LOAD_AVG_MAX);
2789                 }
2790                 sa->util_avg = sa->util_sum / LOAD_AVG_MAX;
2791         }
2792
2793         return decayed;
2794 }
2795
2796 #ifdef CONFIG_FAIR_GROUP_SCHED
2797 /**
2798  * update_tg_load_avg - update the tg's load avg
2799  * @cfs_rq: the cfs_rq whose avg changed
2800  * @force: update regardless of how small the difference
2801  *
2802  * This function 'ensures': tg->load_avg := \Sum tg->cfs_rq[]->avg.load.
2803  * However, because tg->load_avg is a global value there are performance
2804  * considerations.
2805  *
2806  * In order to avoid having to look at the other cfs_rq's, we use a
2807  * differential update where we store the last value we propagated. This in
2808  * turn allows skipping updates if the differential is 'small'.
2809  *
2810  * Updating tg's load_avg is necessary before update_cfs_share() (which is
2811  * done) and effective_load() (which is not done because it is too costly).
2812  */
2813 static inline void update_tg_load_avg(struct cfs_rq *cfs_rq, int force)
2814 {
2815         long delta = cfs_rq->avg.load_avg - cfs_rq->tg_load_avg_contrib;
2816
2817         if (force || abs(delta) > cfs_rq->tg_load_avg_contrib / 64) {
2818                 atomic_long_add(delta, &cfs_rq->tg->load_avg);
2819                 cfs_rq->tg_load_avg_contrib = cfs_rq->avg.load_avg;
2820         }
2821 }
2822
2823 #else /* CONFIG_FAIR_GROUP_SCHED */
2824 static inline void update_tg_load_avg(struct cfs_rq *cfs_rq, int force) {}
2825 #endif /* CONFIG_FAIR_GROUP_SCHED */
2826
2827 static inline void cfs_rq_util_change(struct cfs_rq *cfs_rq)
2828 {
2829         if (&this_rq()->cfs == cfs_rq) {
2830                 /*
2831                  * There are a few boundary cases this might miss but it should
2832                  * get called often enough that that should (hopefully) not be
2833                  * a real problem -- added to that it only calls on the local
2834                  * CPU, so if we enqueue remotely we'll miss an update, but
2835                  * the next tick/schedule should update.
2836                  *
2837                  * It will not get called when we go idle, because the idle
2838                  * thread is a different class (!fair), nor will the utilization
2839                  * number include things like RT tasks.
2840                  *
2841                  * As is, the util number is not freq-invariant (we'd have to
2842                  * implement arch_scale_freq_capacity() for that).
2843                  *
2844                  * See cpu_util().
2845                  */
2846                 cpufreq_update_util(rq_of(cfs_rq), 0);
2847         }
2848 }
2849
2850 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq);
2851
2852 /*
2853  * Unsigned subtract and clamp on underflow.
2854  *
2855  * Explicitly do a load-store to ensure the intermediate value never hits
2856  * memory. This allows lockless observations without ever seeing the negative
2857  * values.
2858  */
2859 #define sub_positive(_ptr, _val) do {                           \
2860         typeof(_ptr) ptr = (_ptr);                              \
2861         typeof(*ptr) val = (_val);                              \
2862         typeof(*ptr) res, var = READ_ONCE(*ptr);                \
2863         res = var - val;                                        \
2864         if (res > var)                                          \
2865                 res = 0;                                        \
2866         WRITE_ONCE(*ptr, res);                                  \
2867 } while (0)
2868
2869 /**
2870  * update_cfs_rq_load_avg - update the cfs_rq's load/util averages
2871  * @now: current time, as per cfs_rq_clock_task()
2872  * @cfs_rq: cfs_rq to update
2873  * @update_freq: should we call cfs_rq_util_change() or will the call do so
2874  *
2875  * The cfs_rq avg is the direct sum of all its entities (blocked and runnable)
2876  * avg. The immediate corollary is that all (fair) tasks must be attached, see
2877  * post_init_entity_util_avg().
2878  *
2879  * cfs_rq->avg is used for task_h_load() and update_cfs_share() for example.
2880  *
2881  * Returns true if the load decayed or we removed load.
2882  *
2883  * Since both these conditions indicate a changed cfs_rq->avg.load we should
2884  * call update_tg_load_avg() when this function returns true.
2885  */
2886 static inline int
2887 update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq, bool update_freq)
2888 {
2889         struct sched_avg *sa = &cfs_rq->avg;
2890         int decayed, removed = 0, removed_util = 0;
2891
2892         if (atomic_long_read(&cfs_rq->removed_load_avg)) {
2893                 s64 r = atomic_long_xchg(&cfs_rq->removed_load_avg, 0);
2894                 sub_positive(&sa->load_avg, r);
2895                 sub_positive(&sa->load_sum, r * LOAD_AVG_MAX);
2896                 removed = 1;
2897         }
2898
2899         if (atomic_long_read(&cfs_rq->removed_util_avg)) {
2900                 long r = atomic_long_xchg(&cfs_rq->removed_util_avg, 0);
2901                 sub_positive(&sa->util_avg, r);
2902                 sub_positive(&sa->util_sum, r * LOAD_AVG_MAX);
2903                 removed_util = 1;
2904         }
2905
2906         decayed = __update_load_avg(now, cpu_of(rq_of(cfs_rq)), sa,
2907                 scale_load_down(cfs_rq->load.weight), cfs_rq->curr != NULL, cfs_rq);
2908
2909 #ifndef CONFIG_64BIT
2910         smp_wmb();
2911         cfs_rq->load_last_update_time_copy = sa->last_update_time;
2912 #endif
2913
2914         /* Trace CPU load, unless cfs_rq belongs to a non-root task_group */
2915         if (cfs_rq == &rq_of(cfs_rq)->cfs)
2916                 trace_sched_load_avg_cpu(cpu_of(rq_of(cfs_rq)), cfs_rq);
2917
2918         if (update_freq && (decayed || removed_util))
2919                 cfs_rq_util_change(cfs_rq);
2920
2921         return decayed || removed;
2922 }
2923
2924 /* Update task and its cfs_rq load average */
2925 static inline void update_load_avg(struct sched_entity *se, int update_tg)
2926 {
2927         struct cfs_rq *cfs_rq = cfs_rq_of(se);
2928         u64 now = cfs_rq_clock_task(cfs_rq);
2929         int cpu = cpu_of(rq_of(cfs_rq));
2930
2931         /*
2932          * Track task load average for carrying it to new CPU after migrated, and
2933          * track group sched_entity load average for task_h_load calc in migration
2934          */
2935         __update_load_avg(now, cpu, &se->avg,
2936                           se->on_rq * scale_load_down(se->load.weight),
2937                           cfs_rq->curr == se, NULL);
2938
2939         if (update_cfs_rq_load_avg(now, cfs_rq, true) && update_tg)
2940                 update_tg_load_avg(cfs_rq, 0);
2941
2942         if (entity_is_task(se))
2943                 trace_sched_load_avg_task(task_of(se), &se->avg);
2944 }
2945
2946 /**
2947  * attach_entity_load_avg - attach this entity to its cfs_rq load avg
2948  * @cfs_rq: cfs_rq to attach to
2949  * @se: sched_entity to attach
2950  *
2951  * Must call update_cfs_rq_load_avg() before this, since we rely on
2952  * cfs_rq->avg.last_update_time being current.
2953  */
2954 static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
2955 {
2956         if (!sched_feat(ATTACH_AGE_LOAD))
2957                 goto skip_aging;
2958
2959         /*
2960          * If we got migrated (either between CPUs or between cgroups) we'll
2961          * have aged the average right before clearing @last_update_time.
2962          */
2963         if (se->avg.last_update_time) {
2964                 __update_load_avg(cfs_rq->avg.last_update_time, cpu_of(rq_of(cfs_rq)),
2965                                   &se->avg, 0, 0, NULL);
2966
2967                 /*
2968                  * XXX: we could have just aged the entire load away if we've been
2969                  * absent from the fair class for too long.
2970                  */
2971         }
2972
2973 skip_aging:
2974         se->avg.last_update_time = cfs_rq->avg.last_update_time;
2975         cfs_rq->avg.load_avg += se->avg.load_avg;
2976         cfs_rq->avg.load_sum += se->avg.load_sum;
2977         cfs_rq->avg.util_avg += se->avg.util_avg;
2978         cfs_rq->avg.util_sum += se->avg.util_sum;
2979
2980         cfs_rq_util_change(cfs_rq);
2981 }
2982
2983 /**
2984  * detach_entity_load_avg - detach this entity from its cfs_rq load avg
2985  * @cfs_rq: cfs_rq to detach from
2986  * @se: sched_entity to detach
2987  *
2988  * Must call update_cfs_rq_load_avg() before this, since we rely on
2989  * cfs_rq->avg.last_update_time being current.
2990  */
2991 static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
2992 {
2993         __update_load_avg(cfs_rq->avg.last_update_time, cpu_of(rq_of(cfs_rq)),
2994                           &se->avg, se->on_rq * scale_load_down(se->load.weight),
2995                           cfs_rq->curr == se, NULL);
2996
2997         sub_positive(&cfs_rq->avg.load_avg, se->avg.load_avg);
2998         sub_positive(&cfs_rq->avg.load_sum, se->avg.load_sum);
2999         sub_positive(&cfs_rq->avg.util_avg, se->avg.util_avg);
3000         sub_positive(&cfs_rq->avg.util_sum, se->avg.util_sum);
3001
3002         cfs_rq_util_change(cfs_rq);
3003 }
3004
3005 /* Add the load generated by se into cfs_rq's load average */
3006 static inline void
3007 enqueue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
3008 {
3009         struct sched_avg *sa = &se->avg;
3010         u64 now = cfs_rq_clock_task(cfs_rq);
3011         int migrated, decayed;
3012
3013         migrated = !sa->last_update_time;
3014         if (!migrated) {
3015                 __update_load_avg(now, cpu_of(rq_of(cfs_rq)), sa,
3016                         se->on_rq * scale_load_down(se->load.weight),
3017                         cfs_rq->curr == se, NULL);
3018         }
3019
3020         decayed = update_cfs_rq_load_avg(now, cfs_rq, !migrated);
3021
3022         cfs_rq->runnable_load_avg += sa->load_avg;
3023         cfs_rq->runnable_load_sum += sa->load_sum;
3024
3025         if (migrated)
3026                 attach_entity_load_avg(cfs_rq, se);
3027
3028         if (decayed || migrated)
3029                 update_tg_load_avg(cfs_rq, 0);
3030 }
3031
3032 /* Remove the runnable load generated by se from cfs_rq's runnable load average */
3033 static inline void
3034 dequeue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
3035 {
3036         update_load_avg(se, 1);
3037
3038         cfs_rq->runnable_load_avg =
3039                 max_t(long, cfs_rq->runnable_load_avg - se->avg.load_avg, 0);
3040         cfs_rq->runnable_load_sum =
3041                 max_t(s64,  cfs_rq->runnable_load_sum - se->avg.load_sum, 0);
3042 }
3043
3044 #ifndef CONFIG_64BIT
3045 static inline u64 cfs_rq_last_update_time(struct cfs_rq *cfs_rq)
3046 {
3047         u64 last_update_time_copy;
3048         u64 last_update_time;
3049
3050         do {
3051                 last_update_time_copy = cfs_rq->load_last_update_time_copy;
3052                 smp_rmb();
3053                 last_update_time = cfs_rq->avg.last_update_time;
3054         } while (last_update_time != last_update_time_copy);
3055
3056         return last_update_time;
3057 }
3058 #else
3059 static inline u64 cfs_rq_last_update_time(struct cfs_rq *cfs_rq)
3060 {
3061         return cfs_rq->avg.last_update_time;
3062 }
3063 #endif
3064
3065 /*
3066  * Synchronize entity load avg of dequeued entity without locking
3067  * the previous rq.
3068  */
3069 void sync_entity_load_avg(struct sched_entity *se)
3070 {
3071         struct cfs_rq *cfs_rq = cfs_rq_of(se);
3072         u64 last_update_time;
3073
3074         last_update_time = cfs_rq_last_update_time(cfs_rq);
3075         __update_load_avg(last_update_time, cpu_of(rq_of(cfs_rq)), &se->avg, 0, 0, NULL);
3076 }
3077
3078 /*
3079  * Task first catches up with cfs_rq, and then subtract
3080  * itself from the cfs_rq (task must be off the queue now).
3081  */
3082 void remove_entity_load_avg(struct sched_entity *se)
3083 {
3084         struct cfs_rq *cfs_rq = cfs_rq_of(se);
3085
3086         /*
3087          * Newly created task or never used group entity should not be removed
3088          * from its (source) cfs_rq
3089          */
3090         if (se->avg.last_update_time == 0)
3091                 return;
3092
3093         sync_entity_load_avg(se);
3094         atomic_long_add(se->avg.load_avg, &cfs_rq->removed_load_avg);
3095         atomic_long_add(se->avg.util_avg, &cfs_rq->removed_util_avg);
3096 }
3097
3098 /*
3099  * Update the rq's load with the elapsed running time before entering
3100  * idle. if the last scheduled task is not a CFS task, idle_enter will
3101  * be the only way to update the runnable statistic.
3102  */
3103 void idle_enter_fair(struct rq *this_rq)
3104 {
3105 }
3106
3107 /*
3108  * Update the rq's load with the elapsed idle time before a task is
3109  * scheduled. if the newly scheduled task is not a CFS task, idle_exit will
3110  * be the only way to update the runnable statistic.
3111  */
3112 void idle_exit_fair(struct rq *this_rq)
3113 {
3114 }
3115
3116 static inline unsigned long cfs_rq_runnable_load_avg(struct cfs_rq *cfs_rq)
3117 {
3118         return cfs_rq->runnable_load_avg;
3119 }
3120
3121 static inline unsigned long cfs_rq_load_avg(struct cfs_rq *cfs_rq)
3122 {
3123         return cfs_rq->avg.load_avg;
3124 }
3125
3126 static int idle_balance(struct rq *this_rq);
3127
3128 #else /* CONFIG_SMP */
3129
3130 static inline void update_load_avg(struct sched_entity *se, int update_tg)
3131 {
3132         cpufreq_update_util(rq_of(cfs_rq_of(se)), 0);
3133 }
3134
3135 static inline void
3136 enqueue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
3137 static inline void
3138 dequeue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
3139 static inline void remove_entity_load_avg(struct sched_entity *se) {}
3140
3141 static inline void
3142 attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
3143 static inline void
3144 detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
3145
3146 static inline int idle_balance(struct rq *rq)
3147 {
3148         return 0;
3149 }
3150
3151 #endif /* CONFIG_SMP */
3152
3153 static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
3154 {
3155 #ifdef CONFIG_SCHEDSTATS
3156         struct task_struct *tsk = NULL;
3157
3158         if (entity_is_task(se))
3159                 tsk = task_of(se);
3160
3161         if (se->statistics.sleep_start) {
3162                 u64 delta = rq_clock(rq_of(cfs_rq)) - se->statistics.sleep_start;
3163
3164                 if ((s64)delta < 0)
3165                         delta = 0;
3166
3167                 if (unlikely(delta > se->statistics.sleep_max))
3168                         se->statistics.sleep_max = delta;
3169
3170                 se->statistics.sleep_start = 0;
3171                 se->statistics.sum_sleep_runtime += delta;
3172
3173                 if (tsk) {
3174                         account_scheduler_latency(tsk, delta >> 10, 1);
3175                         trace_sched_stat_sleep(tsk, delta);
3176                 }
3177         }
3178         if (se->statistics.block_start) {
3179                 u64 delta = rq_clock(rq_of(cfs_rq)) - se->statistics.block_start;
3180
3181                 if ((s64)delta < 0)
3182                         delta = 0;
3183
3184                 if (unlikely(delta > se->statistics.block_max))
3185                         se->statistics.block_max = delta;
3186
3187                 se->statistics.block_start = 0;
3188                 se->statistics.sum_sleep_runtime += delta;
3189
3190                 if (tsk) {
3191                         if (tsk->in_iowait) {
3192                                 se->statistics.iowait_sum += delta;
3193                                 se->statistics.iowait_count++;
3194                                 trace_sched_stat_iowait(tsk, delta);
3195                         }
3196
3197                         trace_sched_stat_blocked(tsk, delta);
3198                         trace_sched_blocked_reason(tsk);
3199
3200                         /*
3201                          * Blocking time is in units of nanosecs, so shift by
3202                          * 20 to get a milliseconds-range estimation of the
3203                          * amount of time that the task spent sleeping:
3204                          */
3205                         if (unlikely(prof_on == SLEEP_PROFILING)) {
3206                                 profile_hits(SLEEP_PROFILING,
3207                                                 (void *)get_wchan(tsk),
3208                                                 delta >> 20);
3209                         }
3210                         account_scheduler_latency(tsk, delta >> 10, 0);
3211                 }
3212         }
3213 #endif
3214 }
3215
3216 static void check_spread(struct cfs_rq *cfs_rq, struct sched_entity *se)
3217 {
3218 #ifdef CONFIG_SCHED_DEBUG
3219         s64 d = se->vruntime - cfs_rq->min_vruntime;
3220
3221         if (d < 0)
3222                 d = -d;
3223
3224         if (d > 3*sysctl_sched_latency)
3225                 schedstat_inc(cfs_rq, nr_spread_over);
3226 #endif
3227 }
3228
3229 static void
3230 place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
3231 {
3232         u64 vruntime = cfs_rq->min_vruntime;
3233
3234         /*
3235          * The 'current' period is already promised to the current tasks,
3236          * however the extra weight of the new task will slow them down a
3237          * little, place the new task so that it fits in the slot that
3238          * stays open at the end.
3239          */
3240         if (initial && sched_feat(START_DEBIT))
3241                 vruntime += sched_vslice(cfs_rq, se);
3242
3243         /* sleeps up to a single latency don't count. */
3244         if (!initial) {
3245                 unsigned long thresh = sysctl_sched_latency;
3246
3247                 /*
3248                  * Halve their sleep time's effect, to allow
3249                  * for a gentler effect of sleepers:
3250                  */
3251                 if (sched_feat(GENTLE_FAIR_SLEEPERS))
3252                         thresh >>= 1;
3253
3254                 vruntime -= thresh;
3255         }
3256
3257         /* ensure we never gain time by being placed backwards. */
3258         se->vruntime = max_vruntime(se->vruntime, vruntime);
3259 }
3260
3261 static void check_enqueue_throttle(struct cfs_rq *cfs_rq);
3262
3263 static void
3264 enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
3265 {
3266         /*
3267          * Update the normalized vruntime before updating min_vruntime
3268          * through calling update_curr().
3269          */
3270         if (!(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_WAKING))
3271                 se->vruntime += cfs_rq->min_vruntime;
3272
3273         /*
3274          * Update run-time statistics of the 'current'.
3275          */
3276         update_curr(cfs_rq);
3277         enqueue_entity_load_avg(cfs_rq, se);
3278         account_entity_enqueue(cfs_rq, se);
3279         update_cfs_shares(cfs_rq);
3280
3281         if (flags & ENQUEUE_WAKEUP) {
3282                 place_entity(cfs_rq, se, 0);
3283                 enqueue_sleeper(cfs_rq, se);
3284         }
3285
3286         update_stats_enqueue(cfs_rq, se);
3287         check_spread(cfs_rq, se);
3288         if (se != cfs_rq->curr)
3289                 __enqueue_entity(cfs_rq, se);
3290         se->on_rq = 1;
3291
3292         if (cfs_rq->nr_running == 1) {
3293                 list_add_leaf_cfs_rq(cfs_rq);
3294                 check_enqueue_throttle(cfs_rq);
3295         }
3296 }
3297
3298 static void __clear_buddies_last(struct sched_entity *se)
3299 {
3300         for_each_sched_entity(se) {
3301                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
3302                 if (cfs_rq->last != se)
3303                         break;
3304
3305                 cfs_rq->last = NULL;
3306         }
3307 }
3308
3309 static void __clear_buddies_next(struct sched_entity *se)
3310 {
3311         for_each_sched_entity(se) {
3312                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
3313                 if (cfs_rq->next != se)
3314                         break;
3315
3316                 cfs_rq->next = NULL;
3317         }
3318 }
3319
3320 static void __clear_buddies_skip(struct sched_entity *se)
3321 {
3322         for_each_sched_entity(se) {
3323                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
3324                 if (cfs_rq->skip != se)
3325                         break;
3326
3327                 cfs_rq->skip = NULL;
3328         }
3329 }
3330
3331 static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
3332 {
3333         if (cfs_rq->last == se)
3334                 __clear_buddies_last(se);
3335
3336         if (cfs_rq->next == se)
3337                 __clear_buddies_next(se);
3338
3339         if (cfs_rq->skip == se)
3340                 __clear_buddies_skip(se);
3341 }
3342
3343 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
3344
3345 static void
3346 dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
3347 {
3348         /*
3349          * Update run-time statistics of the 'current'.
3350          */
3351         update_curr(cfs_rq);
3352         dequeue_entity_load_avg(cfs_rq, se);
3353
3354         update_stats_dequeue(cfs_rq, se);
3355         if (flags & DEQUEUE_SLEEP) {
3356 #ifdef CONFIG_SCHEDSTATS
3357                 if (entity_is_task(se)) {
3358                         struct task_struct *tsk = task_of(se);
3359
3360                         if (tsk->state & TASK_INTERRUPTIBLE)
3361                                 se->statistics.sleep_start = rq_clock(rq_of(cfs_rq));
3362                         if (tsk->state & TASK_UNINTERRUPTIBLE)
3363                                 se->statistics.block_start = rq_clock(rq_of(cfs_rq));
3364                 }
3365 #endif
3366         }
3367
3368         clear_buddies(cfs_rq, se);
3369
3370         if (se != cfs_rq->curr)
3371                 __dequeue_entity(cfs_rq, se);
3372         se->on_rq = 0;
3373         account_entity_dequeue(cfs_rq, se);
3374
3375         /*
3376          * Normalize the entity after updating the min_vruntime because the
3377          * update can refer to the ->curr item and we need to reflect this
3378          * movement in our normalized position.
3379          */
3380         if (!(flags & DEQUEUE_SLEEP))
3381                 se->vruntime -= cfs_rq->min_vruntime;
3382
3383         /* return excess runtime on last dequeue */
3384         return_cfs_rq_runtime(cfs_rq);
3385
3386         update_min_vruntime(cfs_rq);
3387         update_cfs_shares(cfs_rq);
3388 }
3389
3390 /*
3391  * Preempt the current task with a newly woken task if needed:
3392  */
3393 static void
3394 check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
3395 {
3396         unsigned long ideal_runtime, delta_exec;
3397         struct sched_entity *se;
3398         s64 delta;
3399
3400         ideal_runtime = sched_slice(cfs_rq, curr);
3401         delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;
3402         if (delta_exec > ideal_runtime) {
3403                 resched_curr(rq_of(cfs_rq));
3404                 /*
3405                  * The current task ran long enough, ensure it doesn't get
3406                  * re-elected due to buddy favours.
3407                  */
3408                 clear_buddies(cfs_rq, curr);
3409                 return;
3410         }
3411
3412         /*
3413          * Ensure that a task that missed wakeup preemption by a
3414          * narrow margin doesn't have to wait for a full slice.
3415          * This also mitigates buddy induced latencies under load.
3416          */
3417         if (delta_exec < sysctl_sched_min_granularity)
3418                 return;
3419
3420         se = __pick_first_entity(cfs_rq);
3421         delta = curr->vruntime - se->vruntime;
3422
3423         if (delta < 0)
3424                 return;
3425
3426         if (delta > ideal_runtime)
3427                 resched_curr(rq_of(cfs_rq));
3428 }
3429
3430 static void
3431 set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
3432 {
3433         /* 'current' is not kept within the tree. */
3434         if (se->on_rq) {
3435                 /*
3436                  * Any task has to be enqueued before it get to execute on
3437                  * a CPU. So account for the time it spent waiting on the
3438                  * runqueue.
3439                  */
3440                 update_stats_wait_end(cfs_rq, se);
3441                 __dequeue_entity(cfs_rq, se);
3442                 update_load_avg(se, 1);
3443         }
3444
3445         update_stats_curr_start(cfs_rq, se);
3446         cfs_rq->curr = se;
3447 #ifdef CONFIG_SCHEDSTATS
3448         /*
3449          * Track our maximum slice length, if the CPU's load is at
3450          * least twice that of our own weight (i.e. dont track it
3451          * when there are only lesser-weight tasks around):
3452          */
3453         if (rq_of(cfs_rq)->load.weight >= 2*se->load.weight) {
3454                 se->statistics.slice_max = max(se->statistics.slice_max,
3455                         se->sum_exec_runtime - se->prev_sum_exec_runtime);
3456         }
3457 #endif
3458         se->prev_sum_exec_runtime = se->sum_exec_runtime;
3459 }
3460
3461 static int
3462 wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se);
3463
3464 /*
3465  * Pick the next process, keeping these things in mind, in this order:
3466  * 1) keep things fair between processes/task groups
3467  * 2) pick the "next" process, since someone really wants that to run
3468  * 3) pick the "last" process, for cache locality
3469  * 4) do not run the "skip" process, if something else is available
3470  */
3471 static struct sched_entity *
3472 pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr)
3473 {
3474         struct sched_entity *left = __pick_first_entity(cfs_rq);
3475         struct sched_entity *se;
3476
3477         /*
3478          * If curr is set we have to see if its left of the leftmost entity
3479          * still in the tree, provided there was anything in the tree at all.
3480          */
3481         if (!left || (curr && entity_before(curr, left)))
3482                 left = curr;
3483
3484         se = left; /* ideally we run the leftmost entity */
3485
3486         /*
3487          * Avoid running the skip buddy, if running something else can
3488          * be done without getting too unfair.
3489          */
3490         if (cfs_rq->skip == se) {
3491                 struct sched_entity *second;
3492
3493                 if (se == curr) {
3494                         second = __pick_first_entity(cfs_rq);
3495                 } else {
3496                         second = __pick_next_entity(se);
3497                         if (!second || (curr && entity_before(curr, second)))
3498                                 second = curr;
3499                 }
3500
3501                 if (second && wakeup_preempt_entity(second, left) < 1)
3502                         se = second;
3503         }
3504
3505         /*
3506          * Prefer last buddy, try to return the CPU to a preempted task.
3507          */
3508         if (cfs_rq->last && wakeup_preempt_entity(cfs_rq->last, left) < 1)
3509                 se = cfs_rq->last;
3510
3511         /*
3512          * Someone really wants this to run. If it's not unfair, run it.
3513          */
3514         if (cfs_rq->next && wakeup_preempt_entity(cfs_rq->next, left) < 1)
3515                 se = cfs_rq->next;
3516
3517         clear_buddies(cfs_rq, se);
3518
3519         return se;
3520 }
3521
3522 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
3523
3524 static void put_prev_entity(struct cfs_rq *cfs_rq, struct sched_entity *prev)
3525 {
3526         /*
3527          * If still on the runqueue then deactivate_task()
3528          * was not called and update_curr() has to be done:
3529          */
3530         if (prev->on_rq)
3531                 update_curr(cfs_rq);
3532
3533         /* throttle cfs_rqs exceeding runtime */
3534         check_cfs_rq_runtime(cfs_rq);
3535
3536         check_spread(cfs_rq, prev);
3537         if (prev->on_rq) {
3538                 update_stats_wait_start(cfs_rq, prev);
3539                 /* Put 'current' back into the tree. */
3540                 __enqueue_entity(cfs_rq, prev);
3541                 /* in !on_rq case, update occurred at dequeue */
3542                 update_load_avg(prev, 0);
3543         }
3544         cfs_rq->curr = NULL;
3545 }
3546
3547 static void
3548 entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued)
3549 {
3550         /*
3551          * Update run-time statistics of the 'current'.
3552          */
3553         update_curr(cfs_rq);
3554
3555         /*
3556          * Ensure that runnable average is periodically updated.
3557          */
3558         update_load_avg(curr, 1);
3559         update_cfs_shares(cfs_rq);
3560
3561 #ifdef CONFIG_SCHED_HRTICK
3562         /*
3563          * queued ticks are scheduled to match the slice, so don't bother
3564          * validating it and just reschedule.
3565          */
3566         if (queued) {
3567                 resched_curr(rq_of(cfs_rq));
3568                 return;
3569         }
3570         /*
3571          * don't let the period tick interfere with the hrtick preemption
3572          */
3573         if (!sched_feat(DOUBLE_TICK) &&
3574                         hrtimer_active(&rq_of(cfs_rq)->hrtick_timer))
3575                 return;
3576 #endif
3577
3578         if (cfs_rq->nr_running > 1)
3579                 check_preempt_tick(cfs_rq, curr);
3580 }
3581
3582
3583 /**************************************************
3584  * CFS bandwidth control machinery
3585  */
3586
3587 #ifdef CONFIG_CFS_BANDWIDTH
3588
3589 #ifdef HAVE_JUMP_LABEL
3590 static struct static_key __cfs_bandwidth_used;
3591
3592 static inline bool cfs_bandwidth_used(void)
3593 {
3594         return static_key_false(&__cfs_bandwidth_used);
3595 }
3596
3597 void cfs_bandwidth_usage_inc(void)
3598 {
3599         static_key_slow_inc(&__cfs_bandwidth_used);
3600 }
3601
3602 void cfs_bandwidth_usage_dec(void)
3603 {
3604         static_key_slow_dec(&__cfs_bandwidth_used);
3605 }
3606 #else /* HAVE_JUMP_LABEL */
3607 static bool cfs_bandwidth_used(void)
3608 {
3609         return true;
3610 }
3611
3612 void cfs_bandwidth_usage_inc(void) {}
3613 void cfs_bandwidth_usage_dec(void) {}
3614 #endif /* HAVE_JUMP_LABEL */
3615
3616 /*
3617  * default period for cfs group bandwidth.
3618  * default: 0.1s, units: nanoseconds
3619  */
3620 static inline u64 default_cfs_period(void)
3621 {
3622         return 100000000ULL;
3623 }
3624
3625 static inline u64 sched_cfs_bandwidth_slice(void)
3626 {
3627         return (u64)sysctl_sched_cfs_bandwidth_slice * NSEC_PER_USEC;
3628 }
3629
3630 /*
3631  * Replenish runtime according to assigned quota and update expiration time.
3632  * We use sched_clock_cpu directly instead of rq->clock to avoid adding
3633  * additional synchronization around rq->lock.
3634  *
3635  * requires cfs_b->lock
3636  */
3637 void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b)
3638 {
3639         u64 now;
3640
3641         if (cfs_b->quota == RUNTIME_INF)
3642                 return;
3643
3644         now = sched_clock_cpu(smp_processor_id());
3645         cfs_b->runtime = cfs_b->quota;
3646         cfs_b->runtime_expires = now + ktime_to_ns(cfs_b->period);
3647 }
3648
3649 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
3650 {
3651         return &tg->cfs_bandwidth;
3652 }
3653
3654 /* rq->task_clock normalized against any time this cfs_rq has spent throttled */
3655 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq)
3656 {
3657         if (unlikely(cfs_rq->throttle_count))
3658                 return cfs_rq->throttled_clock_task;
3659
3660         return rq_clock_task(rq_of(cfs_rq)) - cfs_rq->throttled_clock_task_time;
3661 }
3662
3663 /* returns 0 on failure to allocate runtime */
3664 static int assign_cfs_rq_runtime(struct cfs_rq *cfs_rq)
3665 {
3666         struct task_group *tg = cfs_rq->tg;
3667         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(tg);
3668         u64 amount = 0, min_amount, expires;
3669
3670         /* note: this is a positive sum as runtime_remaining <= 0 */
3671         min_amount = sched_cfs_bandwidth_slice() - cfs_rq->runtime_remaining;
3672
3673         raw_spin_lock(&cfs_b->lock);
3674         if (cfs_b->quota == RUNTIME_INF)
3675                 amount = min_amount;
3676         else {
3677                 start_cfs_bandwidth(cfs_b);
3678
3679                 if (cfs_b->runtime > 0) {
3680                         amount = min(cfs_b->runtime, min_amount);
3681                         cfs_b->runtime -= amount;
3682                         cfs_b->idle = 0;
3683                 }
3684         }
3685         expires = cfs_b->runtime_expires;
3686         raw_spin_unlock(&cfs_b->lock);
3687
3688         cfs_rq->runtime_remaining += amount;
3689         /*
3690          * we may have advanced our local expiration to account for allowed
3691          * spread between our sched_clock and the one on which runtime was
3692          * issued.
3693          */
3694         if ((s64)(expires - cfs_rq->runtime_expires) > 0)
3695                 cfs_rq->runtime_expires = expires;
3696
3697         return cfs_rq->runtime_remaining > 0;
3698 }
3699
3700 /*
3701  * Note: This depends on the synchronization provided by sched_clock and the
3702  * fact that rq->clock snapshots this value.
3703  */
3704 static void expire_cfs_rq_runtime(struct cfs_rq *cfs_rq)
3705 {
3706         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
3707
3708         /* if the deadline is ahead of our clock, nothing to do */
3709         if (likely((s64)(rq_clock(rq_of(cfs_rq)) - cfs_rq->runtime_expires) < 0))
3710                 return;
3711
3712         if (cfs_rq->runtime_remaining < 0)
3713                 return;
3714
3715         /*
3716          * If the local deadline has passed we have to consider the
3717          * possibility that our sched_clock is 'fast' and the global deadline
3718          * has not truly expired.
3719          *
3720          * Fortunately we can check determine whether this the case by checking
3721          * whether the global deadline has advanced. It is valid to compare
3722          * cfs_b->runtime_expires without any locks since we only care about
3723          * exact equality, so a partial write will still work.
3724          */
3725
3726         if (cfs_rq->runtime_expires != cfs_b->runtime_expires) {
3727                 /* extend local deadline, drift is bounded above by 2 ticks */
3728                 cfs_rq->runtime_expires += TICK_NSEC;
3729         } else {
3730                 /* global deadline is ahead, expiration has passed */
3731                 cfs_rq->runtime_remaining = 0;
3732         }
3733 }
3734
3735 static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
3736 {
3737         /* dock delta_exec before expiring quota (as it could span periods) */
3738         cfs_rq->runtime_remaining -= delta_exec;
3739         expire_cfs_rq_runtime(cfs_rq);
3740
3741         if (likely(cfs_rq->runtime_remaining > 0))
3742                 return;
3743
3744         /*
3745          * if we're unable to extend our runtime we resched so that the active
3746          * hierarchy can be throttled
3747          */
3748         if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr))
3749                 resched_curr(rq_of(cfs_rq));
3750 }
3751
3752 static __always_inline
3753 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
3754 {
3755         if (!cfs_bandwidth_used() || !cfs_rq->runtime_enabled)
3756                 return;
3757
3758         __account_cfs_rq_runtime(cfs_rq, delta_exec);
3759 }
3760
3761 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
3762 {
3763         return cfs_bandwidth_used() && cfs_rq->throttled;
3764 }
3765
3766 /* check whether cfs_rq, or any parent, is throttled */
3767 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
3768 {
3769         return cfs_bandwidth_used() && cfs_rq->throttle_count;
3770 }
3771
3772 /*
3773  * Ensure that neither of the group entities corresponding to src_cpu or
3774  * dest_cpu are members of a throttled hierarchy when performing group
3775  * load-balance operations.
3776  */
3777 static inline int throttled_lb_pair(struct task_group *tg,
3778                                     int src_cpu, int dest_cpu)
3779 {
3780         struct cfs_rq *src_cfs_rq, *dest_cfs_rq;
3781
3782         src_cfs_rq = tg->cfs_rq[src_cpu];
3783         dest_cfs_rq = tg->cfs_rq[dest_cpu];
3784
3785         return throttled_hierarchy(src_cfs_rq) ||
3786                throttled_hierarchy(dest_cfs_rq);
3787 }
3788
3789 /* updated child weight may affect parent so we have to do this bottom up */
3790 static int tg_unthrottle_up(struct task_group *tg, void *data)
3791 {
3792         struct rq *rq = data;
3793         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
3794
3795         cfs_rq->throttle_count--;
3796 #ifdef CONFIG_SMP
3797         if (!cfs_rq->throttle_count) {
3798                 /* adjust cfs_rq_clock_task() */
3799                 cfs_rq->throttled_clock_task_time += rq_clock_task(rq) -
3800                                              cfs_rq->throttled_clock_task;
3801         }
3802 #endif
3803
3804         return 0;
3805 }
3806
3807 static int tg_throttle_down(struct task_group *tg, void *data)
3808 {
3809         struct rq *rq = data;
3810         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
3811
3812         /* group is entering throttled state, stop time */
3813         if (!cfs_rq->throttle_count)
3814                 cfs_rq->throttled_clock_task = rq_clock_task(rq);
3815         cfs_rq->throttle_count++;
3816
3817         return 0;
3818 }
3819
3820 static void throttle_cfs_rq(struct cfs_rq *cfs_rq)
3821 {
3822         struct rq *rq = rq_of(cfs_rq);
3823         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
3824         struct sched_entity *se;
3825         long task_delta, dequeue = 1;
3826         bool empty;
3827
3828         se = cfs_rq->tg->se[cpu_of(rq_of(cfs_rq))];
3829
3830         /* freeze hierarchy runnable averages while throttled */
3831         rcu_read_lock();
3832         walk_tg_tree_from(cfs_rq->tg, tg_throttle_down, tg_nop, (void *)rq);
3833         rcu_read_unlock();
3834
3835         task_delta = cfs_rq->h_nr_running;
3836         for_each_sched_entity(se) {
3837                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
3838                 /* throttled entity or throttle-on-deactivate */
3839                 if (!se->on_rq)
3840                         break;
3841
3842                 if (dequeue)
3843                         dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP);
3844                 qcfs_rq->h_nr_running -= task_delta;
3845
3846                 if (qcfs_rq->load.weight)
3847                         dequeue = 0;
3848         }
3849
3850         if (!se)
3851                 sub_nr_running(rq, task_delta);
3852
3853         cfs_rq->throttled = 1;
3854         cfs_rq->throttled_clock = rq_clock(rq);
3855         raw_spin_lock(&cfs_b->lock);
3856         empty = list_empty(&cfs_b->throttled_cfs_rq);
3857
3858         /*
3859          * Add to the _head_ of the list, so that an already-started
3860          * distribute_cfs_runtime will not see us
3861          */
3862         list_add_rcu(&cfs_rq->throttled_list, &cfs_b->throttled_cfs_rq);
3863
3864         /*
3865          * If we're the first throttled task, make sure the bandwidth
3866          * timer is running.
3867          */
3868         if (empty)
3869                 start_cfs_bandwidth(cfs_b);
3870
3871         raw_spin_unlock(&cfs_b->lock);
3872 }
3873
3874 void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
3875 {
3876         struct rq *rq = rq_of(cfs_rq);
3877         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
3878         struct sched_entity *se;
3879         int enqueue = 1;
3880         long task_delta;
3881
3882         se = cfs_rq->tg->se[cpu_of(rq)];
3883
3884         cfs_rq->throttled = 0;
3885
3886         update_rq_clock(rq);
3887
3888         raw_spin_lock(&cfs_b->lock);
3889         cfs_b->throttled_time += rq_clock(rq) - cfs_rq->throttled_clock;
3890         list_del_rcu(&cfs_rq->throttled_list);
3891         raw_spin_unlock(&cfs_b->lock);
3892
3893         /* update hierarchical throttle state */
3894         walk_tg_tree_from(cfs_rq->tg, tg_nop, tg_unthrottle_up, (void *)rq);
3895
3896         if (!cfs_rq->load.weight)
3897                 return;
3898
3899         task_delta = cfs_rq->h_nr_running;
3900         for_each_sched_entity(se) {
3901                 if (se->on_rq)
3902                         enqueue = 0;
3903
3904                 cfs_rq = cfs_rq_of(se);
3905                 if (enqueue)
3906                         enqueue_entity(cfs_rq, se, ENQUEUE_WAKEUP);
3907                 cfs_rq->h_nr_running += task_delta;
3908
3909                 if (cfs_rq_throttled(cfs_rq))
3910                         break;
3911         }
3912
3913         if (!se)
3914                 add_nr_running(rq, task_delta);
3915
3916         /* determine whether we need to wake up potentially idle cpu */
3917         if (rq->curr == rq->idle && rq->cfs.nr_running)
3918                 resched_curr(rq);
3919 }
3920
3921 static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b,
3922                 u64 remaining, u64 expires)
3923 {
3924         struct cfs_rq *cfs_rq;
3925         u64 runtime;
3926         u64 starting_runtime = remaining;
3927
3928         rcu_read_lock();
3929         list_for_each_entry_rcu(cfs_rq, &cfs_b->throttled_cfs_rq,
3930                                 throttled_list) {
3931                 struct rq *rq = rq_of(cfs_rq);
3932
3933                 raw_spin_lock(&rq->lock);
3934                 if (!cfs_rq_throttled(cfs_rq))
3935                         goto next;
3936
3937                 runtime = -cfs_rq->runtime_remaining + 1;
3938                 if (runtime > remaining)
3939                         runtime = remaining;
3940                 remaining -= runtime;
3941
3942                 cfs_rq->runtime_remaining += runtime;
3943                 cfs_rq->runtime_expires = expires;
3944
3945                 /* we check whether we're throttled above */
3946                 if (cfs_rq->runtime_remaining > 0)
3947                         unthrottle_cfs_rq(cfs_rq);
3948
3949 next:
3950                 raw_spin_unlock(&rq->lock);
3951
3952                 if (!remaining)
3953                         break;
3954         }
3955         rcu_read_unlock();
3956
3957         return starting_runtime - remaining;
3958 }
3959
3960 /*
3961  * Responsible for refilling a task_group's bandwidth and unthrottling its
3962  * cfs_rqs as appropriate. If there has been no activity within the last
3963  * period the timer is deactivated until scheduling resumes; cfs_b->idle is
3964  * used to track this state.
3965  */
3966 static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun)
3967 {
3968         u64 runtime, runtime_expires;
3969         int throttled;
3970
3971         /* no need to continue the timer with no bandwidth constraint */
3972         if (cfs_b->quota == RUNTIME_INF)
3973                 goto out_deactivate;
3974
3975         throttled = !list_empty(&cfs_b->throttled_cfs_rq);
3976         cfs_b->nr_periods += overrun;
3977
3978         /*
3979          * idle depends on !throttled (for the case of a large deficit), and if
3980          * we're going inactive then everything else can be deferred
3981          */
3982         if (cfs_b->idle && !throttled)
3983                 goto out_deactivate;
3984
3985         __refill_cfs_bandwidth_runtime(cfs_b);
3986
3987         if (!throttled) {
3988                 /* mark as potentially idle for the upcoming period */
3989                 cfs_b->idle = 1;
3990                 return 0;
3991         }
3992
3993         /* account preceding periods in which throttling occurred */
3994         cfs_b->nr_throttled += overrun;
3995
3996         runtime_expires = cfs_b->runtime_expires;
3997
3998         /*
3999          * This check is repeated as we are holding onto the new bandwidth while
4000          * we unthrottle. This can potentially race with an unthrottled group
4001          * trying to acquire new bandwidth from the global pool. This can result
4002          * in us over-using our runtime if it is all used during this loop, but
4003          * only by limited amounts in that extreme case.
4004          */
4005         while (throttled && cfs_b->runtime > 0) {
4006                 runtime = cfs_b->runtime;
4007                 raw_spin_unlock(&cfs_b->lock);
4008                 /* we can't nest cfs_b->lock while distributing bandwidth */
4009                 runtime = distribute_cfs_runtime(cfs_b, runtime,
4010                                                  runtime_expires);
4011                 raw_spin_lock(&cfs_b->lock);
4012
4013                 throttled = !list_empty(&cfs_b->throttled_cfs_rq);
4014
4015                 cfs_b->runtime -= min(runtime, cfs_b->runtime);
4016         }
4017
4018         /*
4019          * While we are ensured activity in the period following an
4020          * unthrottle, this also covers the case in which the new bandwidth is
4021          * insufficient to cover the existing bandwidth deficit.  (Forcing the
4022          * timer to remain active while there are any throttled entities.)
4023          */
4024         cfs_b->idle = 0;
4025
4026         return 0;
4027
4028 out_deactivate:
4029         return 1;
4030 }
4031
4032 /* a cfs_rq won't donate quota below this amount */
4033 static const u64 min_cfs_rq_runtime = 1 * NSEC_PER_MSEC;
4034 /* minimum remaining period time to redistribute slack quota */
4035 static const u64 min_bandwidth_expiration = 2 * NSEC_PER_MSEC;
4036 /* how long we wait to gather additional slack before distributing */
4037 static const u64 cfs_bandwidth_slack_period = 5 * NSEC_PER_MSEC;
4038
4039 /*
4040  * Are we near the end of the current quota period?
4041  *
4042  * Requires cfs_b->lock for hrtimer_expires_remaining to be safe against the
4043  * hrtimer base being cleared by hrtimer_start. In the case of
4044  * migrate_hrtimers, base is never cleared, so we are fine.
4045  */
4046 static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire)
4047 {
4048         struct hrtimer *refresh_timer = &cfs_b->period_timer;
4049         u64 remaining;
4050
4051         /* if the call-back is running a quota refresh is already occurring */
4052         if (hrtimer_callback_running(refresh_timer))
4053                 return 1;
4054
4055         /* is a quota refresh about to occur? */
4056         remaining = ktime_to_ns(hrtimer_expires_remaining(refresh_timer));
4057         if (remaining < min_expire)
4058                 return 1;
4059
4060         return 0;
4061 }
4062
4063 static void start_cfs_slack_bandwidth(struct cfs_bandwidth *cfs_b)
4064 {
4065         u64 min_left = cfs_bandwidth_slack_period + min_bandwidth_expiration;
4066
4067         /* if there's a quota refresh soon don't bother with slack */
4068         if (runtime_refresh_within(cfs_b, min_left))
4069                 return;
4070
4071         hrtimer_start(&cfs_b->slack_timer,
4072                         ns_to_ktime(cfs_bandwidth_slack_period),
4073                         HRTIMER_MODE_REL);
4074 }
4075
4076 /* we know any runtime found here is valid as update_curr() precedes return */
4077 static void __return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
4078 {
4079         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
4080         s64 slack_runtime = cfs_rq->runtime_remaining - min_cfs_rq_runtime;
4081
4082         if (slack_runtime <= 0)
4083                 return;
4084
4085         raw_spin_lock(&cfs_b->lock);
4086         if (cfs_b->quota != RUNTIME_INF &&
4087             cfs_rq->runtime_expires == cfs_b->runtime_expires) {
4088                 cfs_b->runtime += slack_runtime;
4089
4090                 /* we are under rq->lock, defer unthrottling using a timer */
4091                 if (cfs_b->runtime > sched_cfs_bandwidth_slice() &&
4092                     !list_empty(&cfs_b->throttled_cfs_rq))
4093                         start_cfs_slack_bandwidth(cfs_b);
4094         }
4095         raw_spin_unlock(&cfs_b->lock);
4096
4097         /* even if it's not valid for return we don't want to try again */
4098         cfs_rq->runtime_remaining -= slack_runtime;
4099 }
4100
4101 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
4102 {
4103         if (!cfs_bandwidth_used())
4104                 return;
4105
4106         if (!cfs_rq->runtime_enabled || cfs_rq->nr_running)
4107                 return;
4108
4109         __return_cfs_rq_runtime(cfs_rq);
4110 }
4111
4112 /*
4113  * This is done with a timer (instead of inline with bandwidth return) since
4114  * it's necessary to juggle rq->locks to unthrottle their respective cfs_rqs.
4115  */
4116 static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b)
4117 {
4118         u64 runtime = 0, slice = sched_cfs_bandwidth_slice();
4119         u64 expires;
4120
4121         /* confirm we're still not at a refresh boundary */
4122         raw_spin_lock(&cfs_b->lock);
4123         if (runtime_refresh_within(cfs_b, min_bandwidth_expiration)) {
4124                 raw_spin_unlock(&cfs_b->lock);
4125                 return;
4126         }
4127
4128         if (cfs_b->quota != RUNTIME_INF && cfs_b->runtime > slice)
4129                 runtime = cfs_b->runtime;
4130
4131         expires = cfs_b->runtime_expires;
4132         raw_spin_unlock(&cfs_b->lock);
4133
4134         if (!runtime)
4135                 return;
4136
4137         runtime = distribute_cfs_runtime(cfs_b, runtime, expires);
4138
4139         raw_spin_lock(&cfs_b->lock);
4140         if (expires == cfs_b->runtime_expires)
4141                 cfs_b->runtime -= min(runtime, cfs_b->runtime);
4142         raw_spin_unlock(&cfs_b->lock);
4143 }
4144
4145 /*
4146  * When a group wakes up we want to make sure that its quota is not already
4147  * expired/exceeded, otherwise it may be allowed to steal additional ticks of
4148  * runtime as update_curr() throttling can not not trigger until it's on-rq.
4149  */
4150 static void check_enqueue_throttle(struct cfs_rq *cfs_rq)
4151 {
4152         if (!cfs_bandwidth_used())
4153                 return;
4154
4155         /* Synchronize hierarchical throttle counter: */
4156         if (unlikely(!cfs_rq->throttle_uptodate)) {
4157                 struct rq *rq = rq_of(cfs_rq);
4158                 struct cfs_rq *pcfs_rq;
4159                 struct task_group *tg;
4160
4161                 cfs_rq->throttle_uptodate = 1;
4162
4163                 /* Get closest up-to-date node, because leaves go first: */
4164                 for (tg = cfs_rq->tg->parent; tg; tg = tg->parent) {
4165                         pcfs_rq = tg->cfs_rq[cpu_of(rq)];
4166                         if (pcfs_rq->throttle_uptodate)
4167                                 break;
4168                 }
4169                 if (tg) {
4170                         cfs_rq->throttle_count = pcfs_rq->throttle_count;
4171                         cfs_rq->throttled_clock_task = rq_clock_task(rq);
4172                 }
4173         }
4174
4175         /* an active group must be handled by the update_curr()->put() path */
4176         if (!cfs_rq->runtime_enabled || cfs_rq->curr)
4177                 return;
4178
4179         /* ensure the group is not already throttled */
4180         if (cfs_rq_throttled(cfs_rq))
4181                 return;
4182
4183         /* update runtime allocation */
4184         account_cfs_rq_runtime(cfs_rq, 0);
4185         if (cfs_rq->runtime_remaining <= 0)
4186                 throttle_cfs_rq(cfs_rq);
4187 }
4188
4189 /* conditionally throttle active cfs_rq's from put_prev_entity() */
4190 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq)
4191 {
4192         if (!cfs_bandwidth_used())
4193                 return false;
4194
4195         if (likely(!cfs_rq->runtime_enabled || cfs_rq->runtime_remaining > 0))
4196                 return false;
4197
4198         /*
4199          * it's possible for a throttled entity to be forced into a running
4200          * state (e.g. set_curr_task), in this case we're finished.
4201          */
4202         if (cfs_rq_throttled(cfs_rq))
4203                 return true;
4204
4205         throttle_cfs_rq(cfs_rq);
4206         return true;
4207 }
4208
4209 static enum hrtimer_restart sched_cfs_slack_timer(struct hrtimer *timer)
4210 {
4211         struct cfs_bandwidth *cfs_b =
4212                 container_of(timer, struct cfs_bandwidth, slack_timer);
4213
4214         do_sched_cfs_slack_timer(cfs_b);
4215
4216         return HRTIMER_NORESTART;
4217 }
4218
4219 static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer)
4220 {
4221         struct cfs_bandwidth *cfs_b =
4222                 container_of(timer, struct cfs_bandwidth, period_timer);
4223         int overrun;
4224         int idle = 0;
4225
4226         raw_spin_lock(&cfs_b->lock);
4227         for (;;) {
4228                 overrun = hrtimer_forward_now(timer, cfs_b->period);
4229                 if (!overrun)
4230                         break;
4231
4232                 idle = do_sched_cfs_period_timer(cfs_b, overrun);
4233         }
4234         if (idle)
4235                 cfs_b->period_active = 0;
4236         raw_spin_unlock(&cfs_b->lock);
4237
4238         return idle ? HRTIMER_NORESTART : HRTIMER_RESTART;
4239 }
4240
4241 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
4242 {
4243         raw_spin_lock_init(&cfs_b->lock);
4244         cfs_b->runtime = 0;
4245         cfs_b->quota = RUNTIME_INF;
4246         cfs_b->period = ns_to_ktime(default_cfs_period());
4247
4248         INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq);
4249         hrtimer_init(&cfs_b->period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED);
4250         cfs_b->period_timer.function = sched_cfs_period_timer;
4251         hrtimer_init(&cfs_b->slack_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
4252         cfs_b->slack_timer.function = sched_cfs_slack_timer;
4253 }
4254
4255 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq)
4256 {
4257         cfs_rq->runtime_enabled = 0;
4258         INIT_LIST_HEAD(&cfs_rq->throttled_list);
4259 }
4260
4261 void start_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
4262 {
4263         lockdep_assert_held(&cfs_b->lock);
4264
4265         if (!cfs_b->period_active) {
4266                 cfs_b->period_active = 1;
4267                 hrtimer_forward_now(&cfs_b->period_timer, cfs_b->period);
4268                 hrtimer_start_expires(&cfs_b->period_timer, HRTIMER_MODE_ABS_PINNED);
4269         }
4270 }
4271
4272 static void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
4273 {
4274         /* init_cfs_bandwidth() was not called */
4275         if (!cfs_b->throttled_cfs_rq.next)
4276                 return;
4277
4278         hrtimer_cancel(&cfs_b->period_timer);
4279         hrtimer_cancel(&cfs_b->slack_timer);
4280 }
4281
4282 static void __maybe_unused update_runtime_enabled(struct rq *rq)
4283 {
4284         struct cfs_rq *cfs_rq;
4285
4286         for_each_leaf_cfs_rq(rq, cfs_rq) {
4287                 struct cfs_bandwidth *cfs_b = &cfs_rq->tg->cfs_bandwidth;
4288
4289                 raw_spin_lock(&cfs_b->lock);
4290                 cfs_rq->runtime_enabled = cfs_b->quota != RUNTIME_INF;
4291                 raw_spin_unlock(&cfs_b->lock);
4292         }
4293 }
4294
4295 static void __maybe_unused unthrottle_offline_cfs_rqs(struct rq *rq)
4296 {
4297         struct cfs_rq *cfs_rq;
4298
4299         for_each_leaf_cfs_rq(rq, cfs_rq) {
4300                 if (!cfs_rq->runtime_enabled)
4301                         continue;
4302
4303                 /*
4304                  * clock_task is not advancing so we just need to make sure
4305                  * there's some valid quota amount
4306                  */
4307                 cfs_rq->runtime_remaining = 1;
4308                 /*
4309                  * Offline rq is schedulable till cpu is completely disabled
4310                  * in take_cpu_down(), so we prevent new cfs throttling here.
4311                  */
4312                 cfs_rq->runtime_enabled = 0;
4313
4314                 if (cfs_rq_throttled(cfs_rq))
4315                         unthrottle_cfs_rq(cfs_rq);
4316         }
4317 }
4318
4319 #else /* CONFIG_CFS_BANDWIDTH */
4320 static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq)
4321 {
4322         return rq_clock_task(rq_of(cfs_rq));
4323 }
4324
4325 static void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) {}
4326 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq) { return false; }
4327 static void check_enqueue_throttle(struct cfs_rq *cfs_rq) {}
4328 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
4329
4330 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
4331 {
4332         return 0;
4333 }
4334
4335 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
4336 {
4337         return 0;
4338 }
4339
4340 static inline int throttled_lb_pair(struct task_group *tg,
4341                                     int src_cpu, int dest_cpu)
4342 {
4343         return 0;
4344 }
4345
4346 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
4347
4348 #ifdef CONFIG_FAIR_GROUP_SCHED
4349 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
4350 #endif
4351
4352 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
4353 {
4354         return NULL;
4355 }
4356 static inline void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
4357 static inline void update_runtime_enabled(struct rq *rq) {}
4358 static inline void unthrottle_offline_cfs_rqs(struct rq *rq) {}
4359
4360 #endif /* CONFIG_CFS_BANDWIDTH */
4361
4362 /**************************************************
4363  * CFS operations on tasks:
4364  */
4365
4366 #ifdef CONFIG_SCHED_HRTICK
4367 static void hrtick_start_fair(struct rq *rq, struct task_struct *p)
4368 {
4369         struct sched_entity *se = &p->se;
4370         struct cfs_rq *cfs_rq = cfs_rq_of(se);
4371
4372         WARN_ON(task_rq(p) != rq);
4373
4374         if (cfs_rq->nr_running > 1) {
4375                 u64 slice = sched_slice(cfs_rq, se);
4376                 u64 ran = se->sum_exec_runtime - se->prev_sum_exec_runtime;
4377                 s64 delta = slice - ran;
4378
4379                 if (delta < 0) {
4380                         if (rq->curr == p)
4381                                 resched_curr(rq);
4382                         return;
4383                 }
4384                 hrtick_start(rq, delta);
4385         }
4386 }
4387
4388 /*
4389  * called from enqueue/dequeue and updates the hrtick when the
4390  * current task is from our class and nr_running is low enough
4391  * to matter.
4392  */
4393 static void hrtick_update(struct rq *rq)
4394 {
4395         struct task_struct *curr = rq->curr;
4396
4397         if (!hrtick_enabled(rq) || curr->sched_class != &fair_sched_class)
4398                 return;
4399
4400         if (cfs_rq_of(&curr->se)->nr_running < sched_nr_latency)
4401                 hrtick_start_fair(rq, curr);
4402 }
4403 #else /* !CONFIG_SCHED_HRTICK */
4404 static inline void
4405 hrtick_start_fair(struct rq *rq, struct task_struct *p)
4406 {
4407 }
4408
4409 static inline void hrtick_update(struct rq *rq)
4410 {
4411 }
4412 #endif
4413
4414 #ifdef CONFIG_SMP
4415 static bool cpu_overutilized(int cpu);
4416 unsigned long boosted_cpu_util(int cpu);
4417 #else
4418 #define boosted_cpu_util(cpu) cpu_util(cpu)
4419 #endif
4420
4421 #ifdef CONFIG_SMP
4422 static void update_capacity_of(int cpu)
4423 {
4424         unsigned long req_cap;
4425
4426         if (!sched_freq())
4427                 return;
4428
4429         /* Convert scale-invariant capacity to cpu. */
4430         req_cap = boosted_cpu_util(cpu);
4431         req_cap = req_cap * SCHED_CAPACITY_SCALE / capacity_orig_of(cpu);
4432         set_cfs_cpu_capacity(cpu, true, req_cap);
4433 }
4434 #endif
4435
4436 /*
4437  * The enqueue_task method is called before nr_running is
4438  * increased. Here we update the fair scheduling stats and
4439  * then put the task into the rbtree:
4440  */
4441 static void
4442 enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
4443 {
4444         struct cfs_rq *cfs_rq;
4445         struct sched_entity *se = &p->se;
4446 #ifdef CONFIG_SMP
4447         int task_new = flags & ENQUEUE_WAKEUP_NEW;
4448         int task_wakeup = flags & ENQUEUE_WAKEUP;
4449 #endif
4450
4451         /*
4452          * If in_iowait is set, the code below may not trigger any cpufreq
4453          * utilization updates, so do it here explicitly with the IOWAIT flag
4454          * passed.
4455          */
4456         if (p->in_iowait)
4457                 cpufreq_update_this_cpu(rq, SCHED_CPUFREQ_IOWAIT);
4458
4459         for_each_sched_entity(se) {
4460                 if (se->on_rq)
4461                         break;
4462                 cfs_rq = cfs_rq_of(se);
4463                 enqueue_entity(cfs_rq, se, flags);
4464
4465                 /*
4466                  * end evaluation on encountering a throttled cfs_rq
4467                  *
4468                  * note: in the case of encountering a throttled cfs_rq we will
4469                  * post the final h_nr_running increment below.
4470                 */
4471                 if (cfs_rq_throttled(cfs_rq))
4472                         break;
4473                 cfs_rq->h_nr_running++;
4474                 walt_inc_cfs_cumulative_runnable_avg(cfs_rq, p);
4475
4476                 flags = ENQUEUE_WAKEUP;
4477         }
4478
4479         for_each_sched_entity(se) {
4480                 cfs_rq = cfs_rq_of(se);
4481                 cfs_rq->h_nr_running++;
4482                 walt_inc_cfs_cumulative_runnable_avg(cfs_rq, p);
4483
4484                 if (cfs_rq_throttled(cfs_rq))
4485                         break;
4486
4487                 update_load_avg(se, 1);
4488                 update_cfs_shares(cfs_rq);
4489         }
4490
4491         if (!se)
4492                 add_nr_running(rq, 1);
4493
4494 #ifdef CONFIG_SMP
4495
4496         /*
4497          * Update SchedTune accounting.
4498          *
4499          * We do it before updating the CPU capacity to ensure the
4500          * boost value of the current task is accounted for in the
4501          * selection of the OPP.
4502          *
4503          * We do it also in the case where we enqueue a throttled task;
4504          * we could argue that a throttled task should not boost a CPU,
4505          * however:
4506          * a) properly implementing CPU boosting considering throttled
4507          *    tasks will increase a lot the complexity of the solution
4508          * b) it's not easy to quantify the benefits introduced by
4509          *    such a more complex solution.
4510          * Thus, for the time being we go for the simple solution and boost
4511          * also for throttled RQs.
4512          */
4513         schedtune_enqueue_task(p, cpu_of(rq));
4514
4515         if (!se) {
4516                 walt_inc_cumulative_runnable_avg(rq, p);
4517                 if (!task_new && !rq->rd->overutilized &&
4518                     cpu_overutilized(rq->cpu)) {
4519                         rq->rd->overutilized = true;
4520                         trace_sched_overutilized(true);
4521                 }
4522
4523                 /*
4524                  * We want to potentially trigger a freq switch
4525                  * request only for tasks that are waking up; this is
4526                  * because we get here also during load balancing, but
4527                  * in these cases it seems wise to trigger as single
4528                  * request after load balancing is done.
4529                  */
4530                 if (task_new || task_wakeup)
4531                         update_capacity_of(cpu_of(rq));
4532         }
4533
4534 #endif /* CONFIG_SMP */
4535         hrtick_update(rq);
4536 }
4537
4538 static void set_next_buddy(struct sched_entity *se);
4539
4540 /*
4541  * The dequeue_task method is called before nr_running is
4542  * decreased. We remove the task from the rbtree and
4543  * update the fair scheduling stats:
4544  */
4545 static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
4546 {
4547         struct cfs_rq *cfs_rq;
4548         struct sched_entity *se = &p->se;
4549         int task_sleep = flags & DEQUEUE_SLEEP;
4550
4551         for_each_sched_entity(se) {
4552                 cfs_rq = cfs_rq_of(se);
4553                 dequeue_entity(cfs_rq, se, flags);
4554
4555                 /*
4556                  * end evaluation on encountering a throttled cfs_rq
4557                  *
4558                  * note: in the case of encountering a throttled cfs_rq we will
4559                  * post the final h_nr_running decrement below.
4560                 */
4561                 if (cfs_rq_throttled(cfs_rq))
4562                         break;
4563                 cfs_rq->h_nr_running--;
4564                 walt_dec_cfs_cumulative_runnable_avg(cfs_rq, p);
4565
4566                 /* Don't dequeue parent if it has other entities besides us */
4567                 if (cfs_rq->load.weight) {
4568                         /* Avoid re-evaluating load for this entity: */
4569                         se = parent_entity(se);
4570                         /*
4571                          * Bias pick_next to pick a task from this cfs_rq, as
4572                          * p is sleeping when it is within its sched_slice.
4573                          */
4574                         if (task_sleep && se && !throttled_hierarchy(cfs_rq))
4575                                 set_next_buddy(se);
4576                         break;
4577                 }
4578                 flags |= DEQUEUE_SLEEP;
4579         }
4580
4581         for_each_sched_entity(se) {
4582                 cfs_rq = cfs_rq_of(se);
4583                 cfs_rq->h_nr_running--;
4584                 walt_dec_cfs_cumulative_runnable_avg(cfs_rq, p);
4585
4586                 if (cfs_rq_throttled(cfs_rq))
4587                         break;
4588
4589                 update_load_avg(se, 1);
4590                 update_cfs_shares(cfs_rq);
4591         }
4592
4593         if (!se)
4594                 sub_nr_running(rq, 1);
4595
4596 #ifdef CONFIG_SMP
4597
4598         /*
4599          * Update SchedTune accounting
4600          *
4601          * We do it before updating the CPU capacity to ensure the
4602          * boost value of the current task is accounted for in the
4603          * selection of the OPP.
4604          */
4605         schedtune_dequeue_task(p, cpu_of(rq));
4606
4607         if (!se) {
4608                 walt_dec_cumulative_runnable_avg(rq, p);
4609
4610                 /*
4611                  * We want to potentially trigger a freq switch
4612                  * request only for tasks that are going to sleep;
4613                  * this is because we get here also during load
4614                  * balancing, but in these cases it seems wise to
4615                  * trigger as single request after load balancing is
4616                  * done.
4617                  */
4618                 if (task_sleep) {
4619                         if (rq->cfs.nr_running)
4620                                 update_capacity_of(cpu_of(rq));
4621                         else if (sched_freq())
4622                                 set_cfs_cpu_capacity(cpu_of(rq), false, 0);
4623                 }
4624         }
4625
4626 #endif /* CONFIG_SMP */
4627
4628         hrtick_update(rq);
4629 }
4630
4631 #ifdef CONFIG_SMP
4632
4633 /*
4634  * per rq 'load' arrray crap; XXX kill this.
4635  */
4636
4637 /*
4638  * The exact cpuload at various idx values, calculated at every tick would be
4639  * load = (2^idx - 1) / 2^idx * load + 1 / 2^idx * cur_load
4640  *
4641  * If a cpu misses updates for n-1 ticks (as it was idle) and update gets called
4642  * on nth tick when cpu may be busy, then we have:
4643  * load = ((2^idx - 1) / 2^idx)^(n-1) * load
4644  * load = (2^idx - 1) / 2^idx) * load + 1 / 2^idx * cur_load
4645  *
4646  * decay_load_missed() below does efficient calculation of
4647  * load = ((2^idx - 1) / 2^idx)^(n-1) * load
4648  * avoiding 0..n-1 loop doing load = ((2^idx - 1) / 2^idx) * load
4649  *
4650  * The calculation is approximated on a 128 point scale.
4651  * degrade_zero_ticks is the number of ticks after which load at any
4652  * particular idx is approximated to be zero.
4653  * degrade_factor is a precomputed table, a row for each load idx.
4654  * Each column corresponds to degradation factor for a power of two ticks,
4655  * based on 128 point scale.
4656  * Example:
4657  * row 2, col 3 (=12) says that the degradation at load idx 2 after
4658  * 8 ticks is 12/128 (which is an approximation of exact factor 3^8/4^8).
4659  *
4660  * With this power of 2 load factors, we can degrade the load n times
4661  * by looking at 1 bits in n and doing as many mult/shift instead of
4662  * n mult/shifts needed by the exact degradation.
4663  */
4664 #define DEGRADE_SHIFT           7
4665 static const unsigned char
4666                 degrade_zero_ticks[CPU_LOAD_IDX_MAX] = {0, 8, 32, 64, 128};
4667 static const unsigned char
4668                 degrade_factor[CPU_LOAD_IDX_MAX][DEGRADE_SHIFT + 1] = {
4669                                         {0, 0, 0, 0, 0, 0, 0, 0},
4670                                         {64, 32, 8, 0, 0, 0, 0, 0},
4671                                         {96, 72, 40, 12, 1, 0, 0},
4672                                         {112, 98, 75, 43, 15, 1, 0},
4673                                         {120, 112, 98, 76, 45, 16, 2} };
4674
4675 /*
4676  * Update cpu_load for any missed ticks, due to tickless idle. The backlog
4677  * would be when CPU is idle and so we just decay the old load without
4678  * adding any new load.
4679  */
4680 static unsigned long
4681 decay_load_missed(unsigned long load, unsigned long missed_updates, int idx)
4682 {
4683         int j = 0;
4684
4685         if (!missed_updates)
4686                 return load;
4687
4688         if (missed_updates >= degrade_zero_ticks[idx])
4689                 return 0;
4690
4691         if (idx == 1)
4692                 return load >> missed_updates;
4693
4694         while (missed_updates) {
4695                 if (missed_updates % 2)
4696                         load = (load * degrade_factor[idx][j]) >> DEGRADE_SHIFT;
4697
4698                 missed_updates >>= 1;
4699                 j++;
4700         }
4701         return load;
4702 }
4703
4704 /*
4705  * Update rq->cpu_load[] statistics. This function is usually called every
4706  * scheduler tick (TICK_NSEC). With tickless idle this will not be called
4707  * every tick. We fix it up based on jiffies.
4708  */
4709 static void __update_cpu_load(struct rq *this_rq, unsigned long this_load,
4710                               unsigned long pending_updates)
4711 {
4712         int i, scale;
4713
4714         this_rq->nr_load_updates++;
4715
4716         /* Update our load: */
4717         this_rq->cpu_load[0] = this_load; /* Fasttrack for idx 0 */
4718         for (i = 1, scale = 2; i < CPU_LOAD_IDX_MAX; i++, scale += scale) {
4719                 unsigned long old_load, new_load;
4720
4721                 /* scale is effectively 1 << i now, and >> i divides by scale */
4722
4723                 old_load = this_rq->cpu_load[i];
4724                 old_load = decay_load_missed(old_load, pending_updates - 1, i);
4725                 new_load = this_load;
4726                 /*
4727                  * Round up the averaging division if load is increasing. This
4728                  * prevents us from getting stuck on 9 if the load is 10, for
4729                  * example.
4730                  */
4731                 if (new_load > old_load)
4732                         new_load += scale - 1;
4733
4734                 this_rq->cpu_load[i] = (old_load * (scale - 1) + new_load) >> i;
4735         }
4736
4737         sched_avg_update(this_rq);
4738 }
4739
4740 /* Used instead of source_load when we know the type == 0 */
4741 static unsigned long weighted_cpuload(const int cpu)
4742 {
4743         return cfs_rq_runnable_load_avg(&cpu_rq(cpu)->cfs);
4744 }
4745
4746 #ifdef CONFIG_NO_HZ_COMMON
4747 /*
4748  * There is no sane way to deal with nohz on smp when using jiffies because the
4749  * cpu doing the jiffies update might drift wrt the cpu doing the jiffy reading
4750  * causing off-by-one errors in observed deltas; {0,2} instead of {1,1}.
4751  *
4752  * Therefore we cannot use the delta approach from the regular tick since that
4753  * would seriously skew the load calculation. However we'll make do for those
4754  * updates happening while idle (nohz_idle_balance) or coming out of idle
4755  * (tick_nohz_idle_exit).
4756  *
4757  * This means we might still be one tick off for nohz periods.
4758  */
4759
4760 /*
4761  * Called from nohz_idle_balance() to update the load ratings before doing the
4762  * idle balance.
4763  */
4764 static void update_idle_cpu_load(struct rq *this_rq)
4765 {
4766         unsigned long curr_jiffies = READ_ONCE(jiffies);
4767         unsigned long load = weighted_cpuload(cpu_of(this_rq));
4768         unsigned long pending_updates;
4769
4770         /*
4771          * bail if there's load or we're actually up-to-date.
4772          */
4773         if (load || curr_jiffies == this_rq->last_load_update_tick)
4774                 return;
4775
4776         pending_updates = curr_jiffies - this_rq->last_load_update_tick;
4777         this_rq->last_load_update_tick = curr_jiffies;
4778
4779         __update_cpu_load(this_rq, load, pending_updates);
4780 }
4781
4782 /*
4783  * Called from tick_nohz_idle_exit() -- try and fix up the ticks we missed.
4784  */
4785 void update_cpu_load_nohz(void)
4786 {
4787         struct rq *this_rq = this_rq();
4788         unsigned long curr_jiffies = READ_ONCE(jiffies);
4789         unsigned long pending_updates;
4790
4791         if (curr_jiffies == this_rq->last_load_update_tick)
4792                 return;
4793
4794         raw_spin_lock(&this_rq->lock);
4795         pending_updates = curr_jiffies - this_rq->last_load_update_tick;
4796         if (pending_updates) {
4797                 this_rq->last_load_update_tick = curr_jiffies;
4798                 /*
4799                  * We were idle, this means load 0, the current load might be
4800                  * !0 due to remote wakeups and the sort.
4801                  */
4802                 __update_cpu_load(this_rq, 0, pending_updates);
4803         }
4804         raw_spin_unlock(&this_rq->lock);
4805 }
4806 #endif /* CONFIG_NO_HZ */
4807
4808 /*
4809  * Called from scheduler_tick()
4810  */
4811 void update_cpu_load_active(struct rq *this_rq)
4812 {
4813         unsigned long load = weighted_cpuload(cpu_of(this_rq));
4814         /*
4815          * See the mess around update_idle_cpu_load() / update_cpu_load_nohz().
4816          */
4817         this_rq->last_load_update_tick = jiffies;
4818         __update_cpu_load(this_rq, load, 1);
4819 }
4820
4821 /*
4822  * Return a low guess at the load of a migration-source cpu weighted
4823  * according to the scheduling class and "nice" value.
4824  *
4825  * We want to under-estimate the load of migration sources, to
4826  * balance conservatively.
4827  */
4828 static unsigned long source_load(int cpu, int type)
4829 {
4830         struct rq *rq = cpu_rq(cpu);
4831         unsigned long total = weighted_cpuload(cpu);
4832
4833         if (type == 0 || !sched_feat(LB_BIAS))
4834                 return total;
4835
4836         return min(rq->cpu_load[type-1], total);
4837 }
4838
4839 /*
4840  * Return a high guess at the load of a migration-target cpu weighted
4841  * according to the scheduling class and "nice" value.
4842  */
4843 static unsigned long target_load(int cpu, int type)
4844 {
4845         struct rq *rq = cpu_rq(cpu);
4846         unsigned long total = weighted_cpuload(cpu);
4847
4848         if (type == 0 || !sched_feat(LB_BIAS))
4849                 return total;
4850
4851         return max(rq->cpu_load[type-1], total);
4852 }
4853
4854
4855 static unsigned long cpu_avg_load_per_task(int cpu)
4856 {
4857         struct rq *rq = cpu_rq(cpu);
4858         unsigned long nr_running = READ_ONCE(rq->cfs.h_nr_running);
4859         unsigned long load_avg = weighted_cpuload(cpu);
4860
4861         if (nr_running)
4862                 return load_avg / nr_running;
4863
4864         return 0;
4865 }
4866
4867 static void record_wakee(struct task_struct *p)
4868 {
4869         /*
4870          * Rough decay (wiping) for cost saving, don't worry
4871          * about the boundary, really active task won't care
4872          * about the loss.
4873          */
4874         if (time_after(jiffies, current->wakee_flip_decay_ts + HZ)) {
4875                 current->wakee_flips >>= 1;
4876                 current->wakee_flip_decay_ts = jiffies;
4877         }
4878
4879         if (current->last_wakee != p) {
4880                 current->last_wakee = p;
4881                 current->wakee_flips++;
4882         }
4883 }
4884
4885 static void task_waking_fair(struct task_struct *p)
4886 {
4887         struct sched_entity *se = &p->se;
4888         struct cfs_rq *cfs_rq = cfs_rq_of(se);
4889         u64 min_vruntime;
4890
4891 #ifndef CONFIG_64BIT
4892         u64 min_vruntime_copy;
4893
4894         do {
4895                 min_vruntime_copy = cfs_rq->min_vruntime_copy;
4896                 smp_rmb();
4897                 min_vruntime = cfs_rq->min_vruntime;
4898         } while (min_vruntime != min_vruntime_copy);
4899 #else
4900         min_vruntime = cfs_rq->min_vruntime;
4901 #endif
4902
4903         se->vruntime -= min_vruntime;
4904         record_wakee(p);
4905 }
4906
4907 #ifdef CONFIG_FAIR_GROUP_SCHED
4908 /*
4909  * effective_load() calculates the load change as seen from the root_task_group
4910  *
4911  * Adding load to a group doesn't make a group heavier, but can cause movement
4912  * of group shares between cpus. Assuming the shares were perfectly aligned one
4913  * can calculate the shift in shares.
4914  *
4915  * Calculate the effective load difference if @wl is added (subtracted) to @tg
4916  * on this @cpu and results in a total addition (subtraction) of @wg to the
4917  * total group weight.
4918  *
4919  * Given a runqueue weight distribution (rw_i) we can compute a shares
4920  * distribution (s_i) using:
4921  *
4922  *   s_i = rw_i / \Sum rw_j                                             (1)
4923  *
4924  * Suppose we have 4 CPUs and our @tg is a direct child of the root group and
4925  * has 7 equal weight tasks, distributed as below (rw_i), with the resulting
4926  * shares distribution (s_i):
4927  *
4928  *   rw_i = {   2,   4,   1,   0 }
4929  *   s_i  = { 2/7, 4/7, 1/7,   0 }
4930  *
4931  * As per wake_affine() we're interested in the load of two CPUs (the CPU the
4932  * task used to run on and the CPU the waker is running on), we need to
4933  * compute the effect of waking a task on either CPU and, in case of a sync
4934  * wakeup, compute the effect of the current task going to sleep.
4935  *
4936  * So for a change of @wl to the local @cpu with an overall group weight change
4937  * of @wl we can compute the new shares distribution (s'_i) using:
4938  *
4939  *   s'_i = (rw_i + @wl) / (@wg + \Sum rw_j)                            (2)
4940  *
4941  * Suppose we're interested in CPUs 0 and 1, and want to compute the load
4942  * differences in waking a task to CPU 0. The additional task changes the
4943  * weight and shares distributions like:
4944  *
4945  *   rw'_i = {   3,   4,   1,   0 }
4946  *   s'_i  = { 3/8, 4/8, 1/8,   0 }
4947  *
4948  * We can then compute the difference in effective weight by using:
4949  *
4950  *   dw_i = S * (s'_i - s_i)                                            (3)
4951  *
4952  * Where 'S' is the group weight as seen by its parent.
4953  *
4954  * Therefore the effective change in loads on CPU 0 would be 5/56 (3/8 - 2/7)
4955  * times the weight of the group. The effect on CPU 1 would be -4/56 (4/8 -
4956  * 4/7) times the weight of the group.
4957  */
4958 static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
4959 {
4960         struct sched_entity *se = tg->se[cpu];
4961
4962         if (!tg->parent)        /* the trivial, non-cgroup case */
4963                 return wl;
4964
4965         for_each_sched_entity(se) {
4966                 struct cfs_rq *cfs_rq = se->my_q;
4967                 long W, w = cfs_rq_load_avg(cfs_rq);
4968
4969                 tg = cfs_rq->tg;
4970
4971                 /*
4972                  * W = @wg + \Sum rw_j
4973                  */
4974                 W = wg + atomic_long_read(&tg->load_avg);
4975
4976                 /* Ensure \Sum rw_j >= rw_i */
4977                 W -= cfs_rq->tg_load_avg_contrib;
4978                 W += w;
4979
4980                 /*
4981                  * w = rw_i + @wl
4982                  */
4983                 w += wl;
4984
4985                 /*
4986                  * wl = S * s'_i; see (2)
4987                  */
4988                 if (W > 0 && w < W)
4989                         wl = (w * (long)tg->shares) / W;
4990                 else
4991                         wl = tg->shares;
4992
4993                 /*
4994                  * Per the above, wl is the new se->load.weight value; since
4995                  * those are clipped to [MIN_SHARES, ...) do so now. See
4996                  * calc_cfs_shares().
4997                  */
4998                 if (wl < MIN_SHARES)
4999                         wl = MIN_SHARES;
5000
5001                 /*
5002                  * wl = dw_i = S * (s'_i - s_i); see (3)
5003                  */
5004                 wl -= se->avg.load_avg;
5005
5006                 /*
5007                  * Recursively apply this logic to all parent groups to compute
5008                  * the final effective load change on the root group. Since
5009                  * only the @tg group gets extra weight, all parent groups can
5010                  * only redistribute existing shares. @wl is the shift in shares
5011                  * resulting from this level per the above.
5012                  */
5013                 wg = 0;
5014         }
5015
5016         return wl;
5017 }
5018 #else
5019
5020 static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
5021 {
5022         return wl;
5023 }
5024
5025 #endif
5026
5027 /*
5028  * Returns the current capacity of cpu after applying both
5029  * cpu and freq scaling.
5030  */
5031 unsigned long capacity_curr_of(int cpu)
5032 {
5033         return cpu_rq(cpu)->cpu_capacity_orig *
5034                arch_scale_freq_capacity(NULL, cpu)
5035                >> SCHED_CAPACITY_SHIFT;
5036 }
5037
5038 static inline bool energy_aware(void)
5039 {
5040         return sched_feat(ENERGY_AWARE);
5041 }
5042
5043 struct energy_env {
5044         struct sched_group      *sg_top;
5045         struct sched_group      *sg_cap;
5046         int                     cap_idx;
5047         int                     util_delta;
5048         int                     src_cpu;
5049         int                     dst_cpu;
5050         int                     energy;
5051         int                     payoff;
5052         struct task_struct      *task;
5053         struct {
5054                 int before;
5055                 int after;
5056                 int delta;
5057                 int diff;
5058         } nrg;
5059         struct {
5060                 int before;
5061                 int after;
5062                 int delta;
5063         } cap;
5064 };
5065
5066 /*
5067  * __cpu_norm_util() returns the cpu util relative to a specific capacity,
5068  * i.e. it's busy ratio, in the range [0..SCHED_LOAD_SCALE] which is useful for
5069  * energy calculations. Using the scale-invariant util returned by
5070  * cpu_util() and approximating scale-invariant util by:
5071  *
5072  *   util ~ (curr_freq/max_freq)*1024 * capacity_orig/1024 * running_time/time
5073  *
5074  * the normalized util can be found using the specific capacity.
5075  *
5076  *   capacity = capacity_orig * curr_freq/max_freq
5077  *
5078  *   norm_util = running_time/time ~ util/capacity
5079  */
5080 static unsigned long __cpu_norm_util(int cpu, unsigned long capacity, int delta)
5081 {
5082         int util = __cpu_util(cpu, delta);
5083
5084         if (util >= capacity)
5085                 return SCHED_CAPACITY_SCALE;
5086
5087         return (util << SCHED_CAPACITY_SHIFT)/capacity;
5088 }
5089
5090 static int calc_util_delta(struct energy_env *eenv, int cpu)
5091 {
5092         if (cpu == eenv->src_cpu)
5093                 return -eenv->util_delta;
5094         if (cpu == eenv->dst_cpu)
5095                 return eenv->util_delta;
5096         return 0;
5097 }
5098
5099 static
5100 unsigned long group_max_util(struct energy_env *eenv)
5101 {
5102         int i, delta;
5103         unsigned long max_util = 0;
5104
5105         for_each_cpu(i, sched_group_cpus(eenv->sg_cap)) {
5106                 delta = calc_util_delta(eenv, i);
5107                 max_util = max(max_util, __cpu_util(i, delta));
5108         }
5109
5110         return max_util;
5111 }
5112
5113 /*
5114  * group_norm_util() returns the approximated group util relative to it's
5115  * current capacity (busy ratio) in the range [0..SCHED_LOAD_SCALE] for use in
5116  * energy calculations. Since task executions may or may not overlap in time in
5117  * the group the true normalized util is between max(cpu_norm_util(i)) and
5118  * sum(cpu_norm_util(i)) when iterating over all cpus in the group, i. The
5119  * latter is used as the estimate as it leads to a more pessimistic energy
5120  * estimate (more busy).
5121  */
5122 static unsigned
5123 long group_norm_util(struct energy_env *eenv, struct sched_group *sg)
5124 {
5125         int i, delta;
5126         unsigned long util_sum = 0;
5127         unsigned long capacity = sg->sge->cap_states[eenv->cap_idx].cap;
5128
5129         for_each_cpu(i, sched_group_cpus(sg)) {
5130                 delta = calc_util_delta(eenv, i);
5131                 util_sum += __cpu_norm_util(i, capacity, delta);
5132         }
5133
5134         if (util_sum > SCHED_CAPACITY_SCALE)
5135                 return SCHED_CAPACITY_SCALE;
5136         return util_sum;
5137 }
5138
5139 static int find_new_capacity(struct energy_env *eenv,
5140         const struct sched_group_energy * const sge)
5141 {
5142         int idx;
5143         unsigned long util = group_max_util(eenv);
5144
5145         for (idx = 0; idx < sge->nr_cap_states; idx++) {
5146                 if (sge->cap_states[idx].cap >= util)
5147                         break;
5148         }
5149
5150         eenv->cap_idx = idx;
5151
5152         return idx;
5153 }
5154
5155 static int group_idle_state(struct sched_group *sg)
5156 {
5157         int i, state = INT_MAX;
5158
5159         /* Find the shallowest idle state in the sched group. */
5160         for_each_cpu(i, sched_group_cpus(sg))
5161                 state = min(state, idle_get_state_idx(cpu_rq(i)));
5162
5163         /* Take non-cpuidle idling into account (active idle/arch_cpu_idle()) */
5164         state++;
5165
5166         return state;
5167 }
5168
5169 /*
5170  * sched_group_energy(): Computes the absolute energy consumption of cpus
5171  * belonging to the sched_group including shared resources shared only by
5172  * members of the group. Iterates over all cpus in the hierarchy below the
5173  * sched_group starting from the bottom working it's way up before going to
5174  * the next cpu until all cpus are covered at all levels. The current
5175  * implementation is likely to gather the same util statistics multiple times.
5176  * This can probably be done in a faster but more complex way.
5177  * Note: sched_group_energy() may fail when racing with sched_domain updates.
5178  */
5179 static int sched_group_energy(struct energy_env *eenv)
5180 {
5181         struct sched_domain *sd;
5182         int cpu, total_energy = 0;
5183         struct cpumask visit_cpus;
5184         struct sched_group *sg;
5185
5186         WARN_ON(!eenv->sg_top->sge);
5187
5188         cpumask_copy(&visit_cpus, sched_group_cpus(eenv->sg_top));
5189
5190         while (!cpumask_empty(&visit_cpus)) {
5191                 struct sched_group *sg_shared_cap = NULL;
5192
5193                 cpu = cpumask_first(&visit_cpus);
5194
5195                 /*
5196                  * Is the group utilization affected by cpus outside this
5197                  * sched_group?
5198                  */
5199                 sd = rcu_dereference(per_cpu(sd_scs, cpu));
5200
5201                 if (!sd)
5202                         /*
5203                          * We most probably raced with hotplug; returning a
5204                          * wrong energy estimation is better than entering an
5205                          * infinite loop.
5206                          */
5207                         return -EINVAL;
5208
5209                 if (sd->parent)
5210                         sg_shared_cap = sd->parent->groups;
5211
5212                 for_each_domain(cpu, sd) {
5213                         sg = sd->groups;
5214
5215                         /* Has this sched_domain already been visited? */
5216                         if (sd->child && group_first_cpu(sg) != cpu)
5217                                 break;
5218
5219                         do {
5220                                 unsigned long group_util;
5221                                 int sg_busy_energy, sg_idle_energy;
5222                                 int cap_idx, idle_idx;
5223
5224                                 if (sg_shared_cap && sg_shared_cap->group_weight >= sg->group_weight)
5225                                         eenv->sg_cap = sg_shared_cap;
5226                                 else
5227                                         eenv->sg_cap = sg;
5228
5229                                 cap_idx = find_new_capacity(eenv, sg->sge);
5230
5231                                 if (sg->group_weight == 1) {
5232                                         /* Remove capacity of src CPU (before task move) */
5233                                         if (eenv->util_delta == 0 &&
5234                                             cpumask_test_cpu(eenv->src_cpu, sched_group_cpus(sg))) {
5235                                                 eenv->cap.before = sg->sge->cap_states[cap_idx].cap;
5236                                                 eenv->cap.delta -= eenv->cap.before;
5237                                         }
5238                                         /* Add capacity of dst CPU  (after task move) */
5239                                         if (eenv->util_delta != 0 &&
5240                                             cpumask_test_cpu(eenv->dst_cpu, sched_group_cpus(sg))) {
5241                                                 eenv->cap.after = sg->sge->cap_states[cap_idx].cap;
5242                                                 eenv->cap.delta += eenv->cap.after;
5243                                         }
5244                                 }
5245
5246                                 idle_idx = group_idle_state(sg);
5247                                 group_util = group_norm_util(eenv, sg);
5248                                 sg_busy_energy = (group_util * sg->sge->cap_states[cap_idx].power)
5249                                                                 >> SCHED_CAPACITY_SHIFT;
5250                                 sg_idle_energy = ((SCHED_LOAD_SCALE-group_util)
5251                                                                 * sg->sge->idle_states[idle_idx].power)
5252                                                                 >> SCHED_CAPACITY_SHIFT;
5253
5254                                 total_energy += sg_busy_energy + sg_idle_energy;
5255
5256                                 if (!sd->child)
5257                                         cpumask_xor(&visit_cpus, &visit_cpus, sched_group_cpus(sg));
5258
5259                                 if (cpumask_equal(sched_group_cpus(sg), sched_group_cpus(eenv->sg_top)))
5260                                         goto next_cpu;
5261
5262                         } while (sg = sg->next, sg != sd->groups);
5263                 }
5264 next_cpu:
5265                 cpumask_clear_cpu(cpu, &visit_cpus);
5266                 continue;
5267         }
5268
5269         eenv->energy = total_energy;
5270         return 0;
5271 }
5272
5273 static inline bool cpu_in_sg(struct sched_group *sg, int cpu)
5274 {
5275         return cpu != -1 && cpumask_test_cpu(cpu, sched_group_cpus(sg));
5276 }
5277
5278 /*
5279  * energy_diff(): Estimate the energy impact of changing the utilization
5280  * distribution. eenv specifies the change: utilisation amount, source, and
5281  * destination cpu. Source or destination cpu may be -1 in which case the
5282  * utilization is removed from or added to the system (e.g. task wake-up). If
5283  * both are specified, the utilization is migrated.
5284  */
5285 static inline int __energy_diff(struct energy_env *eenv)
5286 {
5287         struct sched_domain *sd;
5288         struct sched_group *sg;
5289         int sd_cpu = -1, energy_before = 0, energy_after = 0;
5290         int diff, margin;
5291
5292         struct energy_env eenv_before = {
5293                 .util_delta     = 0,
5294                 .src_cpu        = eenv->src_cpu,
5295                 .dst_cpu        = eenv->dst_cpu,
5296                 .nrg            = { 0, 0, 0, 0},
5297                 .cap            = { 0, 0, 0 },
5298         };
5299
5300         if (eenv->src_cpu == eenv->dst_cpu)
5301                 return 0;
5302
5303         sd_cpu = (eenv->src_cpu != -1) ? eenv->src_cpu : eenv->dst_cpu;
5304         sd = rcu_dereference(per_cpu(sd_ea, sd_cpu));
5305
5306         if (!sd)
5307                 return 0; /* Error */
5308
5309         sg = sd->groups;
5310
5311         do {
5312                 if (cpu_in_sg(sg, eenv->src_cpu) || cpu_in_sg(sg, eenv->dst_cpu)) {
5313                         eenv_before.sg_top = eenv->sg_top = sg;
5314
5315                         if (sched_group_energy(&eenv_before))
5316                                 return 0; /* Invalid result abort */
5317                         energy_before += eenv_before.energy;
5318
5319                         /* Keep track of SRC cpu (before) capacity */
5320                         eenv->cap.before = eenv_before.cap.before;
5321                         eenv->cap.delta = eenv_before.cap.delta;
5322
5323                         if (sched_group_energy(eenv))
5324                                 return 0; /* Invalid result abort */
5325                         energy_after += eenv->energy;
5326                 }
5327         } while (sg = sg->next, sg != sd->groups);
5328
5329         eenv->nrg.before = energy_before;
5330         eenv->nrg.after = energy_after;
5331         eenv->nrg.diff = eenv->nrg.after - eenv->nrg.before;
5332         eenv->payoff = 0;
5333
5334         trace_sched_energy_diff(eenv->task,
5335                         eenv->src_cpu, eenv->dst_cpu, eenv->util_delta,
5336                         eenv->nrg.before, eenv->nrg.after, eenv->nrg.diff,
5337                         eenv->cap.before, eenv->cap.after, eenv->cap.delta,
5338                         eenv->nrg.delta, eenv->payoff);
5339
5340         /*
5341          * Dead-zone margin preventing too many migrations.
5342          */
5343
5344         margin = eenv->nrg.before >> 6; /* ~1.56% */
5345
5346         diff = eenv->nrg.after - eenv->nrg.before;
5347
5348         eenv->nrg.diff = (abs(diff) < margin) ? 0 : eenv->nrg.diff;
5349
5350         return eenv->nrg.diff;
5351 }
5352
5353 #ifdef CONFIG_SCHED_TUNE
5354
5355 struct target_nrg schedtune_target_nrg;
5356
5357 /*
5358  * System energy normalization
5359  * Returns the normalized value, in the range [0..SCHED_LOAD_SCALE],
5360  * corresponding to the specified energy variation.
5361  */
5362 static inline int
5363 normalize_energy(int energy_diff)
5364 {
5365         u32 normalized_nrg;
5366 #ifdef CONFIG_SCHED_DEBUG
5367         int max_delta;
5368
5369         /* Check for boundaries */
5370         max_delta  = schedtune_target_nrg.max_power;
5371         max_delta -= schedtune_target_nrg.min_power;
5372         WARN_ON(abs(energy_diff) >= max_delta);
5373 #endif
5374
5375         /* Do scaling using positive numbers to increase the range */
5376         normalized_nrg = (energy_diff < 0) ? -energy_diff : energy_diff;
5377
5378         /* Scale by energy magnitude */
5379         normalized_nrg <<= SCHED_LOAD_SHIFT;
5380
5381         /* Normalize on max energy for target platform */
5382         normalized_nrg = reciprocal_divide(
5383                         normalized_nrg, schedtune_target_nrg.rdiv);
5384
5385         return (energy_diff < 0) ? -normalized_nrg : normalized_nrg;
5386 }
5387
5388 static inline int
5389 energy_diff(struct energy_env *eenv)
5390 {
5391         int boost = schedtune_task_boost(eenv->task);
5392         int nrg_delta;
5393
5394         /* Conpute "absolute" energy diff */
5395         __energy_diff(eenv);
5396
5397         /* Return energy diff when boost margin is 0 */
5398         if (boost == 0)
5399                 return eenv->nrg.diff;
5400
5401         /* Compute normalized energy diff */
5402         nrg_delta = normalize_energy(eenv->nrg.diff);
5403         eenv->nrg.delta = nrg_delta;
5404
5405         eenv->payoff = schedtune_accept_deltas(
5406                         eenv->nrg.delta,
5407                         eenv->cap.delta,
5408                         eenv->task);
5409
5410         /*
5411          * When SchedTune is enabled, the energy_diff() function will return
5412          * the computed energy payoff value. Since the energy_diff() return
5413          * value is expected to be negative by its callers, this evaluation
5414          * function return a negative value each time the evaluation return a
5415          * positive payoff, which is the condition for the acceptance of
5416          * a scheduling decision
5417          */
5418         return -eenv->payoff;
5419 }
5420 #else /* CONFIG_SCHED_TUNE */
5421 #define energy_diff(eenv) __energy_diff(eenv)
5422 #endif
5423
5424 /*
5425  * Detect M:N waker/wakee relationships via a switching-frequency heuristic.
5426  * A waker of many should wake a different task than the one last awakened
5427  * at a frequency roughly N times higher than one of its wakees.  In order
5428  * to determine whether we should let the load spread vs consolodating to
5429  * shared cache, we look for a minimum 'flip' frequency of llc_size in one
5430  * partner, and a factor of lls_size higher frequency in the other.  With
5431  * both conditions met, we can be relatively sure that the relationship is
5432  * non-monogamous, with partner count exceeding socket size.  Waker/wakee
5433  * being client/server, worker/dispatcher, interrupt source or whatever is
5434  * irrelevant, spread criteria is apparent partner count exceeds socket size.
5435  */
5436 static int wake_wide(struct task_struct *p)
5437 {
5438         unsigned int master = current->wakee_flips;
5439         unsigned int slave = p->wakee_flips;
5440         int factor = this_cpu_read(sd_llc_size);
5441
5442         if (master < slave)
5443                 swap(master, slave);
5444         if (slave < factor || master < slave * factor)
5445                 return 0;
5446         return 1;
5447 }
5448
5449 static int wake_affine(struct sched_domain *sd, struct task_struct *p,
5450                        int prev_cpu, int sync)
5451 {
5452         s64 this_load, load;
5453         s64 this_eff_load, prev_eff_load;
5454         int idx, this_cpu;
5455         struct task_group *tg;
5456         unsigned long weight;
5457         int balanced;
5458
5459         idx       = sd->wake_idx;
5460         this_cpu  = smp_processor_id();
5461         load      = source_load(prev_cpu, idx);
5462         this_load = target_load(this_cpu, idx);
5463
5464         /*
5465          * If sync wakeup then subtract the (maximum possible)
5466          * effect of the currently running task from the load
5467          * of the current CPU:
5468          */
5469         if (sync) {
5470                 tg = task_group(current);
5471                 weight = current->se.avg.load_avg;
5472
5473                 this_load += effective_load(tg, this_cpu, -weight, -weight);
5474                 load += effective_load(tg, prev_cpu, 0, -weight);
5475         }
5476
5477         tg = task_group(p);
5478         weight = p->se.avg.load_avg;
5479
5480         /*
5481          * In low-load situations, where prev_cpu is idle and this_cpu is idle
5482          * due to the sync cause above having dropped this_load to 0, we'll
5483          * always have an imbalance, but there's really nothing you can do
5484          * about that, so that's good too.
5485          *
5486          * Otherwise check if either cpus are near enough in load to allow this
5487          * task to be woken on this_cpu.
5488          */
5489         this_eff_load = 100;
5490         this_eff_load *= capacity_of(prev_cpu);
5491
5492         prev_eff_load = 100 + (sd->imbalance_pct - 100) / 2;
5493         prev_eff_load *= capacity_of(this_cpu);
5494
5495         if (this_load > 0) {
5496                 this_eff_load *= this_load +
5497                         effective_load(tg, this_cpu, weight, weight);
5498
5499                 prev_eff_load *= load + effective_load(tg, prev_cpu, 0, weight);
5500         }
5501
5502         balanced = this_eff_load <= prev_eff_load;
5503
5504         schedstat_inc(p, se.statistics.nr_wakeups_affine_attempts);
5505
5506         if (!balanced)
5507                 return 0;
5508
5509         schedstat_inc(sd, ttwu_move_affine);
5510         schedstat_inc(p, se.statistics.nr_wakeups_affine);
5511
5512         return 1;
5513 }
5514
5515 static inline unsigned long task_util(struct task_struct *p)
5516 {
5517 #ifdef CONFIG_SCHED_WALT
5518         if (!walt_disabled && sysctl_sched_use_walt_task_util) {
5519                 unsigned long demand = p->ravg.demand;
5520                 return (demand << 10) / walt_ravg_window;
5521         }
5522 #endif
5523         return p->se.avg.util_avg;
5524 }
5525
5526 static inline unsigned long boosted_task_util(struct task_struct *task);
5527
5528 static inline bool __task_fits(struct task_struct *p, int cpu, int util)
5529 {
5530         unsigned long capacity = capacity_of(cpu);
5531
5532         util += boosted_task_util(p);
5533
5534         return (capacity * 1024) > (util * capacity_margin);
5535 }
5536
5537 static inline bool task_fits_max(struct task_struct *p, int cpu)
5538 {
5539         unsigned long capacity = capacity_of(cpu);
5540         unsigned long max_capacity = cpu_rq(cpu)->rd->max_cpu_capacity.val;
5541
5542         if (capacity == max_capacity)
5543                 return true;
5544
5545         if (capacity * capacity_margin > max_capacity * 1024)
5546                 return true;
5547
5548         return __task_fits(p, cpu, 0);
5549 }
5550
5551 static bool cpu_overutilized(int cpu)
5552 {
5553         return (capacity_of(cpu) * 1024) < (cpu_util(cpu) * capacity_margin);
5554 }
5555
5556 #ifdef CONFIG_SCHED_TUNE
5557
5558 static long
5559 schedtune_margin(unsigned long signal, long boost)
5560 {
5561         long long margin = 0;
5562
5563         /*
5564          * Signal proportional compensation (SPC)
5565          *
5566          * The Boost (B) value is used to compute a Margin (M) which is
5567          * proportional to the complement of the original Signal (S):
5568          *   M = B * (SCHED_LOAD_SCALE - S), if B is positive
5569          *   M = B * S, if B is negative
5570          * The obtained M could be used by the caller to "boost" S.
5571          */
5572         if (boost >= 0) {
5573                 margin  = SCHED_LOAD_SCALE - signal;
5574                 margin *= boost;
5575         } else
5576                 margin = -signal * boost;
5577         /*
5578          * Fast integer division by constant:
5579          *  Constant   :                 (C) = 100
5580          *  Precision  : 0.1%            (P) = 0.1
5581          *  Reference  : C * 100 / P     (R) = 100000
5582          *
5583          * Thus:
5584          *  Shift bits : ceil(log(R,2))  (S) = 17
5585          *  Mult const : round(2^S/C)    (M) = 1311
5586          *
5587          *
5588          */
5589         margin  *= 1311;
5590         margin >>= 17;
5591
5592         if (boost < 0)
5593                 margin *= -1;
5594         return margin;
5595 }
5596
5597 static inline int
5598 schedtune_cpu_margin(unsigned long util, int cpu)
5599 {
5600         int boost = schedtune_cpu_boost(cpu);
5601
5602         if (boost == 0)
5603                 return 0;
5604
5605         return schedtune_margin(util, boost);
5606 }
5607
5608 static inline long
5609 schedtune_task_margin(struct task_struct *task)
5610 {
5611         int boost = schedtune_task_boost(task);
5612         unsigned long util;
5613         long margin;
5614
5615         if (boost == 0)
5616                 return 0;
5617
5618         util = task_util(task);
5619         margin = schedtune_margin(util, boost);
5620
5621         return margin;
5622 }
5623
5624 #else /* CONFIG_SCHED_TUNE */
5625
5626 static inline int
5627 schedtune_cpu_margin(unsigned long util, int cpu)
5628 {
5629         return 0;
5630 }
5631
5632 static inline int
5633 schedtune_task_margin(struct task_struct *task)
5634 {
5635         return 0;
5636 }
5637
5638 #endif /* CONFIG_SCHED_TUNE */
5639
5640 unsigned long
5641 boosted_cpu_util(int cpu)
5642 {
5643         unsigned long util = cpu_util(cpu);
5644         long margin = schedtune_cpu_margin(util, cpu);
5645
5646         trace_sched_boost_cpu(cpu, util, margin);
5647
5648         return util + margin;
5649 }
5650
5651 static inline unsigned long
5652 boosted_task_util(struct task_struct *task)
5653 {
5654         unsigned long util = task_util(task);
5655         long margin = schedtune_task_margin(task);
5656
5657         trace_sched_boost_task(task, util, margin);
5658
5659         return util + margin;
5660 }
5661
5662 static int cpu_util_wake(int cpu, struct task_struct *p);
5663
5664 static unsigned long capacity_spare_wake(int cpu, struct task_struct *p)
5665 {
5666         return capacity_orig_of(cpu) - cpu_util_wake(cpu, p);
5667 }
5668
5669 /*
5670  * find_idlest_group finds and returns the least busy CPU group within the
5671  * domain.
5672  */
5673 static struct sched_group *
5674 find_idlest_group(struct sched_domain *sd, struct task_struct *p,
5675                   int this_cpu, int sd_flag)
5676 {
5677         struct sched_group *idlest = NULL, *group = sd->groups;
5678         struct sched_group *most_spare_sg = NULL;
5679         unsigned long min_load = ULONG_MAX, this_load = 0;
5680         unsigned long most_spare = 0, this_spare = 0;
5681         int load_idx = sd->forkexec_idx;
5682         int imbalance = 100 + (sd->imbalance_pct-100)/2;
5683
5684         if (sd_flag & SD_BALANCE_WAKE)
5685                 load_idx = sd->wake_idx;
5686
5687         do {
5688                 unsigned long load, avg_load, spare_cap, max_spare_cap;
5689                 int local_group;
5690                 int i;
5691
5692                 /* Skip over this group if it has no CPUs allowed */
5693                 if (!cpumask_intersects(sched_group_cpus(group),
5694                                         tsk_cpus_allowed(p)))
5695                         continue;
5696
5697                 local_group = cpumask_test_cpu(this_cpu,
5698                                                sched_group_cpus(group));
5699
5700                 /*
5701                  * Tally up the load of all CPUs in the group and find
5702                  * the group containing the CPU with most spare capacity.
5703                  */
5704                 avg_load = 0;
5705                 max_spare_cap = 0;
5706
5707                 for_each_cpu(i, sched_group_cpus(group)) {
5708                         /* Bias balancing toward cpus of our domain */
5709                         if (local_group)
5710                                 load = source_load(i, load_idx);
5711                         else
5712                                 load = target_load(i, load_idx);
5713
5714                         avg_load += load;
5715
5716                         spare_cap = capacity_spare_wake(i, p);
5717
5718                         if (spare_cap > max_spare_cap)
5719                                 max_spare_cap = spare_cap;
5720                 }
5721
5722                 /* Adjust by relative CPU capacity of the group */
5723                 avg_load = (avg_load * SCHED_CAPACITY_SCALE) / group->sgc->capacity;
5724
5725                 if (local_group) {
5726                         this_load = avg_load;
5727                         this_spare = max_spare_cap;
5728                 } else {
5729                         if (avg_load < min_load) {
5730                                 min_load = avg_load;
5731                                 idlest = group;
5732                         }
5733
5734                         if (most_spare < max_spare_cap) {
5735                                 most_spare = max_spare_cap;
5736                                 most_spare_sg = group;
5737                         }
5738                 }
5739         } while (group = group->next, group != sd->groups);
5740
5741         /*
5742          * The cross-over point between using spare capacity or least load
5743          * is too conservative for high utilization tasks on partially
5744          * utilized systems if we require spare_capacity > task_util(p),
5745          * so we allow for some task stuffing by using
5746          * spare_capacity > task_util(p)/2.
5747          */
5748         if (this_spare > task_util(p) / 2 &&
5749             imbalance*this_spare > 100*most_spare)
5750                 return NULL;
5751         else if (most_spare > task_util(p) / 2)
5752                 return most_spare_sg;
5753
5754         if (!idlest || 100*this_load < imbalance*min_load)
5755                 return NULL;
5756         return idlest;
5757 }
5758
5759 /*
5760  * find_idlest_cpu - find the idlest cpu among the cpus in group.
5761  */
5762 static int
5763 find_idlest_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
5764 {
5765         unsigned long load, min_load = ULONG_MAX;
5766         unsigned int min_exit_latency = UINT_MAX;
5767         u64 latest_idle_timestamp = 0;
5768         int least_loaded_cpu = this_cpu;
5769         int shallowest_idle_cpu = -1;
5770         int i;
5771
5772         /* Check if we have any choice: */
5773         if (group->group_weight == 1)
5774                 return cpumask_first(sched_group_cpus(group));
5775
5776         /* Traverse only the allowed CPUs */
5777         for_each_cpu_and(i, sched_group_cpus(group), tsk_cpus_allowed(p)) {
5778                 if (idle_cpu(i)) {
5779                         struct rq *rq = cpu_rq(i);
5780                         struct cpuidle_state *idle = idle_get_state(rq);
5781                         if (idle && idle->exit_latency < min_exit_latency) {
5782                                 /*
5783                                  * We give priority to a CPU whose idle state
5784                                  * has the smallest exit latency irrespective
5785                                  * of any idle timestamp.
5786                                  */
5787                                 min_exit_latency = idle->exit_latency;
5788                                 latest_idle_timestamp = rq->idle_stamp;
5789                                 shallowest_idle_cpu = i;
5790                         } else if ((!idle || idle->exit_latency == min_exit_latency) &&
5791                                    rq->idle_stamp > latest_idle_timestamp) {
5792                                 /*
5793                                  * If equal or no active idle state, then
5794                                  * the most recently idled CPU might have
5795                                  * a warmer cache.
5796                                  */
5797                                 latest_idle_timestamp = rq->idle_stamp;
5798                                 shallowest_idle_cpu = i;
5799                         }
5800                 } else if (shallowest_idle_cpu == -1) {
5801                         load = weighted_cpuload(i);
5802                         if (load < min_load || (load == min_load && i == this_cpu)) {
5803                                 min_load = load;
5804                                 least_loaded_cpu = i;
5805                         }
5806                 }
5807         }
5808
5809         return shallowest_idle_cpu != -1 ? shallowest_idle_cpu : least_loaded_cpu;
5810 }
5811
5812 /*
5813  * Try and locate an idle CPU in the sched_domain.
5814  */
5815 static int select_idle_sibling(struct task_struct *p, int prev, int target)
5816 {
5817         struct sched_domain *sd;
5818         struct sched_group *sg;
5819         int best_idle_cpu = -1;
5820         int best_idle_cstate = INT_MAX;
5821         unsigned long best_idle_capacity = ULONG_MAX;
5822
5823         if (!sysctl_sched_cstate_aware) {
5824                 if (idle_cpu(target))
5825                         return target;
5826
5827                 /*
5828                  * If the prevous cpu is cache affine and idle, don't be stupid.
5829                  */
5830                 if (prev != target && cpus_share_cache(prev, target) && idle_cpu(prev))
5831                         return prev;
5832         }
5833
5834         /*
5835          * Otherwise, iterate the domains and find an elegible idle cpu.
5836          */
5837         sd = rcu_dereference(per_cpu(sd_llc, target));
5838         for_each_lower_domain(sd) {
5839                 sg = sd->groups;
5840                 do {
5841                         int i;
5842                         if (!cpumask_intersects(sched_group_cpus(sg),
5843                                                 tsk_cpus_allowed(p)))
5844                                 goto next;
5845
5846                         if (sysctl_sched_cstate_aware) {
5847                                 for_each_cpu_and(i, tsk_cpus_allowed(p), sched_group_cpus(sg)) {
5848                                         int idle_idx = idle_get_state_idx(cpu_rq(i));
5849                                         unsigned long new_usage = boosted_task_util(p);
5850                                         unsigned long capacity_orig = capacity_orig_of(i);
5851
5852                                         if (new_usage > capacity_orig || !idle_cpu(i))
5853                                                 goto next;
5854
5855                                         if (i == target && new_usage <= capacity_curr_of(target))
5856                                                 return target;
5857
5858                                         if (idle_idx < best_idle_cstate &&
5859                                             capacity_orig <= best_idle_capacity) {
5860                                                 best_idle_cpu = i;
5861                                                 best_idle_cstate = idle_idx;
5862                                                 best_idle_capacity = capacity_orig;
5863                                         }
5864                                 }
5865                         } else {
5866                                 for_each_cpu(i, sched_group_cpus(sg)) {
5867                                         if (i == target || !idle_cpu(i))
5868                                                 goto next;
5869                                 }
5870
5871                                 target = cpumask_first_and(sched_group_cpus(sg),
5872                                         tsk_cpus_allowed(p));
5873                                 goto done;
5874                         }
5875 next:
5876                         sg = sg->next;
5877                 } while (sg != sd->groups);
5878         }
5879
5880         if (best_idle_cpu >= 0)
5881                 target = best_idle_cpu;
5882
5883 done:
5884         return target;
5885 }
5886
5887 static int start_cpu(bool boosted)
5888 {
5889         struct root_domain *rd = cpu_rq(smp_processor_id())->rd;
5890
5891         RCU_LOCKDEP_WARN(rcu_read_lock_sched_held(),
5892                            "sched RCU must be held");
5893
5894         return boosted ? rd->max_cap_orig_cpu : rd->min_cap_orig_cpu;
5895 }
5896
5897 static inline int find_best_target(struct task_struct *p, bool boosted, bool prefer_idle)
5898 {
5899         int target_cpu = -1;
5900         unsigned long target_util = prefer_idle ? ULONG_MAX : 0;
5901         unsigned long backup_capacity = ULONG_MAX;
5902         int best_idle_cpu = -1;
5903         int best_idle_cstate = INT_MAX;
5904         int backup_cpu = -1;
5905         unsigned long min_util = boosted_task_util(p);
5906         struct sched_domain *sd;
5907         struct sched_group *sg;
5908         int cpu = start_cpu(boosted);
5909
5910         if (cpu < 0)
5911                 return target_cpu;
5912
5913         sd = rcu_dereference(per_cpu(sd_ea, cpu));
5914
5915         if (!sd)
5916                 return target_cpu;
5917
5918         sg = sd->groups;
5919
5920         do {
5921                 int i;
5922
5923                 for_each_cpu_and(i, tsk_cpus_allowed(p), sched_group_cpus(sg)) {
5924                         unsigned long cur_capacity, new_util;
5925
5926                         if (!cpu_online(i))
5927                                 continue;
5928
5929                         /*
5930                          * p's blocked utilization is still accounted for on prev_cpu
5931                          * so prev_cpu will receive a negative bias due to the double
5932                          * accounting. However, the blocked utilization may be zero.
5933                          */
5934                         new_util = cpu_util(i) + task_util(p);
5935
5936                         /*
5937                          * Ensure minimum capacity to grant the required boost.
5938                          * The target CPU can be already at a capacity level higher
5939                          * than the one required to boost the task.
5940                          */
5941                         new_util = max(min_util, new_util);
5942
5943                         if (new_util > capacity_orig_of(i))
5944                                 continue;
5945
5946 #ifdef CONFIG_SCHED_WALT
5947                         if (walt_cpu_high_irqload(i))
5948                                 continue;
5949 #endif
5950
5951                         /*
5952                          * Unconditionally favoring tasks that prefer idle cpus to
5953                          * improve latency.
5954                          */
5955                         if (idle_cpu(i) && prefer_idle)
5956                                 return i;
5957
5958                         cur_capacity = capacity_curr_of(i);
5959
5960                         if (new_util < cur_capacity) {
5961                                 if (cpu_rq(i)->nr_running) {
5962                                         /*
5963                                          * Find a target cpu with the lowest/highest
5964                                          * utilization if prefer_idle/!prefer_idle.
5965                                          */
5966                                         if ((prefer_idle && target_util > new_util) ||
5967                                             (!prefer_idle && target_util < new_util)) {
5968                                                 target_util = new_util;
5969                                                 target_cpu = i;
5970                                         }
5971                                 } else if (!prefer_idle) {
5972                                         int idle_idx = idle_get_state_idx(cpu_rq(i));
5973
5974                                         if (best_idle_cpu < 0 ||
5975                                                 (sysctl_sched_cstate_aware &&
5976                                                         best_idle_cstate > idle_idx)) {
5977                                                 best_idle_cstate = idle_idx;
5978                                                 best_idle_cpu = i;
5979                                         }
5980                                 }
5981                         } else if (backup_capacity > cur_capacity) {
5982                                 /* Find a backup cpu with least capacity. */
5983                                 backup_capacity = cur_capacity;
5984                                 backup_cpu = i;
5985                         }
5986                 }
5987         } while (sg = sg->next, sg != sd->groups);
5988
5989         if (target_cpu < 0)
5990                 target_cpu = best_idle_cpu >= 0 ? best_idle_cpu : backup_cpu;
5991
5992         return target_cpu;
5993 }
5994
5995 /*
5996  * cpu_util_wake: Compute cpu utilization with any contributions from
5997  * the waking task p removed.
5998  */
5999 static int cpu_util_wake(int cpu, struct task_struct *p)
6000 {
6001         unsigned long util, capacity;
6002
6003         /* Task has no contribution or is new */
6004         if (cpu != task_cpu(p) || !p->se.avg.last_update_time)
6005                 return cpu_util(cpu);
6006
6007         capacity = capacity_orig_of(cpu);
6008         util = max_t(long, cpu_rq(cpu)->cfs.avg.util_avg - task_util(p), 0);
6009
6010         return (util >= capacity) ? capacity : util;
6011 }
6012
6013 /*
6014  * Disable WAKE_AFFINE in the case where task @p doesn't fit in the
6015  * capacity of either the waking CPU @cpu or the previous CPU @prev_cpu.
6016  *
6017  * In that case WAKE_AFFINE doesn't make sense and we'll let
6018  * BALANCE_WAKE sort things out.
6019  */
6020 static int wake_cap(struct task_struct *p, int cpu, int prev_cpu)
6021 {
6022         long min_cap, max_cap;
6023
6024         min_cap = min(capacity_orig_of(prev_cpu), capacity_orig_of(cpu));
6025         max_cap = cpu_rq(cpu)->rd->max_cpu_capacity.val;
6026
6027         /* Minimum capacity is close to max, no need to abort wake_affine */
6028         if (max_cap - min_cap < max_cap >> 3)
6029                 return 0;
6030
6031         /* Bring task utilization in sync with prev_cpu */
6032         sync_entity_load_avg(&p->se);
6033
6034         return min_cap * 1024 < task_util(p) * capacity_margin;
6035 }
6036
6037 static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu, int sync)
6038 {
6039         struct sched_domain *sd;
6040         int target_cpu = prev_cpu, tmp_target;
6041         bool boosted, prefer_idle;
6042
6043         if (sysctl_sched_sync_hint_enable && sync) {
6044                 int cpu = smp_processor_id();
6045
6046                 if (cpumask_test_cpu(cpu, tsk_cpus_allowed(p)))
6047                         return cpu;
6048         }
6049
6050         rcu_read_lock();
6051 #ifdef CONFIG_CGROUP_SCHEDTUNE
6052         boosted = schedtune_task_boost(p) > 0;
6053         prefer_idle = schedtune_prefer_idle(p) > 0;
6054 #else
6055         boosted = get_sysctl_sched_cfs_boost() > 0;
6056         prefer_idle = 0;
6057 #endif
6058
6059         sd = rcu_dereference(per_cpu(sd_ea, prev_cpu));
6060         /* Find a cpu with sufficient capacity */
6061         tmp_target = find_best_target(p, boosted, prefer_idle);
6062
6063         if (!sd)
6064                 goto unlock;
6065         if (tmp_target >= 0) {
6066                 target_cpu = tmp_target;
6067                 if ((boosted || prefer_idle) && idle_cpu(target_cpu))
6068                         goto unlock;
6069         }
6070
6071         if (target_cpu != prev_cpu) {
6072                 struct energy_env eenv = {
6073                         .util_delta     = task_util(p),
6074                         .src_cpu        = prev_cpu,
6075                         .dst_cpu        = target_cpu,
6076                         .task           = p,
6077                 };
6078
6079                 /* Not enough spare capacity on previous cpu */
6080                 if (cpu_overutilized(prev_cpu))
6081                         goto unlock;
6082
6083                 if (energy_diff(&eenv) >= 0)
6084                         target_cpu = prev_cpu;
6085         }
6086
6087 unlock:
6088         rcu_read_unlock();
6089         return target_cpu;
6090 }
6091
6092 /*
6093  * select_task_rq_fair: Select target runqueue for the waking task in domains
6094  * that have the 'sd_flag' flag set. In practice, this is SD_BALANCE_WAKE,
6095  * SD_BALANCE_FORK, or SD_BALANCE_EXEC.
6096  *
6097  * Balances load by selecting the idlest cpu in the idlest group, or under
6098  * certain conditions an idle sibling cpu if the domain has SD_WAKE_AFFINE set.
6099  *
6100  * Returns the target cpu number.
6101  *
6102  * preempt must be disabled.
6103  */
6104 static int
6105 select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags)
6106 {
6107         struct sched_domain *tmp, *affine_sd = NULL, *sd = NULL;
6108         int cpu = smp_processor_id();
6109         int new_cpu = prev_cpu;
6110         int want_affine = 0;
6111         int sync = wake_flags & WF_SYNC;
6112
6113         if (sd_flag & SD_BALANCE_WAKE)
6114                 want_affine = !wake_wide(p) && !wake_cap(p, cpu, prev_cpu)
6115                               && cpumask_test_cpu(cpu, tsk_cpus_allowed(p));
6116
6117         if (energy_aware() && !(cpu_rq(prev_cpu)->rd->overutilized))
6118                 return select_energy_cpu_brute(p, prev_cpu, sync);
6119
6120         rcu_read_lock();
6121         for_each_domain(cpu, tmp) {
6122                 if (!(tmp->flags & SD_LOAD_BALANCE))
6123                         break;
6124
6125                 /*
6126                  * If both cpu and prev_cpu are part of this domain,
6127                  * cpu is a valid SD_WAKE_AFFINE target.
6128                  */
6129                 if (want_affine && (tmp->flags & SD_WAKE_AFFINE) &&
6130                     cpumask_test_cpu(prev_cpu, sched_domain_span(tmp))) {
6131                         affine_sd = tmp;
6132                         break;
6133                 }
6134
6135                 if (tmp->flags & sd_flag)
6136                         sd = tmp;
6137                 else if (!want_affine)
6138                         break;
6139         }
6140
6141         if (affine_sd) {
6142                 sd = NULL; /* Prefer wake_affine over balance flags */
6143                 if (cpu != prev_cpu && wake_affine(affine_sd, p, prev_cpu, sync))
6144                         new_cpu = cpu;
6145         }
6146
6147         if (!sd) {
6148                 if (sd_flag & SD_BALANCE_WAKE) /* XXX always ? */
6149                         new_cpu = select_idle_sibling(p, prev_cpu, new_cpu);
6150
6151         } else while (sd) {
6152                 struct sched_group *group;
6153                 int weight;
6154
6155                 if (!(sd->flags & sd_flag)) {
6156                         sd = sd->child;
6157                         continue;
6158                 }
6159
6160                 group = find_idlest_group(sd, p, cpu, sd_flag);
6161                 if (!group) {
6162                         sd = sd->child;
6163                         continue;
6164                 }
6165
6166                 new_cpu = find_idlest_cpu(group, p, cpu);
6167                 if (new_cpu == -1 || new_cpu == cpu) {
6168                         /* Now try balancing at a lower domain level of cpu */
6169                         sd = sd->child;
6170                         continue;
6171                 }
6172
6173                 /* Now try balancing at a lower domain level of new_cpu */
6174                 cpu = new_cpu;
6175                 weight = sd->span_weight;
6176                 sd = NULL;
6177                 for_each_domain(cpu, tmp) {
6178                         if (weight <= tmp->span_weight)
6179                                 break;
6180                         if (tmp->flags & sd_flag)
6181                                 sd = tmp;
6182                 }
6183                 /* while loop will break here if sd == NULL */
6184         }
6185         rcu_read_unlock();
6186
6187         return new_cpu;
6188 }
6189
6190 /*
6191  * Called immediately before a task is migrated to a new cpu; task_cpu(p) and
6192  * cfs_rq_of(p) references at time of call are still valid and identify the
6193  * previous cpu.  However, the caller only guarantees p->pi_lock is held; no
6194  * other assumptions, including the state of rq->lock, should be made.
6195  */
6196 static void migrate_task_rq_fair(struct task_struct *p)
6197 {
6198         /*
6199          * We are supposed to update the task to "current" time, then its up to date
6200          * and ready to go to new CPU/cfs_rq. But we have difficulty in getting
6201          * what current time is, so simply throw away the out-of-date time. This
6202          * will result in the wakee task is less decayed, but giving the wakee more
6203          * load sounds not bad.
6204          */
6205         remove_entity_load_avg(&p->se);
6206
6207         /* Tell new CPU we are migrated */
6208         p->se.avg.last_update_time = 0;
6209
6210         /* We have migrated, no longer consider this task hot */
6211         p->se.exec_start = 0;
6212 }
6213
6214 static void task_dead_fair(struct task_struct *p)
6215 {
6216         remove_entity_load_avg(&p->se);
6217 }
6218 #else
6219 #define task_fits_max(p, cpu) true
6220 #endif /* CONFIG_SMP */
6221
6222 static unsigned long
6223 wakeup_gran(struct sched_entity *curr, struct sched_entity *se)
6224 {
6225         unsigned long gran = sysctl_sched_wakeup_granularity;
6226
6227         /*
6228          * Since its curr running now, convert the gran from real-time
6229          * to virtual-time in his units.
6230          *
6231          * By using 'se' instead of 'curr' we penalize light tasks, so
6232          * they get preempted easier. That is, if 'se' < 'curr' then
6233          * the resulting gran will be larger, therefore penalizing the
6234          * lighter, if otoh 'se' > 'curr' then the resulting gran will
6235          * be smaller, again penalizing the lighter task.
6236          *
6237          * This is especially important for buddies when the leftmost
6238          * task is higher priority than the buddy.
6239          */
6240         return calc_delta_fair(gran, se);
6241 }
6242
6243 /*
6244  * Should 'se' preempt 'curr'.
6245  *
6246  *             |s1
6247  *        |s2
6248  *   |s3
6249  *         g
6250  *      |<--->|c
6251  *
6252  *  w(c, s1) = -1
6253  *  w(c, s2) =  0
6254  *  w(c, s3) =  1
6255  *
6256  */
6257 static int
6258 wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se)
6259 {
6260         s64 gran, vdiff = curr->vruntime - se->vruntime;
6261
6262         if (vdiff <= 0)
6263                 return -1;
6264
6265         gran = wakeup_gran(curr, se);
6266         if (vdiff > gran)
6267                 return 1;
6268
6269         return 0;
6270 }
6271
6272 static void set_last_buddy(struct sched_entity *se)
6273 {
6274         if (entity_is_task(se) && unlikely(task_of(se)->policy == SCHED_IDLE))
6275                 return;
6276
6277         for_each_sched_entity(se)
6278                 cfs_rq_of(se)->last = se;
6279 }
6280
6281 static void set_next_buddy(struct sched_entity *se)
6282 {
6283         if (entity_is_task(se) && unlikely(task_of(se)->policy == SCHED_IDLE))
6284                 return;
6285
6286         for_each_sched_entity(se)
6287                 cfs_rq_of(se)->next = se;
6288 }
6289
6290 static void set_skip_buddy(struct sched_entity *se)
6291 {
6292         for_each_sched_entity(se)
6293                 cfs_rq_of(se)->skip = se;
6294 }
6295
6296 /*
6297  * Preempt the current task with a newly woken task if needed:
6298  */
6299 static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_flags)
6300 {
6301         struct task_struct *curr = rq->curr;
6302         struct sched_entity *se = &curr->se, *pse = &p->se;
6303         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
6304         int scale = cfs_rq->nr_running >= sched_nr_latency;
6305         int next_buddy_marked = 0;
6306
6307         if (unlikely(se == pse))
6308                 return;
6309
6310         /*
6311          * This is possible from callers such as attach_tasks(), in which we
6312          * unconditionally check_prempt_curr() after an enqueue (which may have
6313          * lead to a throttle).  This both saves work and prevents false
6314          * next-buddy nomination below.
6315          */
6316         if (unlikely(throttled_hierarchy(cfs_rq_of(pse))))
6317                 return;
6318
6319         if (sched_feat(NEXT_BUDDY) && scale && !(wake_flags & WF_FORK)) {
6320                 set_next_buddy(pse);
6321                 next_buddy_marked = 1;
6322         }
6323
6324         /*
6325          * We can come here with TIF_NEED_RESCHED already set from new task
6326          * wake up path.
6327          *
6328          * Note: this also catches the edge-case of curr being in a throttled
6329          * group (e.g. via set_curr_task), since update_curr() (in the
6330          * enqueue of curr) will have resulted in resched being set.  This
6331          * prevents us from potentially nominating it as a false LAST_BUDDY
6332          * below.
6333          */
6334         if (test_tsk_need_resched(curr))
6335                 return;
6336
6337         /* Idle tasks are by definition preempted by non-idle tasks. */
6338         if (unlikely(curr->policy == SCHED_IDLE) &&
6339             likely(p->policy != SCHED_IDLE))
6340                 goto preempt;
6341
6342         /*
6343          * Batch and idle tasks do not preempt non-idle tasks (their preemption
6344          * is driven by the tick):
6345          */
6346         if (unlikely(p->policy != SCHED_NORMAL) || !sched_feat(WAKEUP_PREEMPTION))
6347                 return;
6348
6349         find_matching_se(&se, &pse);
6350         update_curr(cfs_rq_of(se));
6351         BUG_ON(!pse);
6352         if (wakeup_preempt_entity(se, pse) == 1) {
6353                 /*
6354                  * Bias pick_next to pick the sched entity that is
6355                  * triggering this preemption.
6356                  */
6357                 if (!next_buddy_marked)
6358                         set_next_buddy(pse);
6359                 goto preempt;
6360         }
6361
6362         return;
6363
6364 preempt:
6365         resched_curr(rq);
6366         /*
6367          * Only set the backward buddy when the current task is still
6368          * on the rq. This can happen when a wakeup gets interleaved
6369          * with schedule on the ->pre_schedule() or idle_balance()
6370          * point, either of which can * drop the rq lock.
6371          *
6372          * Also, during early boot the idle thread is in the fair class,
6373          * for obvious reasons its a bad idea to schedule back to it.
6374          */
6375         if (unlikely(!se->on_rq || curr == rq->idle))
6376                 return;
6377
6378         if (sched_feat(LAST_BUDDY) && scale && entity_is_task(se))
6379                 set_last_buddy(se);
6380 }
6381
6382 static struct task_struct *
6383 pick_next_task_fair(struct rq *rq, struct task_struct *prev)
6384 {
6385         struct cfs_rq *cfs_rq = &rq->cfs;
6386         struct sched_entity *se;
6387         struct task_struct *p;
6388         int new_tasks;
6389
6390 again:
6391 #ifdef CONFIG_FAIR_GROUP_SCHED
6392         if (!cfs_rq->nr_running)
6393                 goto idle;
6394
6395         if (prev->sched_class != &fair_sched_class)
6396                 goto simple;
6397
6398         /*
6399          * Because of the set_next_buddy() in dequeue_task_fair() it is rather
6400          * likely that a next task is from the same cgroup as the current.
6401          *
6402          * Therefore attempt to avoid putting and setting the entire cgroup
6403          * hierarchy, only change the part that actually changes.
6404          */
6405
6406         do {
6407                 struct sched_entity *curr = cfs_rq->curr;
6408
6409                 /*
6410                  * Since we got here without doing put_prev_entity() we also
6411                  * have to consider cfs_rq->curr. If it is still a runnable
6412                  * entity, update_curr() will update its vruntime, otherwise
6413                  * forget we've ever seen it.
6414                  */
6415                 if (curr) {
6416                         if (curr->on_rq)
6417                                 update_curr(cfs_rq);
6418                         else
6419                                 curr = NULL;
6420
6421                         /*
6422                          * This call to check_cfs_rq_runtime() will do the
6423                          * throttle and dequeue its entity in the parent(s).
6424                          * Therefore the 'simple' nr_running test will indeed
6425                          * be correct.
6426                          */
6427                         if (unlikely(check_cfs_rq_runtime(cfs_rq)))
6428                                 goto simple;
6429                 }
6430
6431                 se = pick_next_entity(cfs_rq, curr);
6432                 cfs_rq = group_cfs_rq(se);
6433         } while (cfs_rq);
6434
6435         p = task_of(se);
6436
6437         /*
6438          * Since we haven't yet done put_prev_entity and if the selected task
6439          * is a different task than we started out with, try and touch the
6440          * least amount of cfs_rqs.
6441          */
6442         if (prev != p) {
6443                 struct sched_entity *pse = &prev->se;
6444
6445                 while (!(cfs_rq = is_same_group(se, pse))) {
6446                         int se_depth = se->depth;
6447                         int pse_depth = pse->depth;
6448
6449                         if (se_depth <= pse_depth) {
6450                                 put_prev_entity(cfs_rq_of(pse), pse);
6451                                 pse = parent_entity(pse);
6452                         }
6453                         if (se_depth >= pse_depth) {
6454                                 set_next_entity(cfs_rq_of(se), se);
6455                                 se = parent_entity(se);
6456                         }
6457                 }
6458
6459                 put_prev_entity(cfs_rq, pse);
6460                 set_next_entity(cfs_rq, se);
6461         }
6462
6463         if (hrtick_enabled(rq))
6464                 hrtick_start_fair(rq, p);
6465
6466         rq->misfit_task = !task_fits_max(p, rq->cpu);
6467
6468         return p;
6469 simple:
6470         cfs_rq = &rq->cfs;
6471 #endif
6472
6473         if (!cfs_rq->nr_running)
6474                 goto idle;
6475
6476         put_prev_task(rq, prev);
6477
6478         do {
6479                 se = pick_next_entity(cfs_rq, NULL);
6480                 set_next_entity(cfs_rq, se);
6481                 cfs_rq = group_cfs_rq(se);
6482         } while (cfs_rq);
6483
6484         p = task_of(se);
6485
6486         if (hrtick_enabled(rq))
6487                 hrtick_start_fair(rq, p);
6488
6489         rq->misfit_task = !task_fits_max(p, rq->cpu);
6490
6491         return p;
6492
6493 idle:
6494         rq->misfit_task = 0;
6495         /*
6496          * This is OK, because current is on_cpu, which avoids it being picked
6497          * for load-balance and preemption/IRQs are still disabled avoiding
6498          * further scheduler activity on it and we're being very careful to
6499          * re-start the picking loop.
6500          */
6501         lockdep_unpin_lock(&rq->lock);
6502         new_tasks = idle_balance(rq);
6503         lockdep_pin_lock(&rq->lock);
6504         /*
6505          * Because idle_balance() releases (and re-acquires) rq->lock, it is
6506          * possible for any higher priority task to appear. In that case we
6507          * must re-start the pick_next_entity() loop.
6508          */
6509         if (new_tasks < 0)
6510                 return RETRY_TASK;
6511
6512         if (new_tasks > 0)
6513                 goto again;
6514
6515         return NULL;
6516 }
6517
6518 /*
6519  * Account for a descheduled task:
6520  */
6521 static void put_prev_task_fair(struct rq *rq, struct task_struct *prev)
6522 {
6523         struct sched_entity *se = &prev->se;
6524         struct cfs_rq *cfs_rq;
6525
6526         for_each_sched_entity(se) {
6527                 cfs_rq = cfs_rq_of(se);
6528                 put_prev_entity(cfs_rq, se);
6529         }
6530 }
6531
6532 /*
6533  * sched_yield() is very simple
6534  *
6535  * The magic of dealing with the ->skip buddy is in pick_next_entity.
6536  */
6537 static void yield_task_fair(struct rq *rq)
6538 {
6539         struct task_struct *curr = rq->curr;
6540         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
6541         struct sched_entity *se = &curr->se;
6542
6543         /*
6544          * Are we the only task in the tree?
6545          */
6546         if (unlikely(rq->nr_running == 1))
6547                 return;
6548
6549         clear_buddies(cfs_rq, se);
6550
6551         if (curr->policy != SCHED_BATCH) {
6552                 update_rq_clock(rq);
6553                 /*
6554                  * Update run-time statistics of the 'current'.
6555                  */
6556                 update_curr(cfs_rq);
6557                 /*
6558                  * Tell update_rq_clock() that we've just updated,
6559                  * so we don't do microscopic update in schedule()
6560                  * and double the fastpath cost.
6561                  */
6562                 rq_clock_skip_update(rq, true);
6563         }
6564
6565         set_skip_buddy(se);
6566 }
6567
6568 static bool yield_to_task_fair(struct rq *rq, struct task_struct *p, bool preempt)
6569 {
6570         struct sched_entity *se = &p->se;
6571
6572         /* throttled hierarchies are not runnable */
6573         if (!se->on_rq || throttled_hierarchy(cfs_rq_of(se)))
6574                 return false;
6575
6576         /* Tell the scheduler that we'd really like pse to run next. */
6577         set_next_buddy(se);
6578
6579         yield_task_fair(rq);
6580
6581         return true;
6582 }
6583
6584 #ifdef CONFIG_SMP
6585 /**************************************************
6586  * Fair scheduling class load-balancing methods.
6587  *
6588  * BASICS
6589  *
6590  * The purpose of load-balancing is to achieve the same basic fairness the
6591  * per-cpu scheduler provides, namely provide a proportional amount of compute
6592  * time to each task. This is expressed in the following equation:
6593  *
6594  *   W_i,n/P_i == W_j,n/P_j for all i,j                               (1)
6595  *
6596  * Where W_i,n is the n-th weight average for cpu i. The instantaneous weight
6597  * W_i,0 is defined as:
6598  *
6599  *   W_i,0 = \Sum_j w_i,j                                             (2)
6600  *
6601  * Where w_i,j is the weight of the j-th runnable task on cpu i. This weight
6602  * is derived from the nice value as per prio_to_weight[].
6603  *
6604  * The weight average is an exponential decay average of the instantaneous
6605  * weight:
6606  *
6607  *   W'_i,n = (2^n - 1) / 2^n * W_i,n + 1 / 2^n * W_i,0               (3)
6608  *
6609  * C_i is the compute capacity of cpu i, typically it is the
6610  * fraction of 'recent' time available for SCHED_OTHER task execution. But it
6611  * can also include other factors [XXX].
6612  *
6613  * To achieve this balance we define a measure of imbalance which follows
6614  * directly from (1):
6615  *
6616  *   imb_i,j = max{ avg(W/C), W_i/C_i } - min{ avg(W/C), W_j/C_j }    (4)
6617  *
6618  * We them move tasks around to minimize the imbalance. In the continuous
6619  * function space it is obvious this converges, in the discrete case we get
6620  * a few fun cases generally called infeasible weight scenarios.
6621  *
6622  * [XXX expand on:
6623  *     - infeasible weights;
6624  *     - local vs global optima in the discrete case. ]
6625  *
6626  *
6627  * SCHED DOMAINS
6628  *
6629  * In order to solve the imbalance equation (4), and avoid the obvious O(n^2)
6630  * for all i,j solution, we create a tree of cpus that follows the hardware
6631  * topology where each level pairs two lower groups (or better). This results
6632  * in O(log n) layers. Furthermore we reduce the number of cpus going up the
6633  * tree to only the first of the previous level and we decrease the frequency
6634  * of load-balance at each level inv. proportional to the number of cpus in
6635  * the groups.
6636  *
6637  * This yields:
6638  *
6639  *     log_2 n     1     n
6640  *   \Sum       { --- * --- * 2^i } = O(n)                            (5)
6641  *     i = 0      2^i   2^i
6642  *                               `- size of each group
6643  *         |         |     `- number of cpus doing load-balance
6644  *         |         `- freq
6645  *         `- sum over all levels
6646  *
6647  * Coupled with a limit on how many tasks we can migrate every balance pass,
6648  * this makes (5) the runtime complexity of the balancer.
6649  *
6650  * An important property here is that each CPU is still (indirectly) connected
6651  * to every other cpu in at most O(log n) steps:
6652  *
6653  * The adjacency matrix of the resulting graph is given by:
6654  *
6655  *             log_2 n     
6656  *   A_i,j = \Union     (i % 2^k == 0) && i / 2^(k+1) == j / 2^(k+1)  (6)
6657  *             k = 0
6658  *
6659  * And you'll find that:
6660  *
6661  *   A^(log_2 n)_i,j != 0  for all i,j                                (7)
6662  *
6663  * Showing there's indeed a path between every cpu in at most O(log n) steps.
6664  * The task movement gives a factor of O(m), giving a convergence complexity
6665  * of:
6666  *
6667  *   O(nm log n),  n := nr_cpus, m := nr_tasks                        (8)
6668  *
6669  *
6670  * WORK CONSERVING
6671  *
6672  * In order to avoid CPUs going idle while there's still work to do, new idle
6673  * balancing is more aggressive and has the newly idle cpu iterate up the domain
6674  * tree itself instead of relying on other CPUs to bring it work.
6675  *
6676  * This adds some complexity to both (5) and (8) but it reduces the total idle
6677  * time.
6678  *
6679  * [XXX more?]
6680  *
6681  *
6682  * CGROUPS
6683  *
6684  * Cgroups make a horror show out of (2), instead of a simple sum we get:
6685  *
6686  *                                s_k,i
6687  *   W_i,0 = \Sum_j \Prod_k w_k * -----                               (9)
6688  *                                 S_k
6689  *
6690  * Where
6691  *
6692  *   s_k,i = \Sum_j w_i,j,k  and  S_k = \Sum_i s_k,i                 (10)
6693  *
6694  * w_i,j,k is the weight of the j-th runnable task in the k-th cgroup on cpu i.
6695  *
6696  * The big problem is S_k, its a global sum needed to compute a local (W_i)
6697  * property.
6698  *
6699  * [XXX write more on how we solve this.. _after_ merging pjt's patches that
6700  *      rewrite all of this once again.]
6701  */ 
6702
6703 static unsigned long __read_mostly max_load_balance_interval = HZ/10;
6704
6705 enum fbq_type { regular, remote, all };
6706
6707 enum group_type {
6708         group_other = 0,
6709         group_misfit_task,
6710         group_imbalanced,
6711         group_overloaded,
6712 };
6713
6714 #define LBF_ALL_PINNED  0x01
6715 #define LBF_NEED_BREAK  0x02
6716 #define LBF_DST_PINNED  0x04
6717 #define LBF_SOME_PINNED 0x08
6718
6719 struct lb_env {
6720         struct sched_domain     *sd;
6721
6722         struct rq               *src_rq;
6723         int                     src_cpu;
6724
6725         int                     dst_cpu;
6726         struct rq               *dst_rq;
6727
6728         struct cpumask          *dst_grpmask;
6729         int                     new_dst_cpu;
6730         enum cpu_idle_type      idle;
6731         long                    imbalance;
6732         unsigned int            src_grp_nr_running;
6733         /* The set of CPUs under consideration for load-balancing */
6734         struct cpumask          *cpus;
6735
6736         unsigned int            flags;
6737
6738         unsigned int            loop;
6739         unsigned int            loop_break;
6740         unsigned int            loop_max;
6741
6742         enum fbq_type           fbq_type;
6743         enum group_type         busiest_group_type;
6744         struct list_head        tasks;
6745 };
6746
6747 /*
6748  * Is this task likely cache-hot:
6749  */
6750 static int task_hot(struct task_struct *p, struct lb_env *env)
6751 {
6752         s64 delta;
6753
6754         lockdep_assert_held(&env->src_rq->lock);
6755
6756         if (p->sched_class != &fair_sched_class)
6757                 return 0;
6758
6759         if (unlikely(p->policy == SCHED_IDLE))
6760                 return 0;
6761
6762         /*
6763          * Buddy candidates are cache hot:
6764          */
6765         if (sched_feat(CACHE_HOT_BUDDY) && env->dst_rq->nr_running &&
6766                         (&p->se == cfs_rq_of(&p->se)->next ||
6767                          &p->se == cfs_rq_of(&p->se)->last))
6768                 return 1;
6769
6770         if (sysctl_sched_migration_cost == -1)
6771                 return 1;
6772         if (sysctl_sched_migration_cost == 0)
6773                 return 0;
6774
6775         delta = rq_clock_task(env->src_rq) - p->se.exec_start;
6776
6777         return delta < (s64)sysctl_sched_migration_cost;
6778 }
6779
6780 #ifdef CONFIG_NUMA_BALANCING
6781 /*
6782  * Returns 1, if task migration degrades locality
6783  * Returns 0, if task migration improves locality i.e migration preferred.
6784  * Returns -1, if task migration is not affected by locality.
6785  */
6786 static int migrate_degrades_locality(struct task_struct *p, struct lb_env *env)
6787 {
6788         struct numa_group *numa_group = rcu_dereference(p->numa_group);
6789         unsigned long src_faults, dst_faults;
6790         int src_nid, dst_nid;
6791
6792         if (!static_branch_likely(&sched_numa_balancing))
6793                 return -1;
6794
6795         if (!p->numa_faults || !(env->sd->flags & SD_NUMA))
6796                 return -1;
6797
6798         src_nid = cpu_to_node(env->src_cpu);
6799         dst_nid = cpu_to_node(env->dst_cpu);
6800
6801         if (src_nid == dst_nid)
6802                 return -1;
6803
6804         /* Migrating away from the preferred node is always bad. */
6805         if (src_nid == p->numa_preferred_nid) {
6806                 if (env->src_rq->nr_running > env->src_rq->nr_preferred_running)
6807                         return 1;
6808                 else
6809                         return -1;
6810         }
6811
6812         /* Encourage migration to the preferred node. */
6813         if (dst_nid == p->numa_preferred_nid)
6814                 return 0;
6815
6816         if (numa_group) {
6817                 src_faults = group_faults(p, src_nid);
6818                 dst_faults = group_faults(p, dst_nid);
6819         } else {
6820                 src_faults = task_faults(p, src_nid);
6821                 dst_faults = task_faults(p, dst_nid);
6822         }
6823
6824         return dst_faults < src_faults;
6825 }
6826
6827 #else
6828 static inline int migrate_degrades_locality(struct task_struct *p,
6829                                              struct lb_env *env)
6830 {
6831         return -1;
6832 }
6833 #endif
6834
6835 /*
6836  * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
6837  */
6838 static
6839 int can_migrate_task(struct task_struct *p, struct lb_env *env)
6840 {
6841         int tsk_cache_hot;
6842
6843         lockdep_assert_held(&env->src_rq->lock);
6844
6845         /*
6846          * We do not migrate tasks that are:
6847          * 1) throttled_lb_pair, or
6848          * 2) cannot be migrated to this CPU due to cpus_allowed, or
6849          * 3) running (obviously), or
6850          * 4) are cache-hot on their current CPU.
6851          */
6852         if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu))
6853                 return 0;
6854
6855         if (!cpumask_test_cpu(env->dst_cpu, tsk_cpus_allowed(p))) {
6856                 int cpu;
6857
6858                 schedstat_inc(p, se.statistics.nr_failed_migrations_affine);
6859
6860                 env->flags |= LBF_SOME_PINNED;
6861
6862                 /*
6863                  * Remember if this task can be migrated to any other cpu in
6864                  * our sched_group. We may want to revisit it if we couldn't
6865                  * meet load balance goals by pulling other tasks on src_cpu.
6866                  *
6867                  * Also avoid computing new_dst_cpu if we have already computed
6868                  * one in current iteration.
6869                  */
6870                 if (!env->dst_grpmask || (env->flags & LBF_DST_PINNED))
6871                         return 0;
6872
6873                 /* Prevent to re-select dst_cpu via env's cpus */
6874                 for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) {
6875                         if (cpumask_test_cpu(cpu, tsk_cpus_allowed(p))) {
6876                                 env->flags |= LBF_DST_PINNED;
6877                                 env->new_dst_cpu = cpu;
6878                                 break;
6879                         }
6880                 }
6881
6882                 return 0;
6883         }
6884
6885         /* Record that we found atleast one task that could run on dst_cpu */
6886         env->flags &= ~LBF_ALL_PINNED;
6887
6888         if (task_running(env->src_rq, p)) {
6889                 schedstat_inc(p, se.statistics.nr_failed_migrations_running);
6890                 return 0;
6891         }
6892
6893         /*
6894          * Aggressive migration if:
6895          * 1) destination numa is preferred
6896          * 2) task is cache cold, or
6897          * 3) too many balance attempts have failed.
6898          */
6899         tsk_cache_hot = migrate_degrades_locality(p, env);
6900         if (tsk_cache_hot == -1)
6901                 tsk_cache_hot = task_hot(p, env);
6902
6903         if (tsk_cache_hot <= 0 ||
6904             env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
6905                 if (tsk_cache_hot == 1) {
6906                         schedstat_inc(env->sd, lb_hot_gained[env->idle]);
6907                         schedstat_inc(p, se.statistics.nr_forced_migrations);
6908                 }
6909                 return 1;
6910         }
6911
6912         schedstat_inc(p, se.statistics.nr_failed_migrations_hot);
6913         return 0;
6914 }
6915
6916 /*
6917  * detach_task() -- detach the task for the migration specified in env
6918  */
6919 static void detach_task(struct task_struct *p, struct lb_env *env)
6920 {
6921         lockdep_assert_held(&env->src_rq->lock);
6922
6923         deactivate_task(env->src_rq, p, 0);
6924         p->on_rq = TASK_ON_RQ_MIGRATING;
6925         double_lock_balance(env->src_rq, env->dst_rq);
6926         set_task_cpu(p, env->dst_cpu);
6927         double_unlock_balance(env->src_rq, env->dst_rq);
6928 }
6929
6930 /*
6931  * detach_one_task() -- tries to dequeue exactly one task from env->src_rq, as
6932  * part of active balancing operations within "domain".
6933  *
6934  * Returns a task if successful and NULL otherwise.
6935  */
6936 static struct task_struct *detach_one_task(struct lb_env *env)
6937 {
6938         struct task_struct *p, *n;
6939
6940         lockdep_assert_held(&env->src_rq->lock);
6941
6942         list_for_each_entry_safe(p, n, &env->src_rq->cfs_tasks, se.group_node) {
6943                 if (!can_migrate_task(p, env))
6944                         continue;
6945
6946                 detach_task(p, env);
6947
6948                 /*
6949                  * Right now, this is only the second place where
6950                  * lb_gained[env->idle] is updated (other is detach_tasks)
6951                  * so we can safely collect stats here rather than
6952                  * inside detach_tasks().
6953                  */
6954                 schedstat_inc(env->sd, lb_gained[env->idle]);
6955                 return p;
6956         }
6957         return NULL;
6958 }
6959
6960 static const unsigned int sched_nr_migrate_break = 32;
6961
6962 /*
6963  * detach_tasks() -- tries to detach up to imbalance weighted load from
6964  * busiest_rq, as part of a balancing operation within domain "sd".
6965  *
6966  * Returns number of detached tasks if successful and 0 otherwise.
6967  */
6968 static int detach_tasks(struct lb_env *env)
6969 {
6970         struct list_head *tasks = &env->src_rq->cfs_tasks;
6971         struct task_struct *p;
6972         unsigned long load;
6973         int detached = 0;
6974
6975         lockdep_assert_held(&env->src_rq->lock);
6976
6977         if (env->imbalance <= 0)
6978                 return 0;
6979
6980         while (!list_empty(tasks)) {
6981                 /*
6982                  * We don't want to steal all, otherwise we may be treated likewise,
6983                  * which could at worst lead to a livelock crash.
6984                  */
6985                 if (env->idle != CPU_NOT_IDLE && env->src_rq->nr_running <= 1)
6986                         break;
6987
6988                 p = list_first_entry(tasks, struct task_struct, se.group_node);
6989
6990                 env->loop++;
6991                 /* We've more or less seen every task there is, call it quits */
6992                 if (env->loop > env->loop_max)
6993                         break;
6994
6995                 /* take a breather every nr_migrate tasks */
6996                 if (env->loop > env->loop_break) {
6997                         env->loop_break += sched_nr_migrate_break;
6998                         env->flags |= LBF_NEED_BREAK;
6999                         break;
7000                 }
7001
7002                 if (!can_migrate_task(p, env))
7003                         goto next;
7004
7005                 load = task_h_load(p);
7006
7007                 if (sched_feat(LB_MIN) && load < 16 && !env->sd->nr_balance_failed)
7008                         goto next;
7009
7010                 if ((load / 2) > env->imbalance)
7011                         goto next;
7012
7013                 detach_task(p, env);
7014                 list_add(&p->se.group_node, &env->tasks);
7015
7016                 detached++;
7017                 env->imbalance -= load;
7018
7019 #ifdef CONFIG_PREEMPT
7020                 /*
7021                  * NEWIDLE balancing is a source of latency, so preemptible
7022                  * kernels will stop after the first task is detached to minimize
7023                  * the critical section.
7024                  */
7025                 if (env->idle == CPU_NEWLY_IDLE)
7026                         break;
7027 #endif
7028
7029                 /*
7030                  * We only want to steal up to the prescribed amount of
7031                  * weighted load.
7032                  */
7033                 if (env->imbalance <= 0)
7034                         break;
7035
7036                 continue;
7037 next:
7038                 list_move_tail(&p->se.group_node, tasks);
7039         }
7040
7041         /*
7042          * Right now, this is one of only two places we collect this stat
7043          * so we can safely collect detach_one_task() stats here rather
7044          * than inside detach_one_task().
7045          */
7046         schedstat_add(env->sd, lb_gained[env->idle], detached);
7047
7048         return detached;
7049 }
7050
7051 /*
7052  * attach_task() -- attach the task detached by detach_task() to its new rq.
7053  */
7054 static void attach_task(struct rq *rq, struct task_struct *p)
7055 {
7056         lockdep_assert_held(&rq->lock);
7057
7058         BUG_ON(task_rq(p) != rq);
7059         p->on_rq = TASK_ON_RQ_QUEUED;
7060         activate_task(rq, p, 0);
7061         check_preempt_curr(rq, p, 0);
7062 }
7063
7064 /*
7065  * attach_one_task() -- attaches the task returned from detach_one_task() to
7066  * its new rq.
7067  */
7068 static void attach_one_task(struct rq *rq, struct task_struct *p)
7069 {
7070         raw_spin_lock(&rq->lock);
7071         attach_task(rq, p);
7072         /*
7073          * We want to potentially raise target_cpu's OPP.
7074          */
7075         update_capacity_of(cpu_of(rq));
7076         raw_spin_unlock(&rq->lock);
7077 }
7078
7079 /*
7080  * attach_tasks() -- attaches all tasks detached by detach_tasks() to their
7081  * new rq.
7082  */
7083 static void attach_tasks(struct lb_env *env)
7084 {
7085         struct list_head *tasks = &env->tasks;
7086         struct task_struct *p;
7087
7088         raw_spin_lock(&env->dst_rq->lock);
7089
7090         while (!list_empty(tasks)) {
7091                 p = list_first_entry(tasks, struct task_struct, se.group_node);
7092                 list_del_init(&p->se.group_node);
7093
7094                 attach_task(env->dst_rq, p);
7095         }
7096
7097         /*
7098          * We want to potentially raise env.dst_cpu's OPP.
7099          */
7100         update_capacity_of(env->dst_cpu);
7101
7102         raw_spin_unlock(&env->dst_rq->lock);
7103 }
7104
7105 #ifdef CONFIG_FAIR_GROUP_SCHED
7106 static void update_blocked_averages(int cpu)
7107 {
7108         struct rq *rq = cpu_rq(cpu);
7109         struct cfs_rq *cfs_rq;
7110         unsigned long flags;
7111
7112         raw_spin_lock_irqsave(&rq->lock, flags);
7113         update_rq_clock(rq);
7114
7115         /*
7116          * Iterates the task_group tree in a bottom up fashion, see
7117          * list_add_leaf_cfs_rq() for details.
7118          */
7119         for_each_leaf_cfs_rq(rq, cfs_rq) {
7120                 /* throttled entities do not contribute to load */
7121                 if (throttled_hierarchy(cfs_rq))
7122                         continue;
7123
7124                 if (update_cfs_rq_load_avg(cfs_rq_clock_task(cfs_rq), cfs_rq,
7125                                            true))
7126                         update_tg_load_avg(cfs_rq, 0);
7127         }
7128         raw_spin_unlock_irqrestore(&rq->lock, flags);
7129 }
7130
7131 /*
7132  * Compute the hierarchical load factor for cfs_rq and all its ascendants.
7133  * This needs to be done in a top-down fashion because the load of a child
7134  * group is a fraction of its parents load.
7135  */
7136 static void update_cfs_rq_h_load(struct cfs_rq *cfs_rq)
7137 {
7138         struct rq *rq = rq_of(cfs_rq);
7139         struct sched_entity *se = cfs_rq->tg->se[cpu_of(rq)];
7140         unsigned long now = jiffies;
7141         unsigned long load;
7142
7143         if (cfs_rq->last_h_load_update == now)
7144                 return;
7145
7146         cfs_rq->h_load_next = NULL;
7147         for_each_sched_entity(se) {
7148                 cfs_rq = cfs_rq_of(se);
7149                 cfs_rq->h_load_next = se;
7150                 if (cfs_rq->last_h_load_update == now)
7151                         break;
7152         }
7153
7154         if (!se) {
7155                 cfs_rq->h_load = cfs_rq_load_avg(cfs_rq);
7156                 cfs_rq->last_h_load_update = now;
7157         }
7158
7159         while ((se = cfs_rq->h_load_next) != NULL) {
7160                 load = cfs_rq->h_load;
7161                 load = div64_ul(load * se->avg.load_avg,
7162                         cfs_rq_load_avg(cfs_rq) + 1);
7163                 cfs_rq = group_cfs_rq(se);
7164                 cfs_rq->h_load = load;
7165                 cfs_rq->last_h_load_update = now;
7166         }
7167 }
7168
7169 static unsigned long task_h_load(struct task_struct *p)
7170 {
7171         struct cfs_rq *cfs_rq = task_cfs_rq(p);
7172
7173         update_cfs_rq_h_load(cfs_rq);
7174         return div64_ul(p->se.avg.load_avg * cfs_rq->h_load,
7175                         cfs_rq_load_avg(cfs_rq) + 1);
7176 }
7177 #else
7178 static inline void update_blocked_averages(int cpu)
7179 {
7180         struct rq *rq = cpu_rq(cpu);
7181         struct cfs_rq *cfs_rq = &rq->cfs;
7182         unsigned long flags;
7183
7184         raw_spin_lock_irqsave(&rq->lock, flags);
7185         update_rq_clock(rq);
7186         update_cfs_rq_load_avg(cfs_rq_clock_task(cfs_rq), cfs_rq, true);
7187         raw_spin_unlock_irqrestore(&rq->lock, flags);
7188 }
7189
7190 static unsigned long task_h_load(struct task_struct *p)
7191 {
7192         return p->se.avg.load_avg;
7193 }
7194 #endif
7195
7196 /********** Helpers for find_busiest_group ************************/
7197
7198 /*
7199  * sg_lb_stats - stats of a sched_group required for load_balancing
7200  */
7201 struct sg_lb_stats {
7202         unsigned long avg_load; /*Avg load across the CPUs of the group */
7203         unsigned long group_load; /* Total load over the CPUs of the group */
7204         unsigned long sum_weighted_load; /* Weighted load of group's tasks */
7205         unsigned long load_per_task;
7206         unsigned long group_capacity;
7207         unsigned long group_util; /* Total utilization of the group */
7208         unsigned int sum_nr_running; /* Nr tasks running in the group */
7209         unsigned int idle_cpus;
7210         unsigned int group_weight;
7211         enum group_type group_type;
7212         int group_no_capacity;
7213         int group_misfit_task; /* A cpu has a task too big for its capacity */
7214 #ifdef CONFIG_NUMA_BALANCING
7215         unsigned int nr_numa_running;
7216         unsigned int nr_preferred_running;
7217 #endif
7218 };
7219
7220 /*
7221  * sd_lb_stats - Structure to store the statistics of a sched_domain
7222  *               during load balancing.
7223  */
7224 struct sd_lb_stats {
7225         struct sched_group *busiest;    /* Busiest group in this sd */
7226         struct sched_group *local;      /* Local group in this sd */
7227         unsigned long total_load;       /* Total load of all groups in sd */
7228         unsigned long total_capacity;   /* Total capacity of all groups in sd */
7229         unsigned long avg_load; /* Average load across all groups in sd */
7230
7231         struct sg_lb_stats busiest_stat;/* Statistics of the busiest group */
7232         struct sg_lb_stats local_stat;  /* Statistics of the local group */
7233 };
7234
7235 static inline void init_sd_lb_stats(struct sd_lb_stats *sds)
7236 {
7237         /*
7238          * Skimp on the clearing to avoid duplicate work. We can avoid clearing
7239          * local_stat because update_sg_lb_stats() does a full clear/assignment.
7240          * We must however clear busiest_stat::avg_load because
7241          * update_sd_pick_busiest() reads this before assignment.
7242          */
7243         *sds = (struct sd_lb_stats){
7244                 .busiest = NULL,
7245                 .local = NULL,
7246                 .total_load = 0UL,
7247                 .total_capacity = 0UL,
7248                 .busiest_stat = {
7249                         .avg_load = 0UL,
7250                         .sum_nr_running = 0,
7251                         .group_type = group_other,
7252                 },
7253         };
7254 }
7255
7256 /**
7257  * get_sd_load_idx - Obtain the load index for a given sched domain.
7258  * @sd: The sched_domain whose load_idx is to be obtained.
7259  * @idle: The idle status of the CPU for whose sd load_idx is obtained.
7260  *
7261  * Return: The load index.
7262  */
7263 static inline int get_sd_load_idx(struct sched_domain *sd,
7264                                         enum cpu_idle_type idle)
7265 {
7266         int load_idx;
7267
7268         switch (idle) {
7269         case CPU_NOT_IDLE:
7270                 load_idx = sd->busy_idx;
7271                 break;
7272
7273         case CPU_NEWLY_IDLE:
7274                 load_idx = sd->newidle_idx;
7275                 break;
7276         default:
7277                 load_idx = sd->idle_idx;
7278                 break;
7279         }
7280
7281         return load_idx;
7282 }
7283
7284 static unsigned long scale_rt_capacity(int cpu)
7285 {
7286         struct rq *rq = cpu_rq(cpu);
7287         u64 total, used, age_stamp, avg;
7288         s64 delta;
7289
7290         /*
7291          * Since we're reading these variables without serialization make sure
7292          * we read them once before doing sanity checks on them.
7293          */
7294         age_stamp = READ_ONCE(rq->age_stamp);
7295         avg = READ_ONCE(rq->rt_avg);
7296         delta = __rq_clock_broken(rq) - age_stamp;
7297
7298         if (unlikely(delta < 0))
7299                 delta = 0;
7300
7301         total = sched_avg_period() + delta;
7302
7303         used = div_u64(avg, total);
7304
7305         /*
7306          * deadline bandwidth is defined at system level so we must
7307          * weight this bandwidth with the max capacity of the system.
7308          * As a reminder, avg_bw is 20bits width and
7309          * scale_cpu_capacity is 10 bits width
7310          */
7311         used += div_u64(rq->dl.avg_bw, arch_scale_cpu_capacity(NULL, cpu));
7312
7313         if (likely(used < SCHED_CAPACITY_SCALE))
7314                 return SCHED_CAPACITY_SCALE - used;
7315
7316         return 1;
7317 }
7318
7319 void init_max_cpu_capacity(struct max_cpu_capacity *mcc)
7320 {
7321         raw_spin_lock_init(&mcc->lock);
7322         mcc->val = 0;
7323         mcc->cpu = -1;
7324 }
7325
7326 static void update_cpu_capacity(struct sched_domain *sd, int cpu)
7327 {
7328         unsigned long capacity = arch_scale_cpu_capacity(sd, cpu);
7329         struct sched_group *sdg = sd->groups;
7330         struct max_cpu_capacity *mcc;
7331         unsigned long max_capacity;
7332         int max_cap_cpu;
7333         unsigned long flags;
7334
7335         cpu_rq(cpu)->cpu_capacity_orig = capacity;
7336
7337         mcc = &cpu_rq(cpu)->rd->max_cpu_capacity;
7338
7339         raw_spin_lock_irqsave(&mcc->lock, flags);
7340         max_capacity = mcc->val;
7341         max_cap_cpu = mcc->cpu;
7342
7343         if ((max_capacity > capacity && max_cap_cpu == cpu) ||
7344             (max_capacity < capacity)) {
7345                 mcc->val = capacity;
7346                 mcc->cpu = cpu;
7347 #ifdef CONFIG_SCHED_DEBUG
7348                 raw_spin_unlock_irqrestore(&mcc->lock, flags);
7349                 printk_deferred(KERN_INFO "CPU%d: update max cpu_capacity %lu\n",
7350                                 cpu, capacity);
7351                 goto skip_unlock;
7352 #endif
7353         }
7354         raw_spin_unlock_irqrestore(&mcc->lock, flags);
7355
7356 skip_unlock: __attribute__ ((unused));
7357         capacity *= scale_rt_capacity(cpu);
7358         capacity >>= SCHED_CAPACITY_SHIFT;
7359
7360         if (!capacity)
7361                 capacity = 1;
7362
7363         cpu_rq(cpu)->cpu_capacity = capacity;
7364         sdg->sgc->capacity = capacity;
7365         sdg->sgc->max_capacity = capacity;
7366         sdg->sgc->min_capacity = capacity;
7367 }
7368
7369 void update_group_capacity(struct sched_domain *sd, int cpu)
7370 {
7371         struct sched_domain *child = sd->child;
7372         struct sched_group *group, *sdg = sd->groups;
7373         unsigned long capacity, max_capacity, min_capacity;
7374         unsigned long interval;
7375
7376         interval = msecs_to_jiffies(sd->balance_interval);
7377         interval = clamp(interval, 1UL, max_load_balance_interval);
7378         sdg->sgc->next_update = jiffies + interval;
7379
7380         if (!child) {
7381                 update_cpu_capacity(sd, cpu);
7382                 return;
7383         }
7384
7385         capacity = 0;
7386         max_capacity = 0;
7387         min_capacity = ULONG_MAX;
7388
7389         if (child->flags & SD_OVERLAP) {
7390                 /*
7391                  * SD_OVERLAP domains cannot assume that child groups
7392                  * span the current group.
7393                  */
7394
7395                 for_each_cpu(cpu, sched_group_cpus(sdg)) {
7396                         struct sched_group_capacity *sgc;
7397                         struct rq *rq = cpu_rq(cpu);
7398
7399                         /*
7400                          * build_sched_domains() -> init_sched_groups_capacity()
7401                          * gets here before we've attached the domains to the
7402                          * runqueues.
7403                          *
7404                          * Use capacity_of(), which is set irrespective of domains
7405                          * in update_cpu_capacity().
7406                          *
7407                          * This avoids capacity from being 0 and
7408                          * causing divide-by-zero issues on boot.
7409                          */
7410                         if (unlikely(!rq->sd)) {
7411                                 capacity += capacity_of(cpu);
7412                         } else {
7413                                 sgc = rq->sd->groups->sgc;
7414                                 capacity += sgc->capacity;
7415                         }
7416
7417                         max_capacity = max(capacity, max_capacity);
7418                         min_capacity = min(capacity, min_capacity);
7419                 }
7420         } else  {
7421                 /*
7422                  * !SD_OVERLAP domains can assume that child groups
7423                  * span the current group.
7424                  */ 
7425
7426                 group = child->groups;
7427                 do {
7428                         struct sched_group_capacity *sgc = group->sgc;
7429
7430                         capacity += sgc->capacity;
7431                         max_capacity = max(sgc->max_capacity, max_capacity);
7432                         min_capacity = min(sgc->min_capacity, min_capacity);
7433                         group = group->next;
7434                 } while (group != child->groups);
7435         }
7436
7437         sdg->sgc->capacity = capacity;
7438         sdg->sgc->max_capacity = max_capacity;
7439         sdg->sgc->min_capacity = min_capacity;
7440 }
7441
7442 /*
7443  * Check whether the capacity of the rq has been noticeably reduced by side
7444  * activity. The imbalance_pct is used for the threshold.
7445  * Return true is the capacity is reduced
7446  */
7447 static inline int
7448 check_cpu_capacity(struct rq *rq, struct sched_domain *sd)
7449 {
7450         return ((rq->cpu_capacity * sd->imbalance_pct) <
7451                                 (rq->cpu_capacity_orig * 100));
7452 }
7453
7454 /*
7455  * Group imbalance indicates (and tries to solve) the problem where balancing
7456  * groups is inadequate due to tsk_cpus_allowed() constraints.
7457  *
7458  * Imagine a situation of two groups of 4 cpus each and 4 tasks each with a
7459  * cpumask covering 1 cpu of the first group and 3 cpus of the second group.
7460  * Something like:
7461  *
7462  *      { 0 1 2 3 } { 4 5 6 7 }
7463  *              *     * * *
7464  *
7465  * If we were to balance group-wise we'd place two tasks in the first group and
7466  * two tasks in the second group. Clearly this is undesired as it will overload
7467  * cpu 3 and leave one of the cpus in the second group unused.
7468  *
7469  * The current solution to this issue is detecting the skew in the first group
7470  * by noticing the lower domain failed to reach balance and had difficulty
7471  * moving tasks due to affinity constraints.
7472  *
7473  * When this is so detected; this group becomes a candidate for busiest; see
7474  * update_sd_pick_busiest(). And calculate_imbalance() and
7475  * find_busiest_group() avoid some of the usual balance conditions to allow it
7476  * to create an effective group imbalance.
7477  *
7478  * This is a somewhat tricky proposition since the next run might not find the
7479  * group imbalance and decide the groups need to be balanced again. A most
7480  * subtle and fragile situation.
7481  */
7482
7483 static inline int sg_imbalanced(struct sched_group *group)
7484 {
7485         return group->sgc->imbalance;
7486 }
7487
7488 /*
7489  * group_has_capacity returns true if the group has spare capacity that could
7490  * be used by some tasks.
7491  * We consider that a group has spare capacity if the  * number of task is
7492  * smaller than the number of CPUs or if the utilization is lower than the
7493  * available capacity for CFS tasks.
7494  * For the latter, we use a threshold to stabilize the state, to take into
7495  * account the variance of the tasks' load and to return true if the available
7496  * capacity in meaningful for the load balancer.
7497  * As an example, an available capacity of 1% can appear but it doesn't make
7498  * any benefit for the load balance.
7499  */
7500 static inline bool
7501 group_has_capacity(struct lb_env *env, struct sg_lb_stats *sgs)
7502 {
7503         if (sgs->sum_nr_running < sgs->group_weight)
7504                 return true;
7505
7506         if ((sgs->group_capacity * 100) >
7507                         (sgs->group_util * env->sd->imbalance_pct))
7508                 return true;
7509
7510         return false;
7511 }
7512
7513 /*
7514  *  group_is_overloaded returns true if the group has more tasks than it can
7515  *  handle.
7516  *  group_is_overloaded is not equals to !group_has_capacity because a group
7517  *  with the exact right number of tasks, has no more spare capacity but is not
7518  *  overloaded so both group_has_capacity and group_is_overloaded return
7519  *  false.
7520  */
7521 static inline bool
7522 group_is_overloaded(struct lb_env *env, struct sg_lb_stats *sgs)
7523 {
7524         if (sgs->sum_nr_running <= sgs->group_weight)
7525                 return false;
7526
7527         if ((sgs->group_capacity * 100) <
7528                         (sgs->group_util * env->sd->imbalance_pct))
7529                 return true;
7530
7531         return false;
7532 }
7533
7534
7535 /*
7536  * group_smaller_cpu_capacity: Returns true if sched_group sg has smaller
7537  * per-cpu capacity than sched_group ref.
7538  */
7539 static inline bool
7540 group_smaller_cpu_capacity(struct sched_group *sg, struct sched_group *ref)
7541 {
7542         return sg->sgc->max_capacity + capacity_margin - SCHED_LOAD_SCALE <
7543                                                         ref->sgc->max_capacity;
7544 }
7545
7546 static inline enum
7547 group_type group_classify(struct sched_group *group,
7548                           struct sg_lb_stats *sgs)
7549 {
7550         if (sgs->group_no_capacity)
7551                 return group_overloaded;
7552
7553         if (sg_imbalanced(group))
7554                 return group_imbalanced;
7555
7556         if (sgs->group_misfit_task)
7557                 return group_misfit_task;
7558
7559         return group_other;
7560 }
7561
7562 /**
7563  * update_sg_lb_stats - Update sched_group's statistics for load balancing.
7564  * @env: The load balancing environment.
7565  * @group: sched_group whose statistics are to be updated.
7566  * @load_idx: Load index of sched_domain of this_cpu for load calc.
7567  * @local_group: Does group contain this_cpu.
7568  * @sgs: variable to hold the statistics for this group.
7569  * @overload: Indicate more than one runnable task for any CPU.
7570  * @overutilized: Indicate overutilization for any CPU.
7571  */
7572 static inline void update_sg_lb_stats(struct lb_env *env,
7573                         struct sched_group *group, int load_idx,
7574                         int local_group, struct sg_lb_stats *sgs,
7575                         bool *overload, bool *overutilized)
7576 {
7577         unsigned long load;
7578         int i, nr_running;
7579
7580         memset(sgs, 0, sizeof(*sgs));
7581
7582         for_each_cpu_and(i, sched_group_cpus(group), env->cpus) {
7583                 struct rq *rq = cpu_rq(i);
7584
7585                 /* Bias balancing toward cpus of our domain */
7586                 if (local_group)
7587                         load = target_load(i, load_idx);
7588                 else
7589                         load = source_load(i, load_idx);
7590
7591                 sgs->group_load += load;
7592                 sgs->group_util += cpu_util(i);
7593                 sgs->sum_nr_running += rq->cfs.h_nr_running;
7594
7595                 nr_running = rq->nr_running;
7596                 if (nr_running > 1)
7597                         *overload = true;
7598
7599 #ifdef CONFIG_NUMA_BALANCING
7600                 sgs->nr_numa_running += rq->nr_numa_running;
7601                 sgs->nr_preferred_running += rq->nr_preferred_running;
7602 #endif
7603                 sgs->sum_weighted_load += weighted_cpuload(i);
7604                 /*
7605                  * No need to call idle_cpu() if nr_running is not 0
7606                  */
7607                 if (!nr_running && idle_cpu(i))
7608                         sgs->idle_cpus++;
7609
7610                 if (cpu_overutilized(i)) {
7611                         *overutilized = true;
7612                         if (!sgs->group_misfit_task && rq->misfit_task)
7613                                 sgs->group_misfit_task = capacity_of(i);
7614                 }
7615         }
7616
7617         /* Adjust by relative CPU capacity of the group */
7618         sgs->group_capacity = group->sgc->capacity;
7619         sgs->avg_load = (sgs->group_load*SCHED_CAPACITY_SCALE) / sgs->group_capacity;
7620
7621         if (sgs->sum_nr_running)
7622                 sgs->load_per_task = sgs->sum_weighted_load / sgs->sum_nr_running;
7623
7624         sgs->group_weight = group->group_weight;
7625
7626         sgs->group_no_capacity = group_is_overloaded(env, sgs);
7627         sgs->group_type = group_classify(group, sgs);
7628 }
7629
7630 /**
7631  * update_sd_pick_busiest - return 1 on busiest group
7632  * @env: The load balancing environment.
7633  * @sds: sched_domain statistics
7634  * @sg: sched_group candidate to be checked for being the busiest
7635  * @sgs: sched_group statistics
7636  *
7637  * Determine if @sg is a busier group than the previously selected
7638  * busiest group.
7639  *
7640  * Return: %true if @sg is a busier group than the previously selected
7641  * busiest group. %false otherwise.
7642  */
7643 static bool update_sd_pick_busiest(struct lb_env *env,
7644                                    struct sd_lb_stats *sds,
7645                                    struct sched_group *sg,
7646                                    struct sg_lb_stats *sgs)
7647 {
7648         struct sg_lb_stats *busiest = &sds->busiest_stat;
7649
7650         if (sgs->group_type > busiest->group_type)
7651                 return true;
7652
7653         if (sgs->group_type < busiest->group_type)
7654                 return false;
7655
7656         /*
7657          * Candidate sg doesn't face any serious load-balance problems
7658          * so don't pick it if the local sg is already filled up.
7659          */
7660         if (sgs->group_type == group_other &&
7661             !group_has_capacity(env, &sds->local_stat))
7662                 return false;
7663
7664         if (sgs->avg_load <= busiest->avg_load)
7665                 return false;
7666
7667         if (!(env->sd->flags & SD_ASYM_CPUCAPACITY))
7668                 goto asym_packing;
7669
7670         /*
7671          * Candidate sg has no more than one task per CPU and
7672          * has higher per-CPU capacity. Migrating tasks to less
7673          * capable CPUs may harm throughput. Maximize throughput,
7674          * power/energy consequences are not considered.
7675          */
7676         if (sgs->sum_nr_running <= sgs->group_weight &&
7677             group_smaller_cpu_capacity(sds->local, sg))
7678                 return false;
7679
7680 asym_packing:
7681         /* This is the busiest node in its class. */
7682         if (!(env->sd->flags & SD_ASYM_PACKING))
7683                 return true;
7684
7685         /*
7686          * ASYM_PACKING needs to move all the work to the lowest
7687          * numbered CPUs in the group, therefore mark all groups
7688          * higher than ourself as busy.
7689          */
7690         if (sgs->sum_nr_running && env->dst_cpu < group_first_cpu(sg)) {
7691                 if (!sds->busiest)
7692                         return true;
7693
7694                 if (group_first_cpu(sds->busiest) > group_first_cpu(sg))
7695                         return true;
7696         }
7697
7698         return false;
7699 }
7700
7701 #ifdef CONFIG_NUMA_BALANCING
7702 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs)
7703 {
7704         if (sgs->sum_nr_running > sgs->nr_numa_running)
7705                 return regular;
7706         if (sgs->sum_nr_running > sgs->nr_preferred_running)
7707                 return remote;
7708         return all;
7709 }
7710
7711 static inline enum fbq_type fbq_classify_rq(struct rq *rq)
7712 {
7713         if (rq->nr_running > rq->nr_numa_running)
7714                 return regular;
7715         if (rq->nr_running > rq->nr_preferred_running)
7716                 return remote;
7717         return all;
7718 }
7719 #else
7720 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs)
7721 {
7722         return all;
7723 }
7724
7725 static inline enum fbq_type fbq_classify_rq(struct rq *rq)
7726 {
7727         return regular;
7728 }
7729 #endif /* CONFIG_NUMA_BALANCING */
7730
7731 /**
7732  * update_sd_lb_stats - Update sched_domain's statistics for load balancing.
7733  * @env: The load balancing environment.
7734  * @sds: variable to hold the statistics for this sched_domain.
7735  */
7736 static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sds)
7737 {
7738         struct sched_domain *child = env->sd->child;
7739         struct sched_group *sg = env->sd->groups;
7740         struct sg_lb_stats tmp_sgs;
7741         int load_idx, prefer_sibling = 0;
7742         bool overload = false, overutilized = false;
7743
7744         if (child && child->flags & SD_PREFER_SIBLING)
7745                 prefer_sibling = 1;
7746
7747         load_idx = get_sd_load_idx(env->sd, env->idle);
7748
7749         do {
7750                 struct sg_lb_stats *sgs = &tmp_sgs;
7751                 int local_group;
7752
7753                 local_group = cpumask_test_cpu(env->dst_cpu, sched_group_cpus(sg));
7754                 if (local_group) {
7755                         sds->local = sg;
7756                         sgs = &sds->local_stat;
7757
7758                         if (env->idle != CPU_NEWLY_IDLE ||
7759                             time_after_eq(jiffies, sg->sgc->next_update))
7760                                 update_group_capacity(env->sd, env->dst_cpu);
7761                 }
7762
7763                 update_sg_lb_stats(env, sg, load_idx, local_group, sgs,
7764                                                 &overload, &overutilized);
7765
7766                 if (local_group)
7767                         goto next_group;
7768
7769                 /*
7770                  * In case the child domain prefers tasks go to siblings
7771                  * first, lower the sg capacity so that we'll try
7772                  * and move all the excess tasks away. We lower the capacity
7773                  * of a group only if the local group has the capacity to fit
7774                  * these excess tasks. The extra check prevents the case where
7775                  * you always pull from the heaviest group when it is already
7776                  * under-utilized (possible with a large weight task outweighs
7777                  * the tasks on the system).
7778                  */
7779                 if (prefer_sibling && sds->local &&
7780                     group_has_capacity(env, &sds->local_stat) &&
7781                     (sgs->sum_nr_running > 1)) {
7782                         sgs->group_no_capacity = 1;
7783                         sgs->group_type = group_classify(sg, sgs);
7784                 }
7785
7786                 /*
7787                  * Ignore task groups with misfit tasks if local group has no
7788                  * capacity or if per-cpu capacity isn't higher.
7789                  */
7790                 if (sgs->group_type == group_misfit_task &&
7791                     (!group_has_capacity(env, &sds->local_stat) ||
7792                      !group_smaller_cpu_capacity(sg, sds->local)))
7793                         sgs->group_type = group_other;
7794
7795                 if (update_sd_pick_busiest(env, sds, sg, sgs)) {
7796                         sds->busiest = sg;
7797                         sds->busiest_stat = *sgs;
7798                 }
7799
7800 next_group:
7801                 /* Now, start updating sd_lb_stats */
7802                 sds->total_load += sgs->group_load;
7803                 sds->total_capacity += sgs->group_capacity;
7804
7805                 sg = sg->next;
7806         } while (sg != env->sd->groups);
7807
7808         if (env->sd->flags & SD_NUMA)
7809                 env->fbq_type = fbq_classify_group(&sds->busiest_stat);
7810
7811         env->src_grp_nr_running = sds->busiest_stat.sum_nr_running;
7812
7813         if (!env->sd->parent) {
7814                 /* update overload indicator if we are at root domain */
7815                 if (env->dst_rq->rd->overload != overload)
7816                         env->dst_rq->rd->overload = overload;
7817
7818                 /* Update over-utilization (tipping point, U >= 0) indicator */
7819                 if (env->dst_rq->rd->overutilized != overutilized) {
7820                         env->dst_rq->rd->overutilized = overutilized;
7821                         trace_sched_overutilized(overutilized);
7822                 }
7823         } else {
7824                 if (!env->dst_rq->rd->overutilized && overutilized) {
7825                         env->dst_rq->rd->overutilized = true;
7826                         trace_sched_overutilized(true);
7827                 }
7828         }
7829
7830 }
7831
7832 /**
7833  * check_asym_packing - Check to see if the group is packed into the
7834  *                      sched doman.
7835  *
7836  * This is primarily intended to used at the sibling level.  Some
7837  * cores like POWER7 prefer to use lower numbered SMT threads.  In the
7838  * case of POWER7, it can move to lower SMT modes only when higher
7839  * threads are idle.  When in lower SMT modes, the threads will
7840  * perform better since they share less core resources.  Hence when we
7841  * have idle threads, we want them to be the higher ones.
7842  *
7843  * This packing function is run on idle threads.  It checks to see if
7844  * the busiest CPU in this domain (core in the P7 case) has a higher
7845  * CPU number than the packing function is being run on.  Here we are
7846  * assuming lower CPU number will be equivalent to lower a SMT thread
7847  * number.
7848  *
7849  * Return: 1 when packing is required and a task should be moved to
7850  * this CPU.  The amount of the imbalance is returned in *imbalance.
7851  *
7852  * @env: The load balancing environment.
7853  * @sds: Statistics of the sched_domain which is to be packed
7854  */
7855 static int check_asym_packing(struct lb_env *env, struct sd_lb_stats *sds)
7856 {
7857         int busiest_cpu;
7858
7859         if (!(env->sd->flags & SD_ASYM_PACKING))
7860                 return 0;
7861
7862         if (!sds->busiest)
7863                 return 0;
7864
7865         busiest_cpu = group_first_cpu(sds->busiest);
7866         if (env->dst_cpu > busiest_cpu)
7867                 return 0;
7868
7869         env->imbalance = DIV_ROUND_CLOSEST(
7870                 sds->busiest_stat.avg_load * sds->busiest_stat.group_capacity,
7871                 SCHED_CAPACITY_SCALE);
7872
7873         return 1;
7874 }
7875
7876 /**
7877  * fix_small_imbalance - Calculate the minor imbalance that exists
7878  *                      amongst the groups of a sched_domain, during
7879  *                      load balancing.
7880  * @env: The load balancing environment.
7881  * @sds: Statistics of the sched_domain whose imbalance is to be calculated.
7882  */
7883 static inline
7884 void fix_small_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
7885 {
7886         unsigned long tmp, capa_now = 0, capa_move = 0;
7887         unsigned int imbn = 2;
7888         unsigned long scaled_busy_load_per_task;
7889         struct sg_lb_stats *local, *busiest;
7890
7891         local = &sds->local_stat;
7892         busiest = &sds->busiest_stat;
7893
7894         if (!local->sum_nr_running)
7895                 local->load_per_task = cpu_avg_load_per_task(env->dst_cpu);
7896         else if (busiest->load_per_task > local->load_per_task)
7897                 imbn = 1;
7898
7899         scaled_busy_load_per_task =
7900                 (busiest->load_per_task * SCHED_CAPACITY_SCALE) /
7901                 busiest->group_capacity;
7902
7903         if (busiest->avg_load + scaled_busy_load_per_task >=
7904             local->avg_load + (scaled_busy_load_per_task * imbn)) {
7905                 env->imbalance = busiest->load_per_task;
7906                 return;
7907         }
7908
7909         /*
7910          * OK, we don't have enough imbalance to justify moving tasks,
7911          * however we may be able to increase total CPU capacity used by
7912          * moving them.
7913          */
7914
7915         capa_now += busiest->group_capacity *
7916                         min(busiest->load_per_task, busiest->avg_load);
7917         capa_now += local->group_capacity *
7918                         min(local->load_per_task, local->avg_load);
7919         capa_now /= SCHED_CAPACITY_SCALE;
7920
7921         /* Amount of load we'd subtract */
7922         if (busiest->avg_load > scaled_busy_load_per_task) {
7923                 capa_move += busiest->group_capacity *
7924                             min(busiest->load_per_task,
7925                                 busiest->avg_load - scaled_busy_load_per_task);
7926         }
7927
7928         /* Amount of load we'd add */
7929         if (busiest->avg_load * busiest->group_capacity <
7930             busiest->load_per_task * SCHED_CAPACITY_SCALE) {
7931                 tmp = (busiest->avg_load * busiest->group_capacity) /
7932                       local->group_capacity;
7933         } else {
7934                 tmp = (busiest->load_per_task * SCHED_CAPACITY_SCALE) /
7935                       local->group_capacity;
7936         }
7937         capa_move += local->group_capacity *
7938                     min(local->load_per_task, local->avg_load + tmp);
7939         capa_move /= SCHED_CAPACITY_SCALE;
7940
7941         /* Move if we gain throughput */
7942         if (capa_move > capa_now)
7943                 env->imbalance = busiest->load_per_task;
7944 }
7945
7946 /**
7947  * calculate_imbalance - Calculate the amount of imbalance present within the
7948  *                       groups of a given sched_domain during load balance.
7949  * @env: load balance environment
7950  * @sds: statistics of the sched_domain whose imbalance is to be calculated.
7951  */
7952 static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
7953 {
7954         unsigned long max_pull, load_above_capacity = ~0UL;
7955         struct sg_lb_stats *local, *busiest;
7956
7957         local = &sds->local_stat;
7958         busiest = &sds->busiest_stat;
7959
7960         if (busiest->group_type == group_imbalanced) {
7961                 /*
7962                  * In the group_imb case we cannot rely on group-wide averages
7963                  * to ensure cpu-load equilibrium, look at wider averages. XXX
7964                  */
7965                 busiest->load_per_task =
7966                         min(busiest->load_per_task, sds->avg_load);
7967         }
7968
7969         /*
7970          * In the presence of smp nice balancing, certain scenarios can have
7971          * max load less than avg load(as we skip the groups at or below
7972          * its cpu_capacity, while calculating max_load..)
7973          */
7974         if (busiest->avg_load <= sds->avg_load ||
7975             local->avg_load >= sds->avg_load) {
7976                 /* Misfitting tasks should be migrated in any case */
7977                 if (busiest->group_type == group_misfit_task) {
7978                         env->imbalance = busiest->group_misfit_task;
7979                         return;
7980                 }
7981
7982                 /*
7983                  * Busiest group is overloaded, local is not, use the spare
7984                  * cycles to maximize throughput
7985                  */
7986                 if (busiest->group_type == group_overloaded &&
7987                     local->group_type <= group_misfit_task) {
7988                         env->imbalance = busiest->load_per_task;
7989                         return;
7990                 }
7991
7992                 env->imbalance = 0;
7993                 return fix_small_imbalance(env, sds);
7994         }
7995
7996         /*
7997          * If there aren't any idle cpus, avoid creating some.
7998          */
7999         if (busiest->group_type == group_overloaded &&
8000             local->group_type   == group_overloaded) {
8001                 load_above_capacity = busiest->sum_nr_running *
8002                                         SCHED_LOAD_SCALE;
8003                 if (load_above_capacity > busiest->group_capacity)
8004                         load_above_capacity -= busiest->group_capacity;
8005                 else
8006                         load_above_capacity = ~0UL;
8007         }
8008
8009         /*
8010          * We're trying to get all the cpus to the average_load, so we don't
8011          * want to push ourselves above the average load, nor do we wish to
8012          * reduce the max loaded cpu below the average load. At the same time,
8013          * we also don't want to reduce the group load below the group capacity
8014          * (so that we can implement power-savings policies etc). Thus we look
8015          * for the minimum possible imbalance.
8016          */
8017         max_pull = min(busiest->avg_load - sds->avg_load, load_above_capacity);
8018
8019         /* How much load to actually move to equalise the imbalance */
8020         env->imbalance = min(
8021                 max_pull * busiest->group_capacity,
8022                 (sds->avg_load - local->avg_load) * local->group_capacity
8023         ) / SCHED_CAPACITY_SCALE;
8024
8025         /* Boost imbalance to allow misfit task to be balanced. */
8026         if (busiest->group_type == group_misfit_task)
8027                 env->imbalance = max_t(long, env->imbalance,
8028                                      busiest->group_misfit_task);
8029
8030         /*
8031          * if *imbalance is less than the average load per runnable task
8032          * there is no guarantee that any tasks will be moved so we'll have
8033          * a think about bumping its value to force at least one task to be
8034          * moved
8035          */
8036         if (env->imbalance < busiest->load_per_task)
8037                 return fix_small_imbalance(env, sds);
8038 }
8039
8040 /******* find_busiest_group() helpers end here *********************/
8041
8042 /**
8043  * find_busiest_group - Returns the busiest group within the sched_domain
8044  * if there is an imbalance. If there isn't an imbalance, and
8045  * the user has opted for power-savings, it returns a group whose
8046  * CPUs can be put to idle by rebalancing those tasks elsewhere, if
8047  * such a group exists.
8048  *
8049  * Also calculates the amount of weighted load which should be moved
8050  * to restore balance.
8051  *
8052  * @env: The load balancing environment.
8053  *
8054  * Return:      - The busiest group if imbalance exists.
8055  *              - If no imbalance and user has opted for power-savings balance,
8056  *                 return the least loaded group whose CPUs can be
8057  *                 put to idle by rebalancing its tasks onto our group.
8058  */
8059 static struct sched_group *find_busiest_group(struct lb_env *env)
8060 {
8061         struct sg_lb_stats *local, *busiest;
8062         struct sd_lb_stats sds;
8063
8064         init_sd_lb_stats(&sds);
8065
8066         /*
8067          * Compute the various statistics relavent for load balancing at
8068          * this level.
8069          */
8070         update_sd_lb_stats(env, &sds);
8071
8072         if (energy_aware() && !env->dst_rq->rd->overutilized)
8073                 goto out_balanced;
8074
8075         local = &sds.local_stat;
8076         busiest = &sds.busiest_stat;
8077
8078         /* ASYM feature bypasses nice load balance check */
8079         if ((env->idle == CPU_IDLE || env->idle == CPU_NEWLY_IDLE) &&
8080             check_asym_packing(env, &sds))
8081                 return sds.busiest;
8082
8083         /* There is no busy sibling group to pull tasks from */
8084         if (!sds.busiest || busiest->sum_nr_running == 0)
8085                 goto out_balanced;
8086
8087         sds.avg_load = (SCHED_CAPACITY_SCALE * sds.total_load)
8088                                                 / sds.total_capacity;
8089
8090         /*
8091          * If the busiest group is imbalanced the below checks don't
8092          * work because they assume all things are equal, which typically
8093          * isn't true due to cpus_allowed constraints and the like.
8094          */
8095         if (busiest->group_type == group_imbalanced)
8096                 goto force_balance;
8097
8098         /* SD_BALANCE_NEWIDLE trumps SMP nice when underutilized */
8099         if (env->idle == CPU_NEWLY_IDLE && group_has_capacity(env, local) &&
8100             busiest->group_no_capacity)
8101                 goto force_balance;
8102
8103         /* Misfitting tasks should be dealt with regardless of the avg load */
8104         if (busiest->group_type == group_misfit_task) {
8105                 goto force_balance;
8106         }
8107
8108         /*
8109          * If the local group is busier than the selected busiest group
8110          * don't try and pull any tasks.
8111          */
8112         if (local->avg_load >= busiest->avg_load)
8113                 goto out_balanced;
8114
8115         /*
8116          * Don't pull any tasks if this group is already above the domain
8117          * average load.
8118          */
8119         if (local->avg_load >= sds.avg_load)
8120                 goto out_balanced;
8121
8122         if (env->idle == CPU_IDLE) {
8123                 /*
8124                  * This cpu is idle. If the busiest group is not overloaded
8125                  * and there is no imbalance between this and busiest group
8126                  * wrt idle cpus, it is balanced. The imbalance becomes
8127                  * significant if the diff is greater than 1 otherwise we
8128                  * might end up to just move the imbalance on another group
8129                  */
8130                 if ((busiest->group_type != group_overloaded) &&
8131                     (local->idle_cpus <= (busiest->idle_cpus + 1)) &&
8132                     !group_smaller_cpu_capacity(sds.busiest, sds.local))
8133                         goto out_balanced;
8134         } else {
8135                 /*
8136                  * In the CPU_NEWLY_IDLE, CPU_NOT_IDLE cases, use
8137                  * imbalance_pct to be conservative.
8138                  */
8139                 if (100 * busiest->avg_load <=
8140                                 env->sd->imbalance_pct * local->avg_load)
8141                         goto out_balanced;
8142         }
8143
8144 force_balance:
8145         env->busiest_group_type = busiest->group_type;
8146         /* Looks like there is an imbalance. Compute it */
8147         calculate_imbalance(env, &sds);
8148         return sds.busiest;
8149
8150 out_balanced:
8151         env->imbalance = 0;
8152         return NULL;
8153 }
8154
8155 /*
8156  * find_busiest_queue - find the busiest runqueue among the cpus in group.
8157  */
8158 static struct rq *find_busiest_queue(struct lb_env *env,
8159                                      struct sched_group *group)
8160 {
8161         struct rq *busiest = NULL, *rq;
8162         unsigned long busiest_load = 0, busiest_capacity = 1;
8163         int i;
8164
8165         for_each_cpu_and(i, sched_group_cpus(group), env->cpus) {
8166                 unsigned long capacity, wl;
8167                 enum fbq_type rt;
8168
8169                 rq = cpu_rq(i);
8170                 rt = fbq_classify_rq(rq);
8171
8172                 /*
8173                  * We classify groups/runqueues into three groups:
8174                  *  - regular: there are !numa tasks
8175                  *  - remote:  there are numa tasks that run on the 'wrong' node
8176                  *  - all:     there is no distinction
8177                  *
8178                  * In order to avoid migrating ideally placed numa tasks,
8179                  * ignore those when there's better options.
8180                  *
8181                  * If we ignore the actual busiest queue to migrate another
8182                  * task, the next balance pass can still reduce the busiest
8183                  * queue by moving tasks around inside the node.
8184                  *
8185                  * If we cannot move enough load due to this classification
8186                  * the next pass will adjust the group classification and
8187                  * allow migration of more tasks.
8188                  *
8189                  * Both cases only affect the total convergence complexity.
8190                  */
8191                 if (rt > env->fbq_type)
8192                         continue;
8193
8194                 capacity = capacity_of(i);
8195
8196                 wl = weighted_cpuload(i);
8197
8198                 /*
8199                  * When comparing with imbalance, use weighted_cpuload()
8200                  * which is not scaled with the cpu capacity.
8201                  */
8202
8203                 if (rq->nr_running == 1 && wl > env->imbalance &&
8204                     !check_cpu_capacity(rq, env->sd) &&
8205                     env->busiest_group_type != group_misfit_task)
8206                         continue;
8207
8208                 /*
8209                  * For the load comparisons with the other cpu's, consider
8210                  * the weighted_cpuload() scaled with the cpu capacity, so
8211                  * that the load can be moved away from the cpu that is
8212                  * potentially running at a lower capacity.
8213                  *
8214                  * Thus we're looking for max(wl_i / capacity_i), crosswise
8215                  * multiplication to rid ourselves of the division works out
8216                  * to: wl_i * capacity_j > wl_j * capacity_i;  where j is
8217                  * our previous maximum.
8218                  */
8219                 if (wl * busiest_capacity > busiest_load * capacity) {
8220                         busiest_load = wl;
8221                         busiest_capacity = capacity;
8222                         busiest = rq;
8223                 }
8224         }
8225
8226         return busiest;
8227 }
8228
8229 /*
8230  * Max backoff if we encounter pinned tasks. Pretty arbitrary value, but
8231  * so long as it is large enough.
8232  */
8233 #define MAX_PINNED_INTERVAL     512
8234
8235 /* Working cpumask for load_balance and load_balance_newidle. */
8236 DEFINE_PER_CPU(cpumask_var_t, load_balance_mask);
8237
8238 static int need_active_balance(struct lb_env *env)
8239 {
8240         struct sched_domain *sd = env->sd;
8241
8242         if (env->idle == CPU_NEWLY_IDLE) {
8243
8244                 /*
8245                  * ASYM_PACKING needs to force migrate tasks from busy but
8246                  * higher numbered CPUs in order to pack all tasks in the
8247                  * lowest numbered CPUs.
8248                  */
8249                 if ((sd->flags & SD_ASYM_PACKING) && env->src_cpu > env->dst_cpu)
8250                         return 1;
8251         }
8252
8253         /*
8254          * The dst_cpu is idle and the src_cpu CPU has only 1 CFS task.
8255          * It's worth migrating the task if the src_cpu's capacity is reduced
8256          * because of other sched_class or IRQs if more capacity stays
8257          * available on dst_cpu.
8258          */
8259         if ((env->idle != CPU_NOT_IDLE) &&
8260             (env->src_rq->cfs.h_nr_running == 1)) {
8261                 if ((check_cpu_capacity(env->src_rq, sd)) &&
8262                     (capacity_of(env->src_cpu)*sd->imbalance_pct < capacity_of(env->dst_cpu)*100))
8263                         return 1;
8264         }
8265
8266         if ((capacity_of(env->src_cpu) < capacity_of(env->dst_cpu)) &&
8267                                 env->src_rq->cfs.h_nr_running == 1 &&
8268                                 cpu_overutilized(env->src_cpu) &&
8269                                 !cpu_overutilized(env->dst_cpu)) {
8270                         return 1;
8271         }
8272
8273         return unlikely(sd->nr_balance_failed > sd->cache_nice_tries+2);
8274 }
8275
8276 static int active_load_balance_cpu_stop(void *data);
8277
8278 static int should_we_balance(struct lb_env *env)
8279 {
8280         struct sched_group *sg = env->sd->groups;
8281         struct cpumask *sg_cpus, *sg_mask;
8282         int cpu, balance_cpu = -1;
8283
8284         /*
8285          * In the newly idle case, we will allow all the cpu's
8286          * to do the newly idle load balance.
8287          */
8288         if (env->idle == CPU_NEWLY_IDLE)
8289                 return 1;
8290
8291         sg_cpus = sched_group_cpus(sg);
8292         sg_mask = sched_group_mask(sg);
8293         /* Try to find first idle cpu */
8294         for_each_cpu_and(cpu, sg_cpus, env->cpus) {
8295                 if (!cpumask_test_cpu(cpu, sg_mask) || !idle_cpu(cpu))
8296                         continue;
8297
8298                 balance_cpu = cpu;
8299                 break;
8300         }
8301
8302         if (balance_cpu == -1)
8303                 balance_cpu = group_balance_cpu(sg);
8304
8305         /*
8306          * First idle cpu or the first cpu(busiest) in this sched group
8307          * is eligible for doing load balancing at this and above domains.
8308          */
8309         return balance_cpu == env->dst_cpu;
8310 }
8311
8312 /*
8313  * Check this_cpu to ensure it is balanced within domain. Attempt to move
8314  * tasks if there is an imbalance.
8315  */
8316 static int load_balance(int this_cpu, struct rq *this_rq,
8317                         struct sched_domain *sd, enum cpu_idle_type idle,
8318                         int *continue_balancing)
8319 {
8320         int ld_moved, cur_ld_moved, active_balance = 0;
8321         struct sched_domain *sd_parent = sd->parent;
8322         struct sched_group *group;
8323         struct rq *busiest;
8324         unsigned long flags;
8325         struct cpumask *cpus = this_cpu_cpumask_var_ptr(load_balance_mask);
8326
8327         struct lb_env env = {
8328                 .sd             = sd,
8329                 .dst_cpu        = this_cpu,
8330                 .dst_rq         = this_rq,
8331                 .dst_grpmask    = sched_group_cpus(sd->groups),
8332                 .idle           = idle,
8333                 .loop_break     = sched_nr_migrate_break,
8334                 .cpus           = cpus,
8335                 .fbq_type       = all,
8336                 .tasks          = LIST_HEAD_INIT(env.tasks),
8337         };
8338
8339         /*
8340          * For NEWLY_IDLE load_balancing, we don't need to consider
8341          * other cpus in our group
8342          */
8343         if (idle == CPU_NEWLY_IDLE)
8344                 env.dst_grpmask = NULL;
8345
8346         cpumask_copy(cpus, cpu_active_mask);
8347
8348         schedstat_inc(sd, lb_count[idle]);
8349
8350 redo:
8351         if (!should_we_balance(&env)) {
8352                 *continue_balancing = 0;
8353                 goto out_balanced;
8354         }
8355
8356         group = find_busiest_group(&env);
8357         if (!group) {
8358                 schedstat_inc(sd, lb_nobusyg[idle]);
8359                 goto out_balanced;
8360         }
8361
8362         busiest = find_busiest_queue(&env, group);
8363         if (!busiest) {
8364                 schedstat_inc(sd, lb_nobusyq[idle]);
8365                 goto out_balanced;
8366         }
8367
8368         BUG_ON(busiest == env.dst_rq);
8369
8370         schedstat_add(sd, lb_imbalance[idle], env.imbalance);
8371
8372         env.src_cpu = busiest->cpu;
8373         env.src_rq = busiest;
8374
8375         ld_moved = 0;
8376         if (busiest->nr_running > 1) {
8377                 /*
8378                  * Attempt to move tasks. If find_busiest_group has found
8379                  * an imbalance but busiest->nr_running <= 1, the group is
8380                  * still unbalanced. ld_moved simply stays zero, so it is
8381                  * correctly treated as an imbalance.
8382                  */
8383                 env.flags |= LBF_ALL_PINNED;
8384                 env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
8385
8386 more_balance:
8387                 raw_spin_lock_irqsave(&busiest->lock, flags);
8388
8389                 /*
8390                  * cur_ld_moved - load moved in current iteration
8391                  * ld_moved     - cumulative load moved across iterations
8392                  */
8393                 cur_ld_moved = detach_tasks(&env);
8394                 /*
8395                  * We want to potentially lower env.src_cpu's OPP.
8396                  */
8397                 if (cur_ld_moved)
8398                         update_capacity_of(env.src_cpu);
8399
8400                 /*
8401                  * We've detached some tasks from busiest_rq. Every
8402                  * task is masked "TASK_ON_RQ_MIGRATING", so we can safely
8403                  * unlock busiest->lock, and we are able to be sure
8404                  * that nobody can manipulate the tasks in parallel.
8405                  * See task_rq_lock() family for the details.
8406                  */
8407
8408                 raw_spin_unlock(&busiest->lock);
8409
8410                 if (cur_ld_moved) {
8411                         attach_tasks(&env);
8412                         ld_moved += cur_ld_moved;
8413                 }
8414
8415                 local_irq_restore(flags);
8416
8417                 if (env.flags & LBF_NEED_BREAK) {
8418                         env.flags &= ~LBF_NEED_BREAK;
8419                         goto more_balance;
8420                 }
8421
8422                 /*
8423                  * Revisit (affine) tasks on src_cpu that couldn't be moved to
8424                  * us and move them to an alternate dst_cpu in our sched_group
8425                  * where they can run. The upper limit on how many times we
8426                  * iterate on same src_cpu is dependent on number of cpus in our
8427                  * sched_group.
8428                  *
8429                  * This changes load balance semantics a bit on who can move
8430                  * load to a given_cpu. In addition to the given_cpu itself
8431                  * (or a ilb_cpu acting on its behalf where given_cpu is
8432                  * nohz-idle), we now have balance_cpu in a position to move
8433                  * load to given_cpu. In rare situations, this may cause
8434                  * conflicts (balance_cpu and given_cpu/ilb_cpu deciding
8435                  * _independently_ and at _same_ time to move some load to
8436                  * given_cpu) causing exceess load to be moved to given_cpu.
8437                  * This however should not happen so much in practice and
8438                  * moreover subsequent load balance cycles should correct the
8439                  * excess load moved.
8440                  */
8441                 if ((env.flags & LBF_DST_PINNED) && env.imbalance > 0) {
8442
8443                         /* Prevent to re-select dst_cpu via env's cpus */
8444                         cpumask_clear_cpu(env.dst_cpu, env.cpus);
8445
8446                         env.dst_rq       = cpu_rq(env.new_dst_cpu);
8447                         env.dst_cpu      = env.new_dst_cpu;
8448                         env.flags       &= ~LBF_DST_PINNED;
8449                         env.loop         = 0;
8450                         env.loop_break   = sched_nr_migrate_break;
8451
8452                         /*
8453                          * Go back to "more_balance" rather than "redo" since we
8454                          * need to continue with same src_cpu.
8455                          */
8456                         goto more_balance;
8457                 }
8458
8459                 /*
8460                  * We failed to reach balance because of affinity.
8461                  */
8462                 if (sd_parent) {
8463                         int *group_imbalance = &sd_parent->groups->sgc->imbalance;
8464
8465                         if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0)
8466                                 *group_imbalance = 1;
8467                 }
8468
8469                 /* All tasks on this runqueue were pinned by CPU affinity */
8470                 if (unlikely(env.flags & LBF_ALL_PINNED)) {
8471                         cpumask_clear_cpu(cpu_of(busiest), cpus);
8472                         if (!cpumask_empty(cpus)) {
8473                                 env.loop = 0;
8474                                 env.loop_break = sched_nr_migrate_break;
8475                                 goto redo;
8476                         }
8477                         goto out_all_pinned;
8478                 }
8479         }
8480
8481         if (!ld_moved) {
8482                 schedstat_inc(sd, lb_failed[idle]);
8483                 /*
8484                  * Increment the failure counter only on periodic balance.
8485                  * We do not want newidle balance, which can be very
8486                  * frequent, pollute the failure counter causing
8487                  * excessive cache_hot migrations and active balances.
8488                  */
8489                 if (idle != CPU_NEWLY_IDLE)
8490                         if (env.src_grp_nr_running > 1)
8491                                 sd->nr_balance_failed++;
8492
8493                 if (need_active_balance(&env)) {
8494                         raw_spin_lock_irqsave(&busiest->lock, flags);
8495
8496                         /* don't kick the active_load_balance_cpu_stop,
8497                          * if the curr task on busiest cpu can't be
8498                          * moved to this_cpu
8499                          */
8500                         if (!cpumask_test_cpu(this_cpu,
8501                                         tsk_cpus_allowed(busiest->curr))) {
8502                                 raw_spin_unlock_irqrestore(&busiest->lock,
8503                                                             flags);
8504                                 env.flags |= LBF_ALL_PINNED;
8505                                 goto out_one_pinned;
8506                         }
8507
8508                         /*
8509                          * ->active_balance synchronizes accesses to
8510                          * ->active_balance_work.  Once set, it's cleared
8511                          * only after active load balance is finished.
8512                          */
8513                         if (!busiest->active_balance) {
8514                                 busiest->active_balance = 1;
8515                                 busiest->push_cpu = this_cpu;
8516                                 active_balance = 1;
8517                         }
8518                         raw_spin_unlock_irqrestore(&busiest->lock, flags);
8519
8520                         if (active_balance) {
8521                                 stop_one_cpu_nowait(cpu_of(busiest),
8522                                         active_load_balance_cpu_stop, busiest,
8523                                         &busiest->active_balance_work);
8524                         }
8525
8526                         /*
8527                          * We've kicked active balancing, reset the failure
8528                          * counter.
8529                          */
8530                         sd->nr_balance_failed = sd->cache_nice_tries+1;
8531                 }
8532         } else
8533                 sd->nr_balance_failed = 0;
8534
8535         if (likely(!active_balance)) {
8536                 /* We were unbalanced, so reset the balancing interval */
8537                 sd->balance_interval = sd->min_interval;
8538         } else {
8539                 /*
8540                  * If we've begun active balancing, start to back off. This
8541                  * case may not be covered by the all_pinned logic if there
8542                  * is only 1 task on the busy runqueue (because we don't call
8543                  * detach_tasks).
8544                  */
8545                 if (sd->balance_interval < sd->max_interval)
8546                         sd->balance_interval *= 2;
8547         }
8548
8549         goto out;
8550
8551 out_balanced:
8552         /*
8553          * We reach balance although we may have faced some affinity
8554          * constraints. Clear the imbalance flag if it was set.
8555          */
8556         if (sd_parent) {
8557                 int *group_imbalance = &sd_parent->groups->sgc->imbalance;
8558
8559                 if (*group_imbalance)
8560                         *group_imbalance = 0;
8561         }
8562
8563 out_all_pinned:
8564         /*
8565          * We reach balance because all tasks are pinned at this level so
8566          * we can't migrate them. Let the imbalance flag set so parent level
8567          * can try to migrate them.
8568          */
8569         schedstat_inc(sd, lb_balanced[idle]);
8570
8571         sd->nr_balance_failed = 0;
8572
8573 out_one_pinned:
8574         /* tune up the balancing interval */
8575         if (((env.flags & LBF_ALL_PINNED) &&
8576                         sd->balance_interval < MAX_PINNED_INTERVAL) ||
8577                         (sd->balance_interval < sd->max_interval))
8578                 sd->balance_interval *= 2;
8579
8580         ld_moved = 0;
8581 out:
8582         return ld_moved;
8583 }
8584
8585 static inline unsigned long
8586 get_sd_balance_interval(struct sched_domain *sd, int cpu_busy)
8587 {
8588         unsigned long interval = sd->balance_interval;
8589
8590         if (cpu_busy)
8591                 interval *= sd->busy_factor;
8592
8593         /* scale ms to jiffies */
8594         interval = msecs_to_jiffies(interval);
8595         interval = clamp(interval, 1UL, max_load_balance_interval);
8596
8597         return interval;
8598 }
8599
8600 static inline void
8601 update_next_balance(struct sched_domain *sd, int cpu_busy, unsigned long *next_balance)
8602 {
8603         unsigned long interval, next;
8604
8605         interval = get_sd_balance_interval(sd, cpu_busy);
8606         next = sd->last_balance + interval;
8607
8608         if (time_after(*next_balance, next))
8609                 *next_balance = next;
8610 }
8611
8612 /*
8613  * idle_balance is called by schedule() if this_cpu is about to become
8614  * idle. Attempts to pull tasks from other CPUs.
8615  */
8616 static int idle_balance(struct rq *this_rq)
8617 {
8618         unsigned long next_balance = jiffies + HZ;
8619         int this_cpu = this_rq->cpu;
8620         struct sched_domain *sd;
8621         int pulled_task = 0;
8622         u64 curr_cost = 0;
8623         long removed_util=0;
8624
8625         idle_enter_fair(this_rq);
8626
8627         /*
8628          * We must set idle_stamp _before_ calling idle_balance(), such that we
8629          * measure the duration of idle_balance() as idle time.
8630          */
8631         this_rq->idle_stamp = rq_clock(this_rq);
8632
8633         if (!energy_aware() &&
8634             (this_rq->avg_idle < sysctl_sched_migration_cost ||
8635              !this_rq->rd->overload)) {
8636                 rcu_read_lock();
8637                 sd = rcu_dereference_check_sched_domain(this_rq->sd);
8638                 if (sd)
8639                         update_next_balance(sd, 0, &next_balance);
8640                 rcu_read_unlock();
8641
8642                 goto out;
8643         }
8644
8645         raw_spin_unlock(&this_rq->lock);
8646
8647         /*
8648          * If removed_util_avg is !0 we most probably migrated some task away
8649          * from this_cpu. In this case we might be willing to trigger an OPP
8650          * update, but we want to do so if we don't find anybody else to pull
8651          * here (we will trigger an OPP update with the pulled task's enqueue
8652          * anyway).
8653          *
8654          * Record removed_util before calling update_blocked_averages, and use
8655          * it below (before returning) to see if an OPP update is required.
8656          */
8657         removed_util = atomic_long_read(&(this_rq->cfs).removed_util_avg);
8658         update_blocked_averages(this_cpu);
8659         rcu_read_lock();
8660         for_each_domain(this_cpu, sd) {
8661                 int continue_balancing = 1;
8662                 u64 t0, domain_cost;
8663
8664                 if (!(sd->flags & SD_LOAD_BALANCE))
8665                         continue;
8666
8667                 if (this_rq->avg_idle < curr_cost + sd->max_newidle_lb_cost) {
8668                         update_next_balance(sd, 0, &next_balance);
8669                         break;
8670                 }
8671
8672                 if (sd->flags & SD_BALANCE_NEWIDLE) {
8673                         t0 = sched_clock_cpu(this_cpu);
8674
8675                         pulled_task = load_balance(this_cpu, this_rq,
8676                                                    sd, CPU_NEWLY_IDLE,
8677                                                    &continue_balancing);
8678
8679                         domain_cost = sched_clock_cpu(this_cpu) - t0;
8680                         if (domain_cost > sd->max_newidle_lb_cost)
8681                                 sd->max_newidle_lb_cost = domain_cost;
8682
8683                         curr_cost += domain_cost;
8684                 }
8685
8686                 update_next_balance(sd, 0, &next_balance);
8687
8688                 /*
8689                  * Stop searching for tasks to pull if there are
8690                  * now runnable tasks on this rq.
8691                  */
8692                 if (pulled_task || this_rq->nr_running > 0)
8693                         break;
8694         }
8695         rcu_read_unlock();
8696
8697         raw_spin_lock(&this_rq->lock);
8698
8699         if (curr_cost > this_rq->max_idle_balance_cost)
8700                 this_rq->max_idle_balance_cost = curr_cost;
8701
8702         /*
8703          * While browsing the domains, we released the rq lock, a task could
8704          * have been enqueued in the meantime. Since we're not going idle,
8705          * pretend we pulled a task.
8706          */
8707         if (this_rq->cfs.h_nr_running && !pulled_task)
8708                 pulled_task = 1;
8709
8710 out:
8711         /* Move the next balance forward */
8712         if (time_after(this_rq->next_balance, next_balance))
8713                 this_rq->next_balance = next_balance;
8714
8715         /* Is there a task of a high priority class? */
8716         if (this_rq->nr_running != this_rq->cfs.h_nr_running)
8717                 pulled_task = -1;
8718
8719         if (pulled_task) {
8720                 idle_exit_fair(this_rq);
8721                 this_rq->idle_stamp = 0;
8722         } else if (removed_util) {
8723                 /*
8724                  * No task pulled and someone has been migrated away.
8725                  * Good case to trigger an OPP update.
8726                  */
8727                 update_capacity_of(this_cpu);
8728         }
8729
8730         return pulled_task;
8731 }
8732
8733 /*
8734  * active_load_balance_cpu_stop is run by cpu stopper. It pushes
8735  * running tasks off the busiest CPU onto idle CPUs. It requires at
8736  * least 1 task to be running on each physical CPU where possible, and
8737  * avoids physical / logical imbalances.
8738  */
8739 static int active_load_balance_cpu_stop(void *data)
8740 {
8741         struct rq *busiest_rq = data;
8742         int busiest_cpu = cpu_of(busiest_rq);
8743         int target_cpu = busiest_rq->push_cpu;
8744         struct rq *target_rq = cpu_rq(target_cpu);
8745         struct sched_domain *sd;
8746         struct task_struct *p = NULL;
8747
8748         raw_spin_lock_irq(&busiest_rq->lock);
8749
8750         /* make sure the requested cpu hasn't gone down in the meantime */
8751         if (unlikely(busiest_cpu != smp_processor_id() ||
8752                      !busiest_rq->active_balance))
8753                 goto out_unlock;
8754
8755         /* Is there any task to move? */
8756         if (busiest_rq->nr_running <= 1)
8757                 goto out_unlock;
8758
8759         /*
8760          * This condition is "impossible", if it occurs
8761          * we need to fix it. Originally reported by
8762          * Bjorn Helgaas on a 128-cpu setup.
8763          */
8764         BUG_ON(busiest_rq == target_rq);
8765
8766         /* Search for an sd spanning us and the target CPU. */
8767         rcu_read_lock();
8768         for_each_domain(target_cpu, sd) {
8769                 if ((sd->flags & SD_LOAD_BALANCE) &&
8770                     cpumask_test_cpu(busiest_cpu, sched_domain_span(sd)))
8771                                 break;
8772         }
8773
8774         if (likely(sd)) {
8775                 struct lb_env env = {
8776                         .sd             = sd,
8777                         .dst_cpu        = target_cpu,
8778                         .dst_rq         = target_rq,
8779                         .src_cpu        = busiest_rq->cpu,
8780                         .src_rq         = busiest_rq,
8781                         .idle           = CPU_IDLE,
8782                 };
8783
8784                 schedstat_inc(sd, alb_count);
8785
8786                 p = detach_one_task(&env);
8787                 if (p) {
8788                         schedstat_inc(sd, alb_pushed);
8789                         /*
8790                          * We want to potentially lower env.src_cpu's OPP.
8791                          */
8792                         update_capacity_of(env.src_cpu);
8793                 }
8794                 else
8795                         schedstat_inc(sd, alb_failed);
8796         }
8797         rcu_read_unlock();
8798 out_unlock:
8799         busiest_rq->active_balance = 0;
8800         raw_spin_unlock(&busiest_rq->lock);
8801
8802         if (p)
8803                 attach_one_task(target_rq, p);
8804
8805         local_irq_enable();
8806
8807         return 0;
8808 }
8809
8810 static inline int on_null_domain(struct rq *rq)
8811 {
8812         return unlikely(!rcu_dereference_sched(rq->sd));
8813 }
8814
8815 #ifdef CONFIG_NO_HZ_COMMON
8816 /*
8817  * idle load balancing details
8818  * - When one of the busy CPUs notice that there may be an idle rebalancing
8819  *   needed, they will kick the idle load balancer, which then does idle
8820  *   load balancing for all the idle CPUs.
8821  */
8822 static struct {
8823         cpumask_var_t idle_cpus_mask;
8824         atomic_t nr_cpus;
8825         unsigned long next_balance;     /* in jiffy units */
8826 } nohz ____cacheline_aligned;
8827
8828 static inline int find_new_ilb(void)
8829 {
8830         int ilb = cpumask_first(nohz.idle_cpus_mask);
8831
8832         if (ilb < nr_cpu_ids && idle_cpu(ilb))
8833                 return ilb;
8834
8835         return nr_cpu_ids;
8836 }
8837
8838 /*
8839  * Kick a CPU to do the nohz balancing, if it is time for it. We pick the
8840  * nohz_load_balancer CPU (if there is one) otherwise fallback to any idle
8841  * CPU (if there is one).
8842  */
8843 static void nohz_balancer_kick(void)
8844 {
8845         int ilb_cpu;
8846
8847         nohz.next_balance++;
8848
8849         ilb_cpu = find_new_ilb();
8850
8851         if (ilb_cpu >= nr_cpu_ids)
8852                 return;
8853
8854         if (test_and_set_bit(NOHZ_BALANCE_KICK, nohz_flags(ilb_cpu)))
8855                 return;
8856         /*
8857          * Use smp_send_reschedule() instead of resched_cpu().
8858          * This way we generate a sched IPI on the target cpu which
8859          * is idle. And the softirq performing nohz idle load balance
8860          * will be run before returning from the IPI.
8861          */
8862         smp_send_reschedule(ilb_cpu);
8863         return;
8864 }
8865
8866 static inline void nohz_balance_exit_idle(int cpu)
8867 {
8868         if (unlikely(test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))) {
8869                 /*
8870                  * Completely isolated CPUs don't ever set, so we must test.
8871                  */
8872                 if (likely(cpumask_test_cpu(cpu, nohz.idle_cpus_mask))) {
8873                         cpumask_clear_cpu(cpu, nohz.idle_cpus_mask);
8874                         atomic_dec(&nohz.nr_cpus);
8875                 }
8876                 clear_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
8877         }
8878 }
8879
8880 static inline void set_cpu_sd_state_busy(void)
8881 {
8882         struct sched_domain *sd;
8883         int cpu = smp_processor_id();
8884
8885         rcu_read_lock();
8886         sd = rcu_dereference(per_cpu(sd_busy, cpu));
8887
8888         if (!sd || !sd->nohz_idle)
8889                 goto unlock;
8890         sd->nohz_idle = 0;
8891
8892         atomic_inc(&sd->groups->sgc->nr_busy_cpus);
8893 unlock:
8894         rcu_read_unlock();
8895 }
8896
8897 void set_cpu_sd_state_idle(void)
8898 {
8899         struct sched_domain *sd;
8900         int cpu = smp_processor_id();
8901
8902         rcu_read_lock();
8903         sd = rcu_dereference(per_cpu(sd_busy, cpu));
8904
8905         if (!sd || sd->nohz_idle)
8906                 goto unlock;
8907         sd->nohz_idle = 1;
8908
8909         atomic_dec(&sd->groups->sgc->nr_busy_cpus);
8910 unlock:
8911         rcu_read_unlock();
8912 }
8913
8914 /*
8915  * This routine will record that the cpu is going idle with tick stopped.
8916  * This info will be used in performing idle load balancing in the future.
8917  */
8918 void nohz_balance_enter_idle(int cpu)
8919 {
8920         /*
8921          * If this cpu is going down, then nothing needs to be done.
8922          */
8923         if (!cpu_active(cpu))
8924                 return;
8925
8926         if (test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))
8927                 return;
8928
8929         /*
8930          * If we're a completely isolated CPU, we don't play.
8931          */
8932         if (on_null_domain(cpu_rq(cpu)))
8933                 return;
8934
8935         cpumask_set_cpu(cpu, nohz.idle_cpus_mask);
8936         atomic_inc(&nohz.nr_cpus);
8937         set_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
8938 }
8939
8940 static int sched_ilb_notifier(struct notifier_block *nfb,
8941                                         unsigned long action, void *hcpu)
8942 {
8943         switch (action & ~CPU_TASKS_FROZEN) {
8944         case CPU_DYING:
8945                 nohz_balance_exit_idle(smp_processor_id());
8946                 return NOTIFY_OK;
8947         default:
8948                 return NOTIFY_DONE;
8949         }
8950 }
8951 #endif
8952
8953 static DEFINE_SPINLOCK(balancing);
8954
8955 /*
8956  * Scale the max load_balance interval with the number of CPUs in the system.
8957  * This trades load-balance latency on larger machines for less cross talk.
8958  */
8959 void update_max_interval(void)
8960 {
8961         max_load_balance_interval = HZ*num_online_cpus()/10;
8962 }
8963
8964 /*
8965  * It checks each scheduling domain to see if it is due to be balanced,
8966  * and initiates a balancing operation if so.
8967  *
8968  * Balancing parameters are set up in init_sched_domains.
8969  */
8970 static void rebalance_domains(struct rq *rq, enum cpu_idle_type idle)
8971 {
8972         int continue_balancing = 1;
8973         int cpu = rq->cpu;
8974         unsigned long interval;
8975         struct sched_domain *sd;
8976         /* Earliest time when we have to do rebalance again */
8977         unsigned long next_balance = jiffies + 60*HZ;
8978         int update_next_balance = 0;
8979         int need_serialize, need_decay = 0;
8980         u64 max_cost = 0;
8981
8982         update_blocked_averages(cpu);
8983
8984         rcu_read_lock();
8985         for_each_domain(cpu, sd) {
8986                 /*
8987                  * Decay the newidle max times here because this is a regular
8988                  * visit to all the domains. Decay ~1% per second.
8989                  */
8990                 if (time_after(jiffies, sd->next_decay_max_lb_cost)) {
8991                         sd->max_newidle_lb_cost =
8992                                 (sd->max_newidle_lb_cost * 253) / 256;
8993                         sd->next_decay_max_lb_cost = jiffies + HZ;
8994                         need_decay = 1;
8995                 }
8996                 max_cost += sd->max_newidle_lb_cost;
8997
8998                 if (!(sd->flags & SD_LOAD_BALANCE))
8999                         continue;
9000
9001                 /*
9002                  * Stop the load balance at this level. There is another
9003                  * CPU in our sched group which is doing load balancing more
9004                  * actively.
9005                  */
9006                 if (!continue_balancing) {
9007                         if (need_decay)
9008                                 continue;
9009                         break;
9010                 }
9011
9012                 interval = get_sd_balance_interval(sd, idle != CPU_IDLE);
9013
9014                 need_serialize = sd->flags & SD_SERIALIZE;
9015                 if (need_serialize) {
9016                         if (!spin_trylock(&balancing))
9017                                 goto out;
9018                 }
9019
9020                 if (time_after_eq(jiffies, sd->last_balance + interval)) {
9021                         if (load_balance(cpu, rq, sd, idle, &continue_balancing)) {
9022                                 /*
9023                                  * The LBF_DST_PINNED logic could have changed
9024                                  * env->dst_cpu, so we can't know our idle
9025                                  * state even if we migrated tasks. Update it.
9026                                  */
9027                                 idle = idle_cpu(cpu) ? CPU_IDLE : CPU_NOT_IDLE;
9028                         }
9029                         sd->last_balance = jiffies;
9030                         interval = get_sd_balance_interval(sd, idle != CPU_IDLE);
9031                 }
9032                 if (need_serialize)
9033                         spin_unlock(&balancing);
9034 out:
9035                 if (time_after(next_balance, sd->last_balance + interval)) {
9036                         next_balance = sd->last_balance + interval;
9037                         update_next_balance = 1;
9038                 }
9039         }
9040         if (need_decay) {
9041                 /*
9042                  * Ensure the rq-wide value also decays but keep it at a
9043                  * reasonable floor to avoid funnies with rq->avg_idle.
9044                  */
9045                 rq->max_idle_balance_cost =
9046                         max((u64)sysctl_sched_migration_cost, max_cost);
9047         }
9048         rcu_read_unlock();
9049
9050         /*
9051          * next_balance will be updated only when there is a need.
9052          * When the cpu is attached to null domain for ex, it will not be
9053          * updated.
9054          */
9055         if (likely(update_next_balance)) {
9056                 rq->next_balance = next_balance;
9057
9058 #ifdef CONFIG_NO_HZ_COMMON
9059                 /*
9060                  * If this CPU has been elected to perform the nohz idle
9061                  * balance. Other idle CPUs have already rebalanced with
9062                  * nohz_idle_balance() and nohz.next_balance has been
9063                  * updated accordingly. This CPU is now running the idle load
9064                  * balance for itself and we need to update the
9065                  * nohz.next_balance accordingly.
9066                  */
9067                 if ((idle == CPU_IDLE) && time_after(nohz.next_balance, rq->next_balance))
9068                         nohz.next_balance = rq->next_balance;
9069 #endif
9070         }
9071 }
9072
9073 #ifdef CONFIG_NO_HZ_COMMON
9074 /*
9075  * In CONFIG_NO_HZ_COMMON case, the idle balance kickee will do the
9076  * rebalancing for all the cpus for whom scheduler ticks are stopped.
9077  */
9078 static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
9079 {
9080         int this_cpu = this_rq->cpu;
9081         struct rq *rq;
9082         int balance_cpu;
9083         /* Earliest time when we have to do rebalance again */
9084         unsigned long next_balance = jiffies + 60*HZ;
9085         int update_next_balance = 0;
9086
9087         if (idle != CPU_IDLE ||
9088             !test_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu)))
9089                 goto end;
9090
9091         for_each_cpu(balance_cpu, nohz.idle_cpus_mask) {
9092                 if (balance_cpu == this_cpu || !idle_cpu(balance_cpu))
9093                         continue;
9094
9095                 /*
9096                  * If this cpu gets work to do, stop the load balancing
9097                  * work being done for other cpus. Next load
9098                  * balancing owner will pick it up.
9099                  */
9100                 if (need_resched())
9101                         break;
9102
9103                 rq = cpu_rq(balance_cpu);
9104
9105                 /*
9106                  * If time for next balance is due,
9107                  * do the balance.
9108                  */
9109                 if (time_after_eq(jiffies, rq->next_balance)) {
9110                         raw_spin_lock_irq(&rq->lock);
9111                         update_rq_clock(rq);
9112                         update_idle_cpu_load(rq);
9113                         raw_spin_unlock_irq(&rq->lock);
9114                         rebalance_domains(rq, CPU_IDLE);
9115                 }
9116
9117                 if (time_after(next_balance, rq->next_balance)) {
9118                         next_balance = rq->next_balance;
9119                         update_next_balance = 1;
9120                 }
9121         }
9122
9123         /*
9124          * next_balance will be updated only when there is a need.
9125          * When the CPU is attached to null domain for ex, it will not be
9126          * updated.
9127          */
9128         if (likely(update_next_balance))
9129                 nohz.next_balance = next_balance;
9130 end:
9131         clear_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu));
9132 }
9133
9134 /*
9135  * Current heuristic for kicking the idle load balancer in the presence
9136  * of an idle cpu in the system.
9137  *   - This rq has more than one task.
9138  *   - This rq has at least one CFS task and the capacity of the CPU is
9139  *     significantly reduced because of RT tasks or IRQs.
9140  *   - At parent of LLC scheduler domain level, this cpu's scheduler group has
9141  *     multiple busy cpu.
9142  *   - For SD_ASYM_PACKING, if the lower numbered cpu's in the scheduler
9143  *     domain span are idle.
9144  */
9145 static inline bool nohz_kick_needed(struct rq *rq)
9146 {
9147         unsigned long now = jiffies;
9148         struct sched_domain *sd;
9149         struct sched_group_capacity *sgc;
9150         int nr_busy, cpu = rq->cpu;
9151         bool kick = false;
9152
9153         if (unlikely(rq->idle_balance))
9154                 return false;
9155
9156        /*
9157         * We may be recently in ticked or tickless idle mode. At the first
9158         * busy tick after returning from idle, we will update the busy stats.
9159         */
9160         set_cpu_sd_state_busy();
9161         nohz_balance_exit_idle(cpu);
9162
9163         /*
9164          * None are in tickless mode and hence no need for NOHZ idle load
9165          * balancing.
9166          */
9167         if (likely(!atomic_read(&nohz.nr_cpus)))
9168                 return false;
9169
9170         if (time_before(now, nohz.next_balance))
9171                 return false;
9172
9173         if (rq->nr_running >= 2 &&
9174             (!energy_aware() || cpu_overutilized(cpu)))
9175                 return true;
9176
9177         rcu_read_lock();
9178         sd = rcu_dereference(per_cpu(sd_busy, cpu));
9179         if (sd && !energy_aware()) {
9180                 sgc = sd->groups->sgc;
9181                 nr_busy = atomic_read(&sgc->nr_busy_cpus);
9182
9183                 if (nr_busy > 1) {
9184                         kick = true;
9185                         goto unlock;
9186                 }
9187
9188         }
9189
9190         sd = rcu_dereference(rq->sd);
9191         if (sd) {
9192                 if ((rq->cfs.h_nr_running >= 1) &&
9193                                 check_cpu_capacity(rq, sd)) {
9194                         kick = true;
9195                         goto unlock;
9196                 }
9197         }
9198
9199         sd = rcu_dereference(per_cpu(sd_asym, cpu));
9200         if (sd && (cpumask_first_and(nohz.idle_cpus_mask,
9201                                   sched_domain_span(sd)) < cpu)) {
9202                 kick = true;
9203                 goto unlock;
9204         }
9205
9206 unlock:
9207         rcu_read_unlock();
9208         return kick;
9209 }
9210 #else
9211 static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
9212 #endif
9213
9214 /*
9215  * run_rebalance_domains is triggered when needed from the scheduler tick.
9216  * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
9217  */
9218 static void run_rebalance_domains(struct softirq_action *h)
9219 {
9220         struct rq *this_rq = this_rq();
9221         enum cpu_idle_type idle = this_rq->idle_balance ?
9222                                                 CPU_IDLE : CPU_NOT_IDLE;
9223
9224         /*
9225          * If this cpu has a pending nohz_balance_kick, then do the
9226          * balancing on behalf of the other idle cpus whose ticks are
9227          * stopped. Do nohz_idle_balance *before* rebalance_domains to
9228          * give the idle cpus a chance to load balance. Else we may
9229          * load balance only within the local sched_domain hierarchy
9230          * and abort nohz_idle_balance altogether if we pull some load.
9231          */
9232         nohz_idle_balance(this_rq, idle);
9233         rebalance_domains(this_rq, idle);
9234 }
9235
9236 /*
9237  * Trigger the SCHED_SOFTIRQ if it is time to do periodic load balancing.
9238  */
9239 void trigger_load_balance(struct rq *rq)
9240 {
9241         /* Don't need to rebalance while attached to NULL domain */
9242         if (unlikely(on_null_domain(rq)))
9243                 return;
9244
9245         if (time_after_eq(jiffies, rq->next_balance))
9246                 raise_softirq(SCHED_SOFTIRQ);
9247 #ifdef CONFIG_NO_HZ_COMMON
9248         if (nohz_kick_needed(rq))
9249                 nohz_balancer_kick();
9250 #endif
9251 }
9252
9253 static void rq_online_fair(struct rq *rq)
9254 {
9255         update_sysctl();
9256
9257         update_runtime_enabled(rq);
9258 }
9259
9260 static void rq_offline_fair(struct rq *rq)
9261 {
9262         update_sysctl();
9263
9264         /* Ensure any throttled groups are reachable by pick_next_task */
9265         unthrottle_offline_cfs_rqs(rq);
9266 }
9267
9268 #endif /* CONFIG_SMP */
9269
9270 /*
9271  * scheduler tick hitting a task of our scheduling class:
9272  */
9273 static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued)
9274 {
9275         struct cfs_rq *cfs_rq;
9276         struct sched_entity *se = &curr->se;
9277
9278         for_each_sched_entity(se) {
9279                 cfs_rq = cfs_rq_of(se);
9280                 entity_tick(cfs_rq, se, queued);
9281         }
9282
9283         if (static_branch_unlikely(&sched_numa_balancing))
9284                 task_tick_numa(rq, curr);
9285
9286 #ifdef CONFIG_SMP
9287         if (!rq->rd->overutilized && cpu_overutilized(task_cpu(curr))) {
9288                 rq->rd->overutilized = true;
9289                 trace_sched_overutilized(true);
9290         }
9291
9292         rq->misfit_task = !task_fits_max(curr, rq->cpu);
9293 #endif
9294
9295 }
9296
9297 /*
9298  * called on fork with the child task as argument from the parent's context
9299  *  - child not yet on the tasklist
9300  *  - preemption disabled
9301  */
9302 static void task_fork_fair(struct task_struct *p)
9303 {
9304         struct cfs_rq *cfs_rq;
9305         struct sched_entity *se = &p->se, *curr;
9306         int this_cpu = smp_processor_id();
9307         struct rq *rq = this_rq();
9308         unsigned long flags;
9309
9310         raw_spin_lock_irqsave(&rq->lock, flags);
9311
9312         update_rq_clock(rq);
9313
9314         cfs_rq = task_cfs_rq(current);
9315         curr = cfs_rq->curr;
9316
9317         /*
9318          * Not only the cpu but also the task_group of the parent might have
9319          * been changed after parent->se.parent,cfs_rq were copied to
9320          * child->se.parent,cfs_rq. So call __set_task_cpu() to make those
9321          * of child point to valid ones.
9322          */
9323         rcu_read_lock();
9324         __set_task_cpu(p, this_cpu);
9325         rcu_read_unlock();
9326
9327         update_curr(cfs_rq);
9328
9329         if (curr)
9330                 se->vruntime = curr->vruntime;
9331         place_entity(cfs_rq, se, 1);
9332
9333         if (sysctl_sched_child_runs_first && curr && entity_before(curr, se)) {
9334                 /*
9335                  * Upon rescheduling, sched_class::put_prev_task() will place
9336                  * 'current' within the tree based on its new key value.
9337                  */
9338                 swap(curr->vruntime, se->vruntime);
9339                 resched_curr(rq);
9340         }
9341
9342         se->vruntime -= cfs_rq->min_vruntime;
9343
9344         raw_spin_unlock_irqrestore(&rq->lock, flags);
9345 }
9346
9347 /*
9348  * Priority of the task has changed. Check to see if we preempt
9349  * the current task.
9350  */
9351 static void
9352 prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio)
9353 {
9354         if (!task_on_rq_queued(p))
9355                 return;
9356
9357         /*
9358          * Reschedule if we are currently running on this runqueue and
9359          * our priority decreased, or if we are not currently running on
9360          * this runqueue and our priority is higher than the current's
9361          */
9362         if (rq->curr == p) {
9363                 if (p->prio > oldprio)
9364                         resched_curr(rq);
9365         } else
9366                 check_preempt_curr(rq, p, 0);
9367 }
9368
9369 static inline bool vruntime_normalized(struct task_struct *p)
9370 {
9371         struct sched_entity *se = &p->se;
9372
9373         /*
9374          * In both the TASK_ON_RQ_QUEUED and TASK_ON_RQ_MIGRATING cases,
9375          * the dequeue_entity(.flags=0) will already have normalized the
9376          * vruntime.
9377          */
9378         if (p->on_rq)
9379                 return true;
9380
9381         /*
9382          * When !on_rq, vruntime of the task has usually NOT been normalized.
9383          * But there are some cases where it has already been normalized:
9384          *
9385          * - A forked child which is waiting for being woken up by
9386          *   wake_up_new_task().
9387          * - A task which has been woken up by try_to_wake_up() and
9388          *   waiting for actually being woken up by sched_ttwu_pending().
9389          */
9390         if (!se->sum_exec_runtime || p->state == TASK_WAKING)
9391                 return true;
9392
9393         return false;
9394 }
9395
9396 static void detach_task_cfs_rq(struct task_struct *p)
9397 {
9398         struct sched_entity *se = &p->se;
9399         struct cfs_rq *cfs_rq = cfs_rq_of(se);
9400         u64 now = cfs_rq_clock_task(cfs_rq);
9401
9402         if (!vruntime_normalized(p)) {
9403                 /*
9404                  * Fix up our vruntime so that the current sleep doesn't
9405                  * cause 'unlimited' sleep bonus.
9406                  */
9407                 place_entity(cfs_rq, se, 0);
9408                 se->vruntime -= cfs_rq->min_vruntime;
9409         }
9410
9411         /* Catch up with the cfs_rq and remove our load when we leave */
9412         update_cfs_rq_load_avg(now, cfs_rq, false);
9413         detach_entity_load_avg(cfs_rq, se);
9414         update_tg_load_avg(cfs_rq, false);
9415 }
9416
9417 static void attach_task_cfs_rq(struct task_struct *p)
9418 {
9419         struct sched_entity *se = &p->se;
9420         struct cfs_rq *cfs_rq = cfs_rq_of(se);
9421         u64 now = cfs_rq_clock_task(cfs_rq);
9422
9423 #ifdef CONFIG_FAIR_GROUP_SCHED
9424         /*
9425          * Since the real-depth could have been changed (only FAIR
9426          * class maintain depth value), reset depth properly.
9427          */
9428         se->depth = se->parent ? se->parent->depth + 1 : 0;
9429 #endif
9430
9431         /* Synchronize task with its cfs_rq */
9432         update_cfs_rq_load_avg(now, cfs_rq, false);
9433         attach_entity_load_avg(cfs_rq, se);
9434         update_tg_load_avg(cfs_rq, false);
9435
9436         if (!vruntime_normalized(p))
9437                 se->vruntime += cfs_rq->min_vruntime;
9438 }
9439
9440 static void switched_from_fair(struct rq *rq, struct task_struct *p)
9441 {
9442         detach_task_cfs_rq(p);
9443 }
9444
9445 static void switched_to_fair(struct rq *rq, struct task_struct *p)
9446 {
9447         attach_task_cfs_rq(p);
9448
9449         if (task_on_rq_queued(p)) {
9450                 /*
9451                  * We were most likely switched from sched_rt, so
9452                  * kick off the schedule if running, otherwise just see
9453                  * if we can still preempt the current task.
9454                  */
9455                 if (rq->curr == p)
9456                         resched_curr(rq);
9457                 else
9458                         check_preempt_curr(rq, p, 0);
9459         }
9460 }
9461
9462 /* Account for a task changing its policy or group.
9463  *
9464  * This routine is mostly called to set cfs_rq->curr field when a task
9465  * migrates between groups/classes.
9466  */
9467 static void set_curr_task_fair(struct rq *rq)
9468 {
9469         struct sched_entity *se = &rq->curr->se;
9470
9471         for_each_sched_entity(se) {
9472                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
9473
9474                 set_next_entity(cfs_rq, se);
9475                 /* ensure bandwidth has been allocated on our new cfs_rq */
9476                 account_cfs_rq_runtime(cfs_rq, 0);
9477         }
9478 }
9479
9480 void init_cfs_rq(struct cfs_rq *cfs_rq)
9481 {
9482         cfs_rq->tasks_timeline = RB_ROOT;
9483         cfs_rq->min_vruntime = (u64)(-(1LL << 20));
9484 #ifndef CONFIG_64BIT
9485         cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime;
9486 #endif
9487 #ifdef CONFIG_SMP
9488         atomic_long_set(&cfs_rq->removed_load_avg, 0);
9489         atomic_long_set(&cfs_rq->removed_util_avg, 0);
9490 #endif
9491 }
9492
9493 #ifdef CONFIG_FAIR_GROUP_SCHED
9494 static void task_move_group_fair(struct task_struct *p)
9495 {
9496         detach_task_cfs_rq(p);
9497         set_task_rq(p, task_cpu(p));
9498
9499 #ifdef CONFIG_SMP
9500         /* Tell se's cfs_rq has been changed -- migrated */
9501         p->se.avg.last_update_time = 0;
9502 #endif
9503         attach_task_cfs_rq(p);
9504 }
9505
9506 void free_fair_sched_group(struct task_group *tg)
9507 {
9508         int i;
9509
9510         destroy_cfs_bandwidth(tg_cfs_bandwidth(tg));
9511
9512         for_each_possible_cpu(i) {
9513                 if (tg->cfs_rq)
9514                         kfree(tg->cfs_rq[i]);
9515                 if (tg->se) {
9516                         if (tg->se[i])
9517                                 remove_entity_load_avg(tg->se[i]);
9518                         kfree(tg->se[i]);
9519                 }
9520         }
9521
9522         kfree(tg->cfs_rq);
9523         kfree(tg->se);
9524 }
9525
9526 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
9527 {
9528         struct sched_entity *se;
9529         struct cfs_rq *cfs_rq;
9530         struct rq *rq;
9531         int i;
9532
9533         tg->cfs_rq = kzalloc(sizeof(cfs_rq) * nr_cpu_ids, GFP_KERNEL);
9534         if (!tg->cfs_rq)
9535                 goto err;
9536         tg->se = kzalloc(sizeof(se) * nr_cpu_ids, GFP_KERNEL);
9537         if (!tg->se)
9538                 goto err;
9539
9540         tg->shares = NICE_0_LOAD;
9541
9542         init_cfs_bandwidth(tg_cfs_bandwidth(tg));
9543
9544         for_each_possible_cpu(i) {
9545                 rq = cpu_rq(i);
9546
9547                 cfs_rq = kzalloc_node(sizeof(struct cfs_rq),
9548                                       GFP_KERNEL, cpu_to_node(i));
9549                 if (!cfs_rq)
9550                         goto err;
9551
9552                 se = kzalloc_node(sizeof(struct sched_entity),
9553                                   GFP_KERNEL, cpu_to_node(i));
9554                 if (!se)
9555                         goto err_free_rq;
9556
9557                 init_cfs_rq(cfs_rq);
9558                 init_tg_cfs_entry(tg, cfs_rq, se, i, parent->se[i]);
9559                 init_entity_runnable_average(se);
9560
9561                 raw_spin_lock_irq(&rq->lock);
9562                 post_init_entity_util_avg(se);
9563                 raw_spin_unlock_irq(&rq->lock);
9564         }
9565
9566         return 1;
9567
9568 err_free_rq:
9569         kfree(cfs_rq);
9570 err:
9571         return 0;
9572 }
9573
9574 void unregister_fair_sched_group(struct task_group *tg, int cpu)
9575 {
9576         struct rq *rq = cpu_rq(cpu);
9577         unsigned long flags;
9578
9579         /*
9580         * Only empty task groups can be destroyed; so we can speculatively
9581         * check on_list without danger of it being re-added.
9582         */
9583         if (!tg->cfs_rq[cpu]->on_list)
9584                 return;
9585
9586         raw_spin_lock_irqsave(&rq->lock, flags);
9587         list_del_leaf_cfs_rq(tg->cfs_rq[cpu]);
9588         raw_spin_unlock_irqrestore(&rq->lock, flags);
9589 }
9590
9591 void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
9592                         struct sched_entity *se, int cpu,
9593                         struct sched_entity *parent)
9594 {
9595         struct rq *rq = cpu_rq(cpu);
9596
9597         cfs_rq->tg = tg;
9598         cfs_rq->rq = rq;
9599         init_cfs_rq_runtime(cfs_rq);
9600
9601         tg->cfs_rq[cpu] = cfs_rq;
9602         tg->se[cpu] = se;
9603
9604         /* se could be NULL for root_task_group */
9605         if (!se)
9606                 return;
9607
9608         if (!parent) {
9609                 se->cfs_rq = &rq->cfs;
9610                 se->depth = 0;
9611         } else {
9612                 se->cfs_rq = parent->my_q;
9613                 se->depth = parent->depth + 1;
9614         }
9615
9616         se->my_q = cfs_rq;
9617         /* guarantee group entities always have weight */
9618         update_load_set(&se->load, NICE_0_LOAD);
9619         se->parent = parent;
9620 }
9621
9622 static DEFINE_MUTEX(shares_mutex);
9623
9624 int sched_group_set_shares(struct task_group *tg, unsigned long shares)
9625 {
9626         int i;
9627         unsigned long flags;
9628
9629         /*
9630          * We can't change the weight of the root cgroup.
9631          */
9632         if (!tg->se[0])
9633                 return -EINVAL;
9634
9635         shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES));
9636
9637         mutex_lock(&shares_mutex);
9638         if (tg->shares == shares)
9639                 goto done;
9640
9641         tg->shares = shares;
9642         for_each_possible_cpu(i) {
9643                 struct rq *rq = cpu_rq(i);
9644                 struct sched_entity *se;
9645
9646                 se = tg->se[i];
9647                 /* Propagate contribution to hierarchy */
9648                 raw_spin_lock_irqsave(&rq->lock, flags);
9649
9650                 /* Possible calls to update_curr() need rq clock */
9651                 update_rq_clock(rq);
9652                 for_each_sched_entity(se)
9653                         update_cfs_shares(group_cfs_rq(se));
9654                 raw_spin_unlock_irqrestore(&rq->lock, flags);
9655         }
9656
9657 done:
9658         mutex_unlock(&shares_mutex);
9659         return 0;
9660 }
9661 #else /* CONFIG_FAIR_GROUP_SCHED */
9662
9663 void free_fair_sched_group(struct task_group *tg) { }
9664
9665 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
9666 {
9667         return 1;
9668 }
9669
9670 void unregister_fair_sched_group(struct task_group *tg, int cpu) { }
9671
9672 #endif /* CONFIG_FAIR_GROUP_SCHED */
9673
9674
9675 static unsigned int get_rr_interval_fair(struct rq *rq, struct task_struct *task)
9676 {
9677         struct sched_entity *se = &task->se;
9678         unsigned int rr_interval = 0;
9679
9680         /*
9681          * Time slice is 0 for SCHED_OTHER tasks that are on an otherwise
9682          * idle runqueue:
9683          */
9684         if (rq->cfs.load.weight)
9685                 rr_interval = NS_TO_JIFFIES(sched_slice(cfs_rq_of(se), se));
9686
9687         return rr_interval;
9688 }
9689
9690 /*
9691  * All the scheduling class methods:
9692  */
9693 const struct sched_class fair_sched_class = {
9694         .next                   = &idle_sched_class,
9695         .enqueue_task           = enqueue_task_fair,
9696         .dequeue_task           = dequeue_task_fair,
9697         .yield_task             = yield_task_fair,
9698         .yield_to_task          = yield_to_task_fair,
9699
9700         .check_preempt_curr     = check_preempt_wakeup,
9701
9702         .pick_next_task         = pick_next_task_fair,
9703         .put_prev_task          = put_prev_task_fair,
9704
9705 #ifdef CONFIG_SMP
9706         .select_task_rq         = select_task_rq_fair,
9707         .migrate_task_rq        = migrate_task_rq_fair,
9708
9709         .rq_online              = rq_online_fair,
9710         .rq_offline             = rq_offline_fair,
9711
9712         .task_waking            = task_waking_fair,
9713         .task_dead              = task_dead_fair,
9714         .set_cpus_allowed       = set_cpus_allowed_common,
9715 #endif
9716
9717         .set_curr_task          = set_curr_task_fair,
9718         .task_tick              = task_tick_fair,
9719         .task_fork              = task_fork_fair,
9720
9721         .prio_changed           = prio_changed_fair,
9722         .switched_from          = switched_from_fair,
9723         .switched_to            = switched_to_fair,
9724
9725         .get_rr_interval        = get_rr_interval_fair,
9726
9727         .update_curr            = update_curr_fair,
9728
9729 #ifdef CONFIG_FAIR_GROUP_SCHED
9730         .task_move_group        = task_move_group_fair,
9731 #endif
9732 };
9733
9734 #ifdef CONFIG_SCHED_DEBUG
9735 void print_cfs_stats(struct seq_file *m, int cpu)
9736 {
9737         struct cfs_rq *cfs_rq;
9738
9739         rcu_read_lock();
9740         for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq)
9741                 print_cfs_rq(m, cpu, cfs_rq);
9742         rcu_read_unlock();
9743 }
9744
9745 #ifdef CONFIG_NUMA_BALANCING
9746 void show_numa_stats(struct task_struct *p, struct seq_file *m)
9747 {
9748         int node;
9749         unsigned long tsf = 0, tpf = 0, gsf = 0, gpf = 0;
9750
9751         for_each_online_node(node) {
9752                 if (p->numa_faults) {
9753                         tsf = p->numa_faults[task_faults_idx(NUMA_MEM, node, 0)];
9754                         tpf = p->numa_faults[task_faults_idx(NUMA_MEM, node, 1)];
9755                 }
9756                 if (p->numa_group) {
9757                         gsf = p->numa_group->faults[task_faults_idx(NUMA_MEM, node, 0)],
9758                         gpf = p->numa_group->faults[task_faults_idx(NUMA_MEM, node, 1)];
9759                 }
9760                 print_numa_stats(m, node, tsf, tpf, gsf, gpf);
9761         }
9762 }
9763 #endif /* CONFIG_NUMA_BALANCING */
9764 #endif /* CONFIG_SCHED_DEBUG */
9765
9766 __init void init_sched_fair_class(void)
9767 {
9768 #ifdef CONFIG_SMP
9769         open_softirq(SCHED_SOFTIRQ, run_rebalance_domains);
9770
9771 #ifdef CONFIG_NO_HZ_COMMON
9772         nohz.next_balance = jiffies;
9773         zalloc_cpumask_var(&nohz.idle_cpus_mask, GFP_NOWAIT);
9774         cpu_notifier(sched_ilb_notifier, 0);
9775 #endif
9776 #endif /* SMP */
9777
9778 }