sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0
[platform/kernel/linux-starfive.git] / kernel / sched / fair.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Completely Fair Scheduling (CFS) Class (SCHED_NORMAL/SCHED_BATCH)
4  *
5  *  Copyright (C) 2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
6  *
7  *  Interactivity improvements by Mike Galbraith
8  *  (C) 2007 Mike Galbraith <efault@gmx.de>
9  *
10  *  Various enhancements by Dmitry Adamushko.
11  *  (C) 2007 Dmitry Adamushko <dmitry.adamushko@gmail.com>
12  *
13  *  Group scheduling enhancements by Srivatsa Vaddagiri
14  *  Copyright IBM Corporation, 2007
15  *  Author: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
16  *
17  *  Scaled math optimizations by Thomas Gleixner
18  *  Copyright (C) 2007, Thomas Gleixner <tglx@linutronix.de>
19  *
20  *  Adaptive scheduling granularity, math enhancements by Peter Zijlstra
21  *  Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
22  */
23 #include <linux/energy_model.h>
24 #include <linux/mmap_lock.h>
25 #include <linux/hugetlb_inline.h>
26 #include <linux/jiffies.h>
27 #include <linux/mm_api.h>
28 #include <linux/highmem.h>
29 #include <linux/spinlock_api.h>
30 #include <linux/cpumask_api.h>
31 #include <linux/lockdep_api.h>
32 #include <linux/softirq.h>
33 #include <linux/refcount_api.h>
34 #include <linux/topology.h>
35 #include <linux/sched/clock.h>
36 #include <linux/sched/cond_resched.h>
37 #include <linux/sched/cputime.h>
38 #include <linux/sched/isolation.h>
39 #include <linux/sched/nohz.h>
40
41 #include <linux/cpuidle.h>
42 #include <linux/interrupt.h>
43 #include <linux/memory-tiers.h>
44 #include <linux/mempolicy.h>
45 #include <linux/mutex_api.h>
46 #include <linux/profile.h>
47 #include <linux/psi.h>
48 #include <linux/ratelimit.h>
49 #include <linux/task_work.h>
50 #include <linux/rbtree_augmented.h>
51
52 #include <asm/switch_to.h>
53
54 #include <linux/sched/cond_resched.h>
55
56 #include "sched.h"
57 #include "stats.h"
58 #include "autogroup.h"
59
60 /*
61  * The initial- and re-scaling of tunables is configurable
62  *
63  * Options are:
64  *
65  *   SCHED_TUNABLESCALING_NONE - unscaled, always *1
66  *   SCHED_TUNABLESCALING_LOG - scaled logarithmical, *1+ilog(ncpus)
67  *   SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus
68  *
69  * (default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus))
70  */
71 unsigned int sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_LOG;
72
73 /*
74  * Minimal preemption granularity for CPU-bound tasks:
75  *
76  * (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
77  */
78 unsigned int sysctl_sched_base_slice                    = 750000ULL;
79 static unsigned int normalized_sysctl_sched_base_slice  = 750000ULL;
80
81 /*
82  * After fork, child runs first. If set to 0 (default) then
83  * parent will (try to) run first.
84  */
85 unsigned int sysctl_sched_child_runs_first __read_mostly;
86
87 const_debug unsigned int sysctl_sched_migration_cost    = 500000UL;
88
89 int sched_thermal_decay_shift;
90 static int __init setup_sched_thermal_decay_shift(char *str)
91 {
92         int _shift = 0;
93
94         if (kstrtoint(str, 0, &_shift))
95                 pr_warn("Unable to set scheduler thermal pressure decay shift parameter\n");
96
97         sched_thermal_decay_shift = clamp(_shift, 0, 10);
98         return 1;
99 }
100 __setup("sched_thermal_decay_shift=", setup_sched_thermal_decay_shift);
101
102 #ifdef CONFIG_SMP
103 /*
104  * For asym packing, by default the lower numbered CPU has higher priority.
105  */
106 int __weak arch_asym_cpu_priority(int cpu)
107 {
108         return -cpu;
109 }
110
111 /*
112  * The margin used when comparing utilization with CPU capacity.
113  *
114  * (default: ~20%)
115  */
116 #define fits_capacity(cap, max) ((cap) * 1280 < (max) * 1024)
117
118 /*
119  * The margin used when comparing CPU capacities.
120  * is 'cap1' noticeably greater than 'cap2'
121  *
122  * (default: ~5%)
123  */
124 #define capacity_greater(cap1, cap2) ((cap1) * 1024 > (cap2) * 1078)
125 #endif
126
127 #ifdef CONFIG_CFS_BANDWIDTH
128 /*
129  * Amount of runtime to allocate from global (tg) to local (per-cfs_rq) pool
130  * each time a cfs_rq requests quota.
131  *
132  * Note: in the case that the slice exceeds the runtime remaining (either due
133  * to consumption or the quota being specified to be smaller than the slice)
134  * we will always only issue the remaining available time.
135  *
136  * (default: 5 msec, units: microseconds)
137  */
138 static unsigned int sysctl_sched_cfs_bandwidth_slice            = 5000UL;
139 #endif
140
141 #ifdef CONFIG_NUMA_BALANCING
142 /* Restrict the NUMA promotion throughput (MB/s) for each target node. */
143 static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536;
144 #endif
145
146 #ifdef CONFIG_SYSCTL
147 static struct ctl_table sched_fair_sysctls[] = {
148         {
149                 .procname       = "sched_child_runs_first",
150                 .data           = &sysctl_sched_child_runs_first,
151                 .maxlen         = sizeof(unsigned int),
152                 .mode           = 0644,
153                 .proc_handler   = proc_dointvec,
154         },
155 #ifdef CONFIG_CFS_BANDWIDTH
156         {
157                 .procname       = "sched_cfs_bandwidth_slice_us",
158                 .data           = &sysctl_sched_cfs_bandwidth_slice,
159                 .maxlen         = sizeof(unsigned int),
160                 .mode           = 0644,
161                 .proc_handler   = proc_dointvec_minmax,
162                 .extra1         = SYSCTL_ONE,
163         },
164 #endif
165 #ifdef CONFIG_NUMA_BALANCING
166         {
167                 .procname       = "numa_balancing_promote_rate_limit_MBps",
168                 .data           = &sysctl_numa_balancing_promote_rate_limit,
169                 .maxlen         = sizeof(unsigned int),
170                 .mode           = 0644,
171                 .proc_handler   = proc_dointvec_minmax,
172                 .extra1         = SYSCTL_ZERO,
173         },
174 #endif /* CONFIG_NUMA_BALANCING */
175         {}
176 };
177
178 static int __init sched_fair_sysctl_init(void)
179 {
180         register_sysctl_init("kernel", sched_fair_sysctls);
181         return 0;
182 }
183 late_initcall(sched_fair_sysctl_init);
184 #endif
185
186 static inline void update_load_add(struct load_weight *lw, unsigned long inc)
187 {
188         lw->weight += inc;
189         lw->inv_weight = 0;
190 }
191
192 static inline void update_load_sub(struct load_weight *lw, unsigned long dec)
193 {
194         lw->weight -= dec;
195         lw->inv_weight = 0;
196 }
197
198 static inline void update_load_set(struct load_weight *lw, unsigned long w)
199 {
200         lw->weight = w;
201         lw->inv_weight = 0;
202 }
203
204 /*
205  * Increase the granularity value when there are more CPUs,
206  * because with more CPUs the 'effective latency' as visible
207  * to users decreases. But the relationship is not linear,
208  * so pick a second-best guess by going with the log2 of the
209  * number of CPUs.
210  *
211  * This idea comes from the SD scheduler of Con Kolivas:
212  */
213 static unsigned int get_update_sysctl_factor(void)
214 {
215         unsigned int cpus = min_t(unsigned int, num_online_cpus(), 8);
216         unsigned int factor;
217
218         switch (sysctl_sched_tunable_scaling) {
219         case SCHED_TUNABLESCALING_NONE:
220                 factor = 1;
221                 break;
222         case SCHED_TUNABLESCALING_LINEAR:
223                 factor = cpus;
224                 break;
225         case SCHED_TUNABLESCALING_LOG:
226         default:
227                 factor = 1 + ilog2(cpus);
228                 break;
229         }
230
231         return factor;
232 }
233
234 static void update_sysctl(void)
235 {
236         unsigned int factor = get_update_sysctl_factor();
237
238 #define SET_SYSCTL(name) \
239         (sysctl_##name = (factor) * normalized_sysctl_##name)
240         SET_SYSCTL(sched_base_slice);
241 #undef SET_SYSCTL
242 }
243
244 void __init sched_init_granularity(void)
245 {
246         update_sysctl();
247 }
248
249 #define WMULT_CONST     (~0U)
250 #define WMULT_SHIFT     32
251
252 static void __update_inv_weight(struct load_weight *lw)
253 {
254         unsigned long w;
255
256         if (likely(lw->inv_weight))
257                 return;
258
259         w = scale_load_down(lw->weight);
260
261         if (BITS_PER_LONG > 32 && unlikely(w >= WMULT_CONST))
262                 lw->inv_weight = 1;
263         else if (unlikely(!w))
264                 lw->inv_weight = WMULT_CONST;
265         else
266                 lw->inv_weight = WMULT_CONST / w;
267 }
268
269 /*
270  * delta_exec * weight / lw.weight
271  *   OR
272  * (delta_exec * (weight * lw->inv_weight)) >> WMULT_SHIFT
273  *
274  * Either weight := NICE_0_LOAD and lw \e sched_prio_to_wmult[], in which case
275  * we're guaranteed shift stays positive because inv_weight is guaranteed to
276  * fit 32 bits, and NICE_0_LOAD gives another 10 bits; therefore shift >= 22.
277  *
278  * Or, weight =< lw.weight (because lw.weight is the runqueue weight), thus
279  * weight/lw.weight <= 1, and therefore our shift will also be positive.
280  */
281 static u64 __calc_delta(u64 delta_exec, unsigned long weight, struct load_weight *lw)
282 {
283         u64 fact = scale_load_down(weight);
284         u32 fact_hi = (u32)(fact >> 32);
285         int shift = WMULT_SHIFT;
286         int fs;
287
288         __update_inv_weight(lw);
289
290         if (unlikely(fact_hi)) {
291                 fs = fls(fact_hi);
292                 shift -= fs;
293                 fact >>= fs;
294         }
295
296         fact = mul_u32_u32(fact, lw->inv_weight);
297
298         fact_hi = (u32)(fact >> 32);
299         if (fact_hi) {
300                 fs = fls(fact_hi);
301                 shift -= fs;
302                 fact >>= fs;
303         }
304
305         return mul_u64_u32_shr(delta_exec, fact, shift);
306 }
307
308 /*
309  * delta /= w
310  */
311 static inline u64 calc_delta_fair(u64 delta, struct sched_entity *se)
312 {
313         if (unlikely(se->load.weight != NICE_0_LOAD))
314                 delta = __calc_delta(delta, NICE_0_LOAD, &se->load);
315
316         return delta;
317 }
318
319 const struct sched_class fair_sched_class;
320
321 /**************************************************************
322  * CFS operations on generic schedulable entities:
323  */
324
325 #ifdef CONFIG_FAIR_GROUP_SCHED
326
327 /* Walk up scheduling entities hierarchy */
328 #define for_each_sched_entity(se) \
329                 for (; se; se = se->parent)
330
331 static inline bool list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
332 {
333         struct rq *rq = rq_of(cfs_rq);
334         int cpu = cpu_of(rq);
335
336         if (cfs_rq->on_list)
337                 return rq->tmp_alone_branch == &rq->leaf_cfs_rq_list;
338
339         cfs_rq->on_list = 1;
340
341         /*
342          * Ensure we either appear before our parent (if already
343          * enqueued) or force our parent to appear after us when it is
344          * enqueued. The fact that we always enqueue bottom-up
345          * reduces this to two cases and a special case for the root
346          * cfs_rq. Furthermore, it also means that we will always reset
347          * tmp_alone_branch either when the branch is connected
348          * to a tree or when we reach the top of the tree
349          */
350         if (cfs_rq->tg->parent &&
351             cfs_rq->tg->parent->cfs_rq[cpu]->on_list) {
352                 /*
353                  * If parent is already on the list, we add the child
354                  * just before. Thanks to circular linked property of
355                  * the list, this means to put the child at the tail
356                  * of the list that starts by parent.
357                  */
358                 list_add_tail_rcu(&cfs_rq->leaf_cfs_rq_list,
359                         &(cfs_rq->tg->parent->cfs_rq[cpu]->leaf_cfs_rq_list));
360                 /*
361                  * The branch is now connected to its tree so we can
362                  * reset tmp_alone_branch to the beginning of the
363                  * list.
364                  */
365                 rq->tmp_alone_branch = &rq->leaf_cfs_rq_list;
366                 return true;
367         }
368
369         if (!cfs_rq->tg->parent) {
370                 /*
371                  * cfs rq without parent should be put
372                  * at the tail of the list.
373                  */
374                 list_add_tail_rcu(&cfs_rq->leaf_cfs_rq_list,
375                         &rq->leaf_cfs_rq_list);
376                 /*
377                  * We have reach the top of a tree so we can reset
378                  * tmp_alone_branch to the beginning of the list.
379                  */
380                 rq->tmp_alone_branch = &rq->leaf_cfs_rq_list;
381                 return true;
382         }
383
384         /*
385          * The parent has not already been added so we want to
386          * make sure that it will be put after us.
387          * tmp_alone_branch points to the begin of the branch
388          * where we will add parent.
389          */
390         list_add_rcu(&cfs_rq->leaf_cfs_rq_list, rq->tmp_alone_branch);
391         /*
392          * update tmp_alone_branch to points to the new begin
393          * of the branch
394          */
395         rq->tmp_alone_branch = &cfs_rq->leaf_cfs_rq_list;
396         return false;
397 }
398
399 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
400 {
401         if (cfs_rq->on_list) {
402                 struct rq *rq = rq_of(cfs_rq);
403
404                 /*
405                  * With cfs_rq being unthrottled/throttled during an enqueue,
406                  * it can happen the tmp_alone_branch points the a leaf that
407                  * we finally want to del. In this case, tmp_alone_branch moves
408                  * to the prev element but it will point to rq->leaf_cfs_rq_list
409                  * at the end of the enqueue.
410                  */
411                 if (rq->tmp_alone_branch == &cfs_rq->leaf_cfs_rq_list)
412                         rq->tmp_alone_branch = cfs_rq->leaf_cfs_rq_list.prev;
413
414                 list_del_rcu(&cfs_rq->leaf_cfs_rq_list);
415                 cfs_rq->on_list = 0;
416         }
417 }
418
419 static inline void assert_list_leaf_cfs_rq(struct rq *rq)
420 {
421         SCHED_WARN_ON(rq->tmp_alone_branch != &rq->leaf_cfs_rq_list);
422 }
423
424 /* Iterate thr' all leaf cfs_rq's on a runqueue */
425 #define for_each_leaf_cfs_rq_safe(rq, cfs_rq, pos)                      \
426         list_for_each_entry_safe(cfs_rq, pos, &rq->leaf_cfs_rq_list,    \
427                                  leaf_cfs_rq_list)
428
429 /* Do the two (enqueued) entities belong to the same group ? */
430 static inline struct cfs_rq *
431 is_same_group(struct sched_entity *se, struct sched_entity *pse)
432 {
433         if (se->cfs_rq == pse->cfs_rq)
434                 return se->cfs_rq;
435
436         return NULL;
437 }
438
439 static inline struct sched_entity *parent_entity(const struct sched_entity *se)
440 {
441         return se->parent;
442 }
443
444 static void
445 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
446 {
447         int se_depth, pse_depth;
448
449         /*
450          * preemption test can be made between sibling entities who are in the
451          * same cfs_rq i.e who have a common parent. Walk up the hierarchy of
452          * both tasks until we find their ancestors who are siblings of common
453          * parent.
454          */
455
456         /* First walk up until both entities are at same depth */
457         se_depth = (*se)->depth;
458         pse_depth = (*pse)->depth;
459
460         while (se_depth > pse_depth) {
461                 se_depth--;
462                 *se = parent_entity(*se);
463         }
464
465         while (pse_depth > se_depth) {
466                 pse_depth--;
467                 *pse = parent_entity(*pse);
468         }
469
470         while (!is_same_group(*se, *pse)) {
471                 *se = parent_entity(*se);
472                 *pse = parent_entity(*pse);
473         }
474 }
475
476 static int tg_is_idle(struct task_group *tg)
477 {
478         return tg->idle > 0;
479 }
480
481 static int cfs_rq_is_idle(struct cfs_rq *cfs_rq)
482 {
483         return cfs_rq->idle > 0;
484 }
485
486 static int se_is_idle(struct sched_entity *se)
487 {
488         if (entity_is_task(se))
489                 return task_has_idle_policy(task_of(se));
490         return cfs_rq_is_idle(group_cfs_rq(se));
491 }
492
493 #else   /* !CONFIG_FAIR_GROUP_SCHED */
494
495 #define for_each_sched_entity(se) \
496                 for (; se; se = NULL)
497
498 static inline bool list_add_leaf_cfs_rq(struct cfs_rq *cfs_rq)
499 {
500         return true;
501 }
502
503 static inline void list_del_leaf_cfs_rq(struct cfs_rq *cfs_rq)
504 {
505 }
506
507 static inline void assert_list_leaf_cfs_rq(struct rq *rq)
508 {
509 }
510
511 #define for_each_leaf_cfs_rq_safe(rq, cfs_rq, pos)      \
512                 for (cfs_rq = &rq->cfs, pos = NULL; cfs_rq; cfs_rq = pos)
513
514 static inline struct sched_entity *parent_entity(struct sched_entity *se)
515 {
516         return NULL;
517 }
518
519 static inline void
520 find_matching_se(struct sched_entity **se, struct sched_entity **pse)
521 {
522 }
523
524 static inline int tg_is_idle(struct task_group *tg)
525 {
526         return 0;
527 }
528
529 static int cfs_rq_is_idle(struct cfs_rq *cfs_rq)
530 {
531         return 0;
532 }
533
534 static int se_is_idle(struct sched_entity *se)
535 {
536         return 0;
537 }
538
539 #endif  /* CONFIG_FAIR_GROUP_SCHED */
540
541 static __always_inline
542 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec);
543
544 /**************************************************************
545  * Scheduling class tree data structure manipulation methods:
546  */
547
548 static inline u64 max_vruntime(u64 max_vruntime, u64 vruntime)
549 {
550         s64 delta = (s64)(vruntime - max_vruntime);
551         if (delta > 0)
552                 max_vruntime = vruntime;
553
554         return max_vruntime;
555 }
556
557 static inline u64 min_vruntime(u64 min_vruntime, u64 vruntime)
558 {
559         s64 delta = (s64)(vruntime - min_vruntime);
560         if (delta < 0)
561                 min_vruntime = vruntime;
562
563         return min_vruntime;
564 }
565
566 static inline bool entity_before(const struct sched_entity *a,
567                                  const struct sched_entity *b)
568 {
569         return (s64)(a->vruntime - b->vruntime) < 0;
570 }
571
572 static inline s64 entity_key(struct cfs_rq *cfs_rq, struct sched_entity *se)
573 {
574         return (s64)(se->vruntime - cfs_rq->min_vruntime);
575 }
576
577 #define __node_2_se(node) \
578         rb_entry((node), struct sched_entity, run_node)
579
580 /*
581  * Compute virtual time from the per-task service numbers:
582  *
583  * Fair schedulers conserve lag:
584  *
585  *   \Sum lag_i = 0
586  *
587  * Where lag_i is given by:
588  *
589  *   lag_i = S - s_i = w_i * (V - v_i)
590  *
591  * Where S is the ideal service time and V is it's virtual time counterpart.
592  * Therefore:
593  *
594  *   \Sum lag_i = 0
595  *   \Sum w_i * (V - v_i) = 0
596  *   \Sum w_i * V - w_i * v_i = 0
597  *
598  * From which we can solve an expression for V in v_i (which we have in
599  * se->vruntime):
600  *
601  *       \Sum v_i * w_i   \Sum v_i * w_i
602  *   V = -------------- = --------------
603  *          \Sum w_i            W
604  *
605  * Specifically, this is the weighted average of all entity virtual runtimes.
606  *
607  * [[ NOTE: this is only equal to the ideal scheduler under the condition
608  *          that join/leave operations happen at lag_i = 0, otherwise the
609  *          virtual time has non-continguous motion equivalent to:
610  *
611  *            V +-= lag_i / W
612  *
613  *          Also see the comment in place_entity() that deals with this. ]]
614  *
615  * However, since v_i is u64, and the multiplcation could easily overflow
616  * transform it into a relative form that uses smaller quantities:
617  *
618  * Substitute: v_i == (v_i - v0) + v0
619  *
620  *     \Sum ((v_i - v0) + v0) * w_i   \Sum (v_i - v0) * w_i
621  * V = ---------------------------- = --------------------- + v0
622  *                  W                            W
623  *
624  * Which we track using:
625  *
626  *                    v0 := cfs_rq->min_vruntime
627  * \Sum (v_i - v0) * w_i := cfs_rq->avg_vruntime
628  *              \Sum w_i := cfs_rq->avg_load
629  *
630  * Since min_vruntime is a monotonic increasing variable that closely tracks
631  * the per-task service, these deltas: (v_i - v), will be in the order of the
632  * maximal (virtual) lag induced in the system due to quantisation.
633  *
634  * Also, we use scale_load_down() to reduce the size.
635  *
636  * As measured, the max (key * weight) value was ~44 bits for a kernel build.
637  */
638 static void
639 avg_vruntime_add(struct cfs_rq *cfs_rq, struct sched_entity *se)
640 {
641         unsigned long weight = scale_load_down(se->load.weight);
642         s64 key = entity_key(cfs_rq, se);
643
644         cfs_rq->avg_vruntime += key * weight;
645         cfs_rq->avg_load += weight;
646 }
647
648 static void
649 avg_vruntime_sub(struct cfs_rq *cfs_rq, struct sched_entity *se)
650 {
651         unsigned long weight = scale_load_down(se->load.weight);
652         s64 key = entity_key(cfs_rq, se);
653
654         cfs_rq->avg_vruntime -= key * weight;
655         cfs_rq->avg_load -= weight;
656 }
657
658 static inline
659 void avg_vruntime_update(struct cfs_rq *cfs_rq, s64 delta)
660 {
661         /*
662          * v' = v + d ==> avg_vruntime' = avg_runtime - d*avg_load
663          */
664         cfs_rq->avg_vruntime -= cfs_rq->avg_load * delta;
665 }
666
667 /*
668  * Specifically: avg_runtime() + 0 must result in entity_eligible() := true
669  * For this to be so, the result of this function must have a left bias.
670  */
671 u64 avg_vruntime(struct cfs_rq *cfs_rq)
672 {
673         struct sched_entity *curr = cfs_rq->curr;
674         s64 avg = cfs_rq->avg_vruntime;
675         long load = cfs_rq->avg_load;
676
677         if (curr && curr->on_rq) {
678                 unsigned long weight = scale_load_down(curr->load.weight);
679
680                 avg += entity_key(cfs_rq, curr) * weight;
681                 load += weight;
682         }
683
684         if (load) {
685                 /* sign flips effective floor / ceil */
686                 if (avg < 0)
687                         avg -= (load - 1);
688                 avg = div_s64(avg, load);
689         }
690
691         return cfs_rq->min_vruntime + avg;
692 }
693
694 /*
695  * lag_i = S - s_i = w_i * (V - v_i)
696  *
697  * However, since V is approximated by the weighted average of all entities it
698  * is possible -- by addition/removal/reweight to the tree -- to move V around
699  * and end up with a larger lag than we started with.
700  *
701  * Limit this to either double the slice length with a minimum of TICK_NSEC
702  * since that is the timing granularity.
703  *
704  * EEVDF gives the following limit for a steady state system:
705  *
706  *   -r_max < lag < max(r_max, q)
707  *
708  * XXX could add max_slice to the augmented data to track this.
709  */
710 static void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se)
711 {
712         s64 lag, limit;
713
714         SCHED_WARN_ON(!se->on_rq);
715         lag = avg_vruntime(cfs_rq) - se->vruntime;
716
717         limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se);
718         se->vlag = clamp(lag, -limit, limit);
719 }
720
721 /*
722  * Entity is eligible once it received less service than it ought to have,
723  * eg. lag >= 0.
724  *
725  * lag_i = S - s_i = w_i*(V - v_i)
726  *
727  * lag_i >= 0 -> V >= v_i
728  *
729  *     \Sum (v_i - v)*w_i
730  * V = ------------------ + v
731  *          \Sum w_i
732  *
733  * lag_i >= 0 -> \Sum (v_i - v)*w_i >= (v_i - v)*(\Sum w_i)
734  *
735  * Note: using 'avg_vruntime() > se->vruntime' is inacurate due
736  *       to the loss in precision caused by the division.
737  */
738 int entity_eligible(struct cfs_rq *cfs_rq, struct sched_entity *se)
739 {
740         struct sched_entity *curr = cfs_rq->curr;
741         s64 avg = cfs_rq->avg_vruntime;
742         long load = cfs_rq->avg_load;
743
744         if (curr && curr->on_rq) {
745                 unsigned long weight = scale_load_down(curr->load.weight);
746
747                 avg += entity_key(cfs_rq, curr) * weight;
748                 load += weight;
749         }
750
751         return avg >= entity_key(cfs_rq, se) * load;
752 }
753
754 static u64 __update_min_vruntime(struct cfs_rq *cfs_rq, u64 vruntime)
755 {
756         u64 min_vruntime = cfs_rq->min_vruntime;
757         /*
758          * open coded max_vruntime() to allow updating avg_vruntime
759          */
760         s64 delta = (s64)(vruntime - min_vruntime);
761         if (delta > 0) {
762                 avg_vruntime_update(cfs_rq, delta);
763                 min_vruntime = vruntime;
764         }
765         return min_vruntime;
766 }
767
768 static void update_min_vruntime(struct cfs_rq *cfs_rq)
769 {
770         struct sched_entity *se = __pick_first_entity(cfs_rq);
771         struct sched_entity *curr = cfs_rq->curr;
772
773         u64 vruntime = cfs_rq->min_vruntime;
774
775         if (curr) {
776                 if (curr->on_rq)
777                         vruntime = curr->vruntime;
778                 else
779                         curr = NULL;
780         }
781
782         if (se) {
783                 if (!curr)
784                         vruntime = se->vruntime;
785                 else
786                         vruntime = min_vruntime(vruntime, se->vruntime);
787         }
788
789         /* ensure we never gain time by being placed backwards. */
790         u64_u32_store(cfs_rq->min_vruntime,
791                       __update_min_vruntime(cfs_rq, vruntime));
792 }
793
794 static inline bool __entity_less(struct rb_node *a, const struct rb_node *b)
795 {
796         return entity_before(__node_2_se(a), __node_2_se(b));
797 }
798
799 #define deadline_gt(field, lse, rse) ({ (s64)((lse)->field - (rse)->field) > 0; })
800
801 static inline void __update_min_deadline(struct sched_entity *se, struct rb_node *node)
802 {
803         if (node) {
804                 struct sched_entity *rse = __node_2_se(node);
805                 if (deadline_gt(min_deadline, se, rse))
806                         se->min_deadline = rse->min_deadline;
807         }
808 }
809
810 /*
811  * se->min_deadline = min(se->deadline, left->min_deadline, right->min_deadline)
812  */
813 static inline bool min_deadline_update(struct sched_entity *se, bool exit)
814 {
815         u64 old_min_deadline = se->min_deadline;
816         struct rb_node *node = &se->run_node;
817
818         se->min_deadline = se->deadline;
819         __update_min_deadline(se, node->rb_right);
820         __update_min_deadline(se, node->rb_left);
821
822         return se->min_deadline == old_min_deadline;
823 }
824
825 RB_DECLARE_CALLBACKS(static, min_deadline_cb, struct sched_entity,
826                      run_node, min_deadline, min_deadline_update);
827
828 /*
829  * Enqueue an entity into the rb-tree:
830  */
831 static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
832 {
833         avg_vruntime_add(cfs_rq, se);
834         se->min_deadline = se->deadline;
835         rb_add_augmented_cached(&se->run_node, &cfs_rq->tasks_timeline,
836                                 __entity_less, &min_deadline_cb);
837 }
838
839 static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
840 {
841         rb_erase_augmented_cached(&se->run_node, &cfs_rq->tasks_timeline,
842                                   &min_deadline_cb);
843         avg_vruntime_sub(cfs_rq, se);
844 }
845
846 struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
847 {
848         struct rb_node *left = rb_first_cached(&cfs_rq->tasks_timeline);
849
850         if (!left)
851                 return NULL;
852
853         return __node_2_se(left);
854 }
855
856 /*
857  * Earliest Eligible Virtual Deadline First
858  *
859  * In order to provide latency guarantees for different request sizes
860  * EEVDF selects the best runnable task from two criteria:
861  *
862  *  1) the task must be eligible (must be owed service)
863  *
864  *  2) from those tasks that meet 1), we select the one
865  *     with the earliest virtual deadline.
866  *
867  * We can do this in O(log n) time due to an augmented RB-tree. The
868  * tree keeps the entries sorted on service, but also functions as a
869  * heap based on the deadline by keeping:
870  *
871  *  se->min_deadline = min(se->deadline, se->{left,right}->min_deadline)
872  *
873  * Which allows an EDF like search on (sub)trees.
874  */
875 static struct sched_entity *__pick_eevdf(struct cfs_rq *cfs_rq)
876 {
877         struct rb_node *node = cfs_rq->tasks_timeline.rb_root.rb_node;
878         struct sched_entity *curr = cfs_rq->curr;
879         struct sched_entity *best = NULL;
880         struct sched_entity *best_left = NULL;
881
882         if (curr && (!curr->on_rq || !entity_eligible(cfs_rq, curr)))
883                 curr = NULL;
884         best = curr;
885
886         /*
887          * Once selected, run a task until it either becomes non-eligible or
888          * until it gets a new slice. See the HACK in set_next_entity().
889          */
890         if (sched_feat(RUN_TO_PARITY) && curr && curr->vlag == curr->deadline)
891                 return curr;
892
893         while (node) {
894                 struct sched_entity *se = __node_2_se(node);
895
896                 /*
897                  * If this entity is not eligible, try the left subtree.
898                  */
899                 if (!entity_eligible(cfs_rq, se)) {
900                         node = node->rb_left;
901                         continue;
902                 }
903
904                 /*
905                  * Now we heap search eligible trees for the best (min_)deadline
906                  */
907                 if (!best || deadline_gt(deadline, best, se))
908                         best = se;
909
910                 /*
911                  * Every se in a left branch is eligible, keep track of the
912                  * branch with the best min_deadline
913                  */
914                 if (node->rb_left) {
915                         struct sched_entity *left = __node_2_se(node->rb_left);
916
917                         if (!best_left || deadline_gt(min_deadline, best_left, left))
918                                 best_left = left;
919
920                         /*
921                          * min_deadline is in the left branch. rb_left and all
922                          * descendants are eligible, so immediately switch to the second
923                          * loop.
924                          */
925                         if (left->min_deadline == se->min_deadline)
926                                 break;
927                 }
928
929                 /* min_deadline is at this node, no need to look right */
930                 if (se->deadline == se->min_deadline)
931                         break;
932
933                 /* else min_deadline is in the right branch. */
934                 node = node->rb_right;
935         }
936
937         /*
938          * We ran into an eligible node which is itself the best.
939          * (Or nr_running == 0 and both are NULL)
940          */
941         if (!best_left || (s64)(best_left->min_deadline - best->deadline) > 0)
942                 return best;
943
944         /*
945          * Now best_left and all of its children are eligible, and we are just
946          * looking for deadline == min_deadline
947          */
948         node = &best_left->run_node;
949         while (node) {
950                 struct sched_entity *se = __node_2_se(node);
951
952                 /* min_deadline is the current node */
953                 if (se->deadline == se->min_deadline)
954                         return se;
955
956                 /* min_deadline is in the left branch */
957                 if (node->rb_left &&
958                     __node_2_se(node->rb_left)->min_deadline == se->min_deadline) {
959                         node = node->rb_left;
960                         continue;
961                 }
962
963                 /* else min_deadline is in the right branch */
964                 node = node->rb_right;
965         }
966         return NULL;
967 }
968
969 static struct sched_entity *pick_eevdf(struct cfs_rq *cfs_rq)
970 {
971         struct sched_entity *se = __pick_eevdf(cfs_rq);
972
973         if (!se) {
974                 struct sched_entity *left = __pick_first_entity(cfs_rq);
975                 if (left) {
976                         pr_err("EEVDF scheduling fail, picking leftmost\n");
977                         return left;
978                 }
979         }
980
981         return se;
982 }
983
984 #ifdef CONFIG_SCHED_DEBUG
985 struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
986 {
987         struct rb_node *last = rb_last(&cfs_rq->tasks_timeline.rb_root);
988
989         if (!last)
990                 return NULL;
991
992         return __node_2_se(last);
993 }
994
995 /**************************************************************
996  * Scheduling class statistics methods:
997  */
998 #ifdef CONFIG_SMP
999 int sched_update_scaling(void)
1000 {
1001         unsigned int factor = get_update_sysctl_factor();
1002
1003 #define WRT_SYSCTL(name) \
1004         (normalized_sysctl_##name = sysctl_##name / (factor))
1005         WRT_SYSCTL(sched_base_slice);
1006 #undef WRT_SYSCTL
1007
1008         return 0;
1009 }
1010 #endif
1011 #endif
1012
1013 static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se);
1014
1015 /*
1016  * XXX: strictly: vd_i += N*r_i/w_i such that: vd_i > ve_i
1017  * this is probably good enough.
1018  */
1019 static void update_deadline(struct cfs_rq *cfs_rq, struct sched_entity *se)
1020 {
1021         if ((s64)(se->vruntime - se->deadline) < 0)
1022                 return;
1023
1024         /*
1025          * For EEVDF the virtual time slope is determined by w_i (iow.
1026          * nice) while the request time r_i is determined by
1027          * sysctl_sched_base_slice.
1028          */
1029         se->slice = sysctl_sched_base_slice;
1030
1031         /*
1032          * EEVDF: vd_i = ve_i + r_i / w_i
1033          */
1034         se->deadline = se->vruntime + calc_delta_fair(se->slice, se);
1035
1036         /*
1037          * The task has consumed its request, reschedule.
1038          */
1039         if (cfs_rq->nr_running > 1) {
1040                 resched_curr(rq_of(cfs_rq));
1041                 clear_buddies(cfs_rq, se);
1042         }
1043 }
1044
1045 #include "pelt.h"
1046 #ifdef CONFIG_SMP
1047
1048 static int select_idle_sibling(struct task_struct *p, int prev_cpu, int cpu);
1049 static unsigned long task_h_load(struct task_struct *p);
1050 static unsigned long capacity_of(int cpu);
1051
1052 /* Give new sched_entity start runnable values to heavy its load in infant time */
1053 void init_entity_runnable_average(struct sched_entity *se)
1054 {
1055         struct sched_avg *sa = &se->avg;
1056
1057         memset(sa, 0, sizeof(*sa));
1058
1059         /*
1060          * Tasks are initialized with full load to be seen as heavy tasks until
1061          * they get a chance to stabilize to their real load level.
1062          * Group entities are initialized with zero load to reflect the fact that
1063          * nothing has been attached to the task group yet.
1064          */
1065         if (entity_is_task(se))
1066                 sa->load_avg = scale_load_down(se->load.weight);
1067
1068         /* when this task enqueue'ed, it will contribute to its cfs_rq's load_avg */
1069 }
1070
1071 /*
1072  * With new tasks being created, their initial util_avgs are extrapolated
1073  * based on the cfs_rq's current util_avg:
1074  *
1075  *   util_avg = cfs_rq->util_avg / (cfs_rq->load_avg + 1) * se.load.weight
1076  *
1077  * However, in many cases, the above util_avg does not give a desired
1078  * value. Moreover, the sum of the util_avgs may be divergent, such
1079  * as when the series is a harmonic series.
1080  *
1081  * To solve this problem, we also cap the util_avg of successive tasks to
1082  * only 1/2 of the left utilization budget:
1083  *
1084  *   util_avg_cap = (cpu_scale - cfs_rq->avg.util_avg) / 2^n
1085  *
1086  * where n denotes the nth task and cpu_scale the CPU capacity.
1087  *
1088  * For example, for a CPU with 1024 of capacity, a simplest series from
1089  * the beginning would be like:
1090  *
1091  *  task  util_avg: 512, 256, 128,  64,  32,   16,    8, ...
1092  * cfs_rq util_avg: 512, 768, 896, 960, 992, 1008, 1016, ...
1093  *
1094  * Finally, that extrapolated util_avg is clamped to the cap (util_avg_cap)
1095  * if util_avg > util_avg_cap.
1096  */
1097 void post_init_entity_util_avg(struct task_struct *p)
1098 {
1099         struct sched_entity *se = &p->se;
1100         struct cfs_rq *cfs_rq = cfs_rq_of(se);
1101         struct sched_avg *sa = &se->avg;
1102         long cpu_scale = arch_scale_cpu_capacity(cpu_of(rq_of(cfs_rq)));
1103         long cap = (long)(cpu_scale - cfs_rq->avg.util_avg) / 2;
1104
1105         if (p->sched_class != &fair_sched_class) {
1106                 /*
1107                  * For !fair tasks do:
1108                  *
1109                 update_cfs_rq_load_avg(now, cfs_rq);
1110                 attach_entity_load_avg(cfs_rq, se);
1111                 switched_from_fair(rq, p);
1112                  *
1113                  * such that the next switched_to_fair() has the
1114                  * expected state.
1115                  */
1116                 se->avg.last_update_time = cfs_rq_clock_pelt(cfs_rq);
1117                 return;
1118         }
1119
1120         if (cap > 0) {
1121                 if (cfs_rq->avg.util_avg != 0) {
1122                         sa->util_avg  = cfs_rq->avg.util_avg * se->load.weight;
1123                         sa->util_avg /= (cfs_rq->avg.load_avg + 1);
1124
1125                         if (sa->util_avg > cap)
1126                                 sa->util_avg = cap;
1127                 } else {
1128                         sa->util_avg = cap;
1129                 }
1130         }
1131
1132         sa->runnable_avg = sa->util_avg;
1133 }
1134
1135 #else /* !CONFIG_SMP */
1136 void init_entity_runnable_average(struct sched_entity *se)
1137 {
1138 }
1139 void post_init_entity_util_avg(struct task_struct *p)
1140 {
1141 }
1142 static void update_tg_load_avg(struct cfs_rq *cfs_rq)
1143 {
1144 }
1145 #endif /* CONFIG_SMP */
1146
1147 /*
1148  * Update the current task's runtime statistics.
1149  */
1150 static void update_curr(struct cfs_rq *cfs_rq)
1151 {
1152         struct sched_entity *curr = cfs_rq->curr;
1153         u64 now = rq_clock_task(rq_of(cfs_rq));
1154         u64 delta_exec;
1155
1156         if (unlikely(!curr))
1157                 return;
1158
1159         delta_exec = now - curr->exec_start;
1160         if (unlikely((s64)delta_exec <= 0))
1161                 return;
1162
1163         curr->exec_start = now;
1164
1165         if (schedstat_enabled()) {
1166                 struct sched_statistics *stats;
1167
1168                 stats = __schedstats_from_se(curr);
1169                 __schedstat_set(stats->exec_max,
1170                                 max(delta_exec, stats->exec_max));
1171         }
1172
1173         curr->sum_exec_runtime += delta_exec;
1174         schedstat_add(cfs_rq->exec_clock, delta_exec);
1175
1176         curr->vruntime += calc_delta_fair(delta_exec, curr);
1177         update_deadline(cfs_rq, curr);
1178         update_min_vruntime(cfs_rq);
1179
1180         if (entity_is_task(curr)) {
1181                 struct task_struct *curtask = task_of(curr);
1182
1183                 trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime);
1184                 cgroup_account_cputime(curtask, delta_exec);
1185                 account_group_exec_runtime(curtask, delta_exec);
1186         }
1187
1188         account_cfs_rq_runtime(cfs_rq, delta_exec);
1189 }
1190
1191 static void update_curr_fair(struct rq *rq)
1192 {
1193         update_curr(cfs_rq_of(&rq->curr->se));
1194 }
1195
1196 static inline void
1197 update_stats_wait_start_fair(struct cfs_rq *cfs_rq, struct sched_entity *se)
1198 {
1199         struct sched_statistics *stats;
1200         struct task_struct *p = NULL;
1201
1202         if (!schedstat_enabled())
1203                 return;
1204
1205         stats = __schedstats_from_se(se);
1206
1207         if (entity_is_task(se))
1208                 p = task_of(se);
1209
1210         __update_stats_wait_start(rq_of(cfs_rq), p, stats);
1211 }
1212
1213 static inline void
1214 update_stats_wait_end_fair(struct cfs_rq *cfs_rq, struct sched_entity *se)
1215 {
1216         struct sched_statistics *stats;
1217         struct task_struct *p = NULL;
1218
1219         if (!schedstat_enabled())
1220                 return;
1221
1222         stats = __schedstats_from_se(se);
1223
1224         /*
1225          * When the sched_schedstat changes from 0 to 1, some sched se
1226          * maybe already in the runqueue, the se->statistics.wait_start
1227          * will be 0.So it will let the delta wrong. We need to avoid this
1228          * scenario.
1229          */
1230         if (unlikely(!schedstat_val(stats->wait_start)))
1231                 return;
1232
1233         if (entity_is_task(se))
1234                 p = task_of(se);
1235
1236         __update_stats_wait_end(rq_of(cfs_rq), p, stats);
1237 }
1238
1239 static inline void
1240 update_stats_enqueue_sleeper_fair(struct cfs_rq *cfs_rq, struct sched_entity *se)
1241 {
1242         struct sched_statistics *stats;
1243         struct task_struct *tsk = NULL;
1244
1245         if (!schedstat_enabled())
1246                 return;
1247
1248         stats = __schedstats_from_se(se);
1249
1250         if (entity_is_task(se))
1251                 tsk = task_of(se);
1252
1253         __update_stats_enqueue_sleeper(rq_of(cfs_rq), tsk, stats);
1254 }
1255
1256 /*
1257  * Task is being enqueued - update stats:
1258  */
1259 static inline void
1260 update_stats_enqueue_fair(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
1261 {
1262         if (!schedstat_enabled())
1263                 return;
1264
1265         /*
1266          * Are we enqueueing a waiting task? (for current tasks
1267          * a dequeue/enqueue event is a NOP)
1268          */
1269         if (se != cfs_rq->curr)
1270                 update_stats_wait_start_fair(cfs_rq, se);
1271
1272         if (flags & ENQUEUE_WAKEUP)
1273                 update_stats_enqueue_sleeper_fair(cfs_rq, se);
1274 }
1275
1276 static inline void
1277 update_stats_dequeue_fair(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
1278 {
1279
1280         if (!schedstat_enabled())
1281                 return;
1282
1283         /*
1284          * Mark the end of the wait period if dequeueing a
1285          * waiting task:
1286          */
1287         if (se != cfs_rq->curr)
1288                 update_stats_wait_end_fair(cfs_rq, se);
1289
1290         if ((flags & DEQUEUE_SLEEP) && entity_is_task(se)) {
1291                 struct task_struct *tsk = task_of(se);
1292                 unsigned int state;
1293
1294                 /* XXX racy against TTWU */
1295                 state = READ_ONCE(tsk->__state);
1296                 if (state & TASK_INTERRUPTIBLE)
1297                         __schedstat_set(tsk->stats.sleep_start,
1298                                       rq_clock(rq_of(cfs_rq)));
1299                 if (state & TASK_UNINTERRUPTIBLE)
1300                         __schedstat_set(tsk->stats.block_start,
1301                                       rq_clock(rq_of(cfs_rq)));
1302         }
1303 }
1304
1305 /*
1306  * We are picking a new current task - update its stats:
1307  */
1308 static inline void
1309 update_stats_curr_start(struct cfs_rq *cfs_rq, struct sched_entity *se)
1310 {
1311         /*
1312          * We are starting a new run period:
1313          */
1314         se->exec_start = rq_clock_task(rq_of(cfs_rq));
1315 }
1316
1317 /**************************************************
1318  * Scheduling class queueing methods:
1319  */
1320
1321 static inline bool is_core_idle(int cpu)
1322 {
1323 #ifdef CONFIG_SCHED_SMT
1324         int sibling;
1325
1326         for_each_cpu(sibling, cpu_smt_mask(cpu)) {
1327                 if (cpu == sibling)
1328                         continue;
1329
1330                 if (!idle_cpu(sibling))
1331                         return false;
1332         }
1333 #endif
1334
1335         return true;
1336 }
1337
1338 #ifdef CONFIG_NUMA
1339 #define NUMA_IMBALANCE_MIN 2
1340
1341 static inline long
1342 adjust_numa_imbalance(int imbalance, int dst_running, int imb_numa_nr)
1343 {
1344         /*
1345          * Allow a NUMA imbalance if busy CPUs is less than the maximum
1346          * threshold. Above this threshold, individual tasks may be contending
1347          * for both memory bandwidth and any shared HT resources.  This is an
1348          * approximation as the number of running tasks may not be related to
1349          * the number of busy CPUs due to sched_setaffinity.
1350          */
1351         if (dst_running > imb_numa_nr)
1352                 return imbalance;
1353
1354         /*
1355          * Allow a small imbalance based on a simple pair of communicating
1356          * tasks that remain local when the destination is lightly loaded.
1357          */
1358         if (imbalance <= NUMA_IMBALANCE_MIN)
1359                 return 0;
1360
1361         return imbalance;
1362 }
1363 #endif /* CONFIG_NUMA */
1364
1365 #ifdef CONFIG_NUMA_BALANCING
1366 /*
1367  * Approximate time to scan a full NUMA task in ms. The task scan period is
1368  * calculated based on the tasks virtual memory size and
1369  * numa_balancing_scan_size.
1370  */
1371 unsigned int sysctl_numa_balancing_scan_period_min = 1000;
1372 unsigned int sysctl_numa_balancing_scan_period_max = 60000;
1373
1374 /* Portion of address space to scan in MB */
1375 unsigned int sysctl_numa_balancing_scan_size = 256;
1376
1377 /* Scan @scan_size MB every @scan_period after an initial @scan_delay in ms */
1378 unsigned int sysctl_numa_balancing_scan_delay = 1000;
1379
1380 /* The page with hint page fault latency < threshold in ms is considered hot */
1381 unsigned int sysctl_numa_balancing_hot_threshold = MSEC_PER_SEC;
1382
1383 struct numa_group {
1384         refcount_t refcount;
1385
1386         spinlock_t lock; /* nr_tasks, tasks */
1387         int nr_tasks;
1388         pid_t gid;
1389         int active_nodes;
1390
1391         struct rcu_head rcu;
1392         unsigned long total_faults;
1393         unsigned long max_faults_cpu;
1394         /*
1395          * faults[] array is split into two regions: faults_mem and faults_cpu.
1396          *
1397          * Faults_cpu is used to decide whether memory should move
1398          * towards the CPU. As a consequence, these stats are weighted
1399          * more by CPU use than by memory faults.
1400          */
1401         unsigned long faults[];
1402 };
1403
1404 /*
1405  * For functions that can be called in multiple contexts that permit reading
1406  * ->numa_group (see struct task_struct for locking rules).
1407  */
1408 static struct numa_group *deref_task_numa_group(struct task_struct *p)
1409 {
1410         return rcu_dereference_check(p->numa_group, p == current ||
1411                 (lockdep_is_held(__rq_lockp(task_rq(p))) && !READ_ONCE(p->on_cpu)));
1412 }
1413
1414 static struct numa_group *deref_curr_numa_group(struct task_struct *p)
1415 {
1416         return rcu_dereference_protected(p->numa_group, p == current);
1417 }
1418
1419 static inline unsigned long group_faults_priv(struct numa_group *ng);
1420 static inline unsigned long group_faults_shared(struct numa_group *ng);
1421
1422 static unsigned int task_nr_scan_windows(struct task_struct *p)
1423 {
1424         unsigned long rss = 0;
1425         unsigned long nr_scan_pages;
1426
1427         /*
1428          * Calculations based on RSS as non-present and empty pages are skipped
1429          * by the PTE scanner and NUMA hinting faults should be trapped based
1430          * on resident pages
1431          */
1432         nr_scan_pages = sysctl_numa_balancing_scan_size << (20 - PAGE_SHIFT);
1433         rss = get_mm_rss(p->mm);
1434         if (!rss)
1435                 rss = nr_scan_pages;
1436
1437         rss = round_up(rss, nr_scan_pages);
1438         return rss / nr_scan_pages;
1439 }
1440
1441 /* For sanity's sake, never scan more PTEs than MAX_SCAN_WINDOW MB/sec. */
1442 #define MAX_SCAN_WINDOW 2560
1443
1444 static unsigned int task_scan_min(struct task_struct *p)
1445 {
1446         unsigned int scan_size = READ_ONCE(sysctl_numa_balancing_scan_size);
1447         unsigned int scan, floor;
1448         unsigned int windows = 1;
1449
1450         if (scan_size < MAX_SCAN_WINDOW)
1451                 windows = MAX_SCAN_WINDOW / scan_size;
1452         floor = 1000 / windows;
1453
1454         scan = sysctl_numa_balancing_scan_period_min / task_nr_scan_windows(p);
1455         return max_t(unsigned int, floor, scan);
1456 }
1457
1458 static unsigned int task_scan_start(struct task_struct *p)
1459 {
1460         unsigned long smin = task_scan_min(p);
1461         unsigned long period = smin;
1462         struct numa_group *ng;
1463
1464         /* Scale the maximum scan period with the amount of shared memory. */
1465         rcu_read_lock();
1466         ng = rcu_dereference(p->numa_group);
1467         if (ng) {
1468                 unsigned long shared = group_faults_shared(ng);
1469                 unsigned long private = group_faults_priv(ng);
1470
1471                 period *= refcount_read(&ng->refcount);
1472                 period *= shared + 1;
1473                 period /= private + shared + 1;
1474         }
1475         rcu_read_unlock();
1476
1477         return max(smin, period);
1478 }
1479
1480 static unsigned int task_scan_max(struct task_struct *p)
1481 {
1482         unsigned long smin = task_scan_min(p);
1483         unsigned long smax;
1484         struct numa_group *ng;
1485
1486         /* Watch for min being lower than max due to floor calculations */
1487         smax = sysctl_numa_balancing_scan_period_max / task_nr_scan_windows(p);
1488
1489         /* Scale the maximum scan period with the amount of shared memory. */
1490         ng = deref_curr_numa_group(p);
1491         if (ng) {
1492                 unsigned long shared = group_faults_shared(ng);
1493                 unsigned long private = group_faults_priv(ng);
1494                 unsigned long period = smax;
1495
1496                 period *= refcount_read(&ng->refcount);
1497                 period *= shared + 1;
1498                 period /= private + shared + 1;
1499
1500                 smax = max(smax, period);
1501         }
1502
1503         return max(smin, smax);
1504 }
1505
1506 static void account_numa_enqueue(struct rq *rq, struct task_struct *p)
1507 {
1508         rq->nr_numa_running += (p->numa_preferred_nid != NUMA_NO_NODE);
1509         rq->nr_preferred_running += (p->numa_preferred_nid == task_node(p));
1510 }
1511
1512 static void account_numa_dequeue(struct rq *rq, struct task_struct *p)
1513 {
1514         rq->nr_numa_running -= (p->numa_preferred_nid != NUMA_NO_NODE);
1515         rq->nr_preferred_running -= (p->numa_preferred_nid == task_node(p));
1516 }
1517
1518 /* Shared or private faults. */
1519 #define NR_NUMA_HINT_FAULT_TYPES 2
1520
1521 /* Memory and CPU locality */
1522 #define NR_NUMA_HINT_FAULT_STATS (NR_NUMA_HINT_FAULT_TYPES * 2)
1523
1524 /* Averaged statistics, and temporary buffers. */
1525 #define NR_NUMA_HINT_FAULT_BUCKETS (NR_NUMA_HINT_FAULT_STATS * 2)
1526
1527 pid_t task_numa_group_id(struct task_struct *p)
1528 {
1529         struct numa_group *ng;
1530         pid_t gid = 0;
1531
1532         rcu_read_lock();
1533         ng = rcu_dereference(p->numa_group);
1534         if (ng)
1535                 gid = ng->gid;
1536         rcu_read_unlock();
1537
1538         return gid;
1539 }
1540
1541 /*
1542  * The averaged statistics, shared & private, memory & CPU,
1543  * occupy the first half of the array. The second half of the
1544  * array is for current counters, which are averaged into the
1545  * first set by task_numa_placement.
1546  */
1547 static inline int task_faults_idx(enum numa_faults_stats s, int nid, int priv)
1548 {
1549         return NR_NUMA_HINT_FAULT_TYPES * (s * nr_node_ids + nid) + priv;
1550 }
1551
1552 static inline unsigned long task_faults(struct task_struct *p, int nid)
1553 {
1554         if (!p->numa_faults)
1555                 return 0;
1556
1557         return p->numa_faults[task_faults_idx(NUMA_MEM, nid, 0)] +
1558                 p->numa_faults[task_faults_idx(NUMA_MEM, nid, 1)];
1559 }
1560
1561 static inline unsigned long group_faults(struct task_struct *p, int nid)
1562 {
1563         struct numa_group *ng = deref_task_numa_group(p);
1564
1565         if (!ng)
1566                 return 0;
1567
1568         return ng->faults[task_faults_idx(NUMA_MEM, nid, 0)] +
1569                 ng->faults[task_faults_idx(NUMA_MEM, nid, 1)];
1570 }
1571
1572 static inline unsigned long group_faults_cpu(struct numa_group *group, int nid)
1573 {
1574         return group->faults[task_faults_idx(NUMA_CPU, nid, 0)] +
1575                 group->faults[task_faults_idx(NUMA_CPU, nid, 1)];
1576 }
1577
1578 static inline unsigned long group_faults_priv(struct numa_group *ng)
1579 {
1580         unsigned long faults = 0;
1581         int node;
1582
1583         for_each_online_node(node) {
1584                 faults += ng->faults[task_faults_idx(NUMA_MEM, node, 1)];
1585         }
1586
1587         return faults;
1588 }
1589
1590 static inline unsigned long group_faults_shared(struct numa_group *ng)
1591 {
1592         unsigned long faults = 0;
1593         int node;
1594
1595         for_each_online_node(node) {
1596                 faults += ng->faults[task_faults_idx(NUMA_MEM, node, 0)];
1597         }
1598
1599         return faults;
1600 }
1601
1602 /*
1603  * A node triggering more than 1/3 as many NUMA faults as the maximum is
1604  * considered part of a numa group's pseudo-interleaving set. Migrations
1605  * between these nodes are slowed down, to allow things to settle down.
1606  */
1607 #define ACTIVE_NODE_FRACTION 3
1608
1609 static bool numa_is_active_node(int nid, struct numa_group *ng)
1610 {
1611         return group_faults_cpu(ng, nid) * ACTIVE_NODE_FRACTION > ng->max_faults_cpu;
1612 }
1613
1614 /* Handle placement on systems where not all nodes are directly connected. */
1615 static unsigned long score_nearby_nodes(struct task_struct *p, int nid,
1616                                         int lim_dist, bool task)
1617 {
1618         unsigned long score = 0;
1619         int node, max_dist;
1620
1621         /*
1622          * All nodes are directly connected, and the same distance
1623          * from each other. No need for fancy placement algorithms.
1624          */
1625         if (sched_numa_topology_type == NUMA_DIRECT)
1626                 return 0;
1627
1628         /* sched_max_numa_distance may be changed in parallel. */
1629         max_dist = READ_ONCE(sched_max_numa_distance);
1630         /*
1631          * This code is called for each node, introducing N^2 complexity,
1632          * which should be ok given the number of nodes rarely exceeds 8.
1633          */
1634         for_each_online_node(node) {
1635                 unsigned long faults;
1636                 int dist = node_distance(nid, node);
1637
1638                 /*
1639                  * The furthest away nodes in the system are not interesting
1640                  * for placement; nid was already counted.
1641                  */
1642                 if (dist >= max_dist || node == nid)
1643                         continue;
1644
1645                 /*
1646                  * On systems with a backplane NUMA topology, compare groups
1647                  * of nodes, and move tasks towards the group with the most
1648                  * memory accesses. When comparing two nodes at distance
1649                  * "hoplimit", only nodes closer by than "hoplimit" are part
1650                  * of each group. Skip other nodes.
1651                  */
1652                 if (sched_numa_topology_type == NUMA_BACKPLANE && dist >= lim_dist)
1653                         continue;
1654
1655                 /* Add up the faults from nearby nodes. */
1656                 if (task)
1657                         faults = task_faults(p, node);
1658                 else
1659                         faults = group_faults(p, node);
1660
1661                 /*
1662                  * On systems with a glueless mesh NUMA topology, there are
1663                  * no fixed "groups of nodes". Instead, nodes that are not
1664                  * directly connected bounce traffic through intermediate
1665                  * nodes; a numa_group can occupy any set of nodes.
1666                  * The further away a node is, the less the faults count.
1667                  * This seems to result in good task placement.
1668                  */
1669                 if (sched_numa_topology_type == NUMA_GLUELESS_MESH) {
1670                         faults *= (max_dist - dist);
1671                         faults /= (max_dist - LOCAL_DISTANCE);
1672                 }
1673
1674                 score += faults;
1675         }
1676
1677         return score;
1678 }
1679
1680 /*
1681  * These return the fraction of accesses done by a particular task, or
1682  * task group, on a particular numa node.  The group weight is given a
1683  * larger multiplier, in order to group tasks together that are almost
1684  * evenly spread out between numa nodes.
1685  */
1686 static inline unsigned long task_weight(struct task_struct *p, int nid,
1687                                         int dist)
1688 {
1689         unsigned long faults, total_faults;
1690
1691         if (!p->numa_faults)
1692                 return 0;
1693
1694         total_faults = p->total_numa_faults;
1695
1696         if (!total_faults)
1697                 return 0;
1698
1699         faults = task_faults(p, nid);
1700         faults += score_nearby_nodes(p, nid, dist, true);
1701
1702         return 1000 * faults / total_faults;
1703 }
1704
1705 static inline unsigned long group_weight(struct task_struct *p, int nid,
1706                                          int dist)
1707 {
1708         struct numa_group *ng = deref_task_numa_group(p);
1709         unsigned long faults, total_faults;
1710
1711         if (!ng)
1712                 return 0;
1713
1714         total_faults = ng->total_faults;
1715
1716         if (!total_faults)
1717                 return 0;
1718
1719         faults = group_faults(p, nid);
1720         faults += score_nearby_nodes(p, nid, dist, false);
1721
1722         return 1000 * faults / total_faults;
1723 }
1724
1725 /*
1726  * If memory tiering mode is enabled, cpupid of slow memory page is
1727  * used to record scan time instead of CPU and PID.  When tiering mode
1728  * is disabled at run time, the scan time (in cpupid) will be
1729  * interpreted as CPU and PID.  So CPU needs to be checked to avoid to
1730  * access out of array bound.
1731  */
1732 static inline bool cpupid_valid(int cpupid)
1733 {
1734         return cpupid_to_cpu(cpupid) < nr_cpu_ids;
1735 }
1736
1737 /*
1738  * For memory tiering mode, if there are enough free pages (more than
1739  * enough watermark defined here) in fast memory node, to take full
1740  * advantage of fast memory capacity, all recently accessed slow
1741  * memory pages will be migrated to fast memory node without
1742  * considering hot threshold.
1743  */
1744 static bool pgdat_free_space_enough(struct pglist_data *pgdat)
1745 {
1746         int z;
1747         unsigned long enough_wmark;
1748
1749         enough_wmark = max(1UL * 1024 * 1024 * 1024 >> PAGE_SHIFT,
1750                            pgdat->node_present_pages >> 4);
1751         for (z = pgdat->nr_zones - 1; z >= 0; z--) {
1752                 struct zone *zone = pgdat->node_zones + z;
1753
1754                 if (!populated_zone(zone))
1755                         continue;
1756
1757                 if (zone_watermark_ok(zone, 0,
1758                                       wmark_pages(zone, WMARK_PROMO) + enough_wmark,
1759                                       ZONE_MOVABLE, 0))
1760                         return true;
1761         }
1762         return false;
1763 }
1764
1765 /*
1766  * For memory tiering mode, when page tables are scanned, the scan
1767  * time will be recorded in struct page in addition to make page
1768  * PROT_NONE for slow memory page.  So when the page is accessed, in
1769  * hint page fault handler, the hint page fault latency is calculated
1770  * via,
1771  *
1772  *      hint page fault latency = hint page fault time - scan time
1773  *
1774  * The smaller the hint page fault latency, the higher the possibility
1775  * for the page to be hot.
1776  */
1777 static int numa_hint_fault_latency(struct page *page)
1778 {
1779         int last_time, time;
1780
1781         time = jiffies_to_msecs(jiffies);
1782         last_time = xchg_page_access_time(page, time);
1783
1784         return (time - last_time) & PAGE_ACCESS_TIME_MASK;
1785 }
1786
1787 /*
1788  * For memory tiering mode, too high promotion/demotion throughput may
1789  * hurt application latency.  So we provide a mechanism to rate limit
1790  * the number of pages that are tried to be promoted.
1791  */
1792 static bool numa_promotion_rate_limit(struct pglist_data *pgdat,
1793                                       unsigned long rate_limit, int nr)
1794 {
1795         unsigned long nr_cand;
1796         unsigned int now, start;
1797
1798         now = jiffies_to_msecs(jiffies);
1799         mod_node_page_state(pgdat, PGPROMOTE_CANDIDATE, nr);
1800         nr_cand = node_page_state(pgdat, PGPROMOTE_CANDIDATE);
1801         start = pgdat->nbp_rl_start;
1802         if (now - start > MSEC_PER_SEC &&
1803             cmpxchg(&pgdat->nbp_rl_start, start, now) == start)
1804                 pgdat->nbp_rl_nr_cand = nr_cand;
1805         if (nr_cand - pgdat->nbp_rl_nr_cand >= rate_limit)
1806                 return true;
1807         return false;
1808 }
1809
1810 #define NUMA_MIGRATION_ADJUST_STEPS     16
1811
1812 static void numa_promotion_adjust_threshold(struct pglist_data *pgdat,
1813                                             unsigned long rate_limit,
1814                                             unsigned int ref_th)
1815 {
1816         unsigned int now, start, th_period, unit_th, th;
1817         unsigned long nr_cand, ref_cand, diff_cand;
1818
1819         now = jiffies_to_msecs(jiffies);
1820         th_period = sysctl_numa_balancing_scan_period_max;
1821         start = pgdat->nbp_th_start;
1822         if (now - start > th_period &&
1823             cmpxchg(&pgdat->nbp_th_start, start, now) == start) {
1824                 ref_cand = rate_limit *
1825                         sysctl_numa_balancing_scan_period_max / MSEC_PER_SEC;
1826                 nr_cand = node_page_state(pgdat, PGPROMOTE_CANDIDATE);
1827                 diff_cand = nr_cand - pgdat->nbp_th_nr_cand;
1828                 unit_th = ref_th * 2 / NUMA_MIGRATION_ADJUST_STEPS;
1829                 th = pgdat->nbp_threshold ? : ref_th;
1830                 if (diff_cand > ref_cand * 11 / 10)
1831                         th = max(th - unit_th, unit_th);
1832                 else if (diff_cand < ref_cand * 9 / 10)
1833                         th = min(th + unit_th, ref_th * 2);
1834                 pgdat->nbp_th_nr_cand = nr_cand;
1835                 pgdat->nbp_threshold = th;
1836         }
1837 }
1838
1839 bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
1840                                 int src_nid, int dst_cpu)
1841 {
1842         struct numa_group *ng = deref_curr_numa_group(p);
1843         int dst_nid = cpu_to_node(dst_cpu);
1844         int last_cpupid, this_cpupid;
1845
1846         /*
1847          * The pages in slow memory node should be migrated according
1848          * to hot/cold instead of private/shared.
1849          */
1850         if (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING &&
1851             !node_is_toptier(src_nid)) {
1852                 struct pglist_data *pgdat;
1853                 unsigned long rate_limit;
1854                 unsigned int latency, th, def_th;
1855
1856                 pgdat = NODE_DATA(dst_nid);
1857                 if (pgdat_free_space_enough(pgdat)) {
1858                         /* workload changed, reset hot threshold */
1859                         pgdat->nbp_threshold = 0;
1860                         return true;
1861                 }
1862
1863                 def_th = sysctl_numa_balancing_hot_threshold;
1864                 rate_limit = sysctl_numa_balancing_promote_rate_limit << \
1865                         (20 - PAGE_SHIFT);
1866                 numa_promotion_adjust_threshold(pgdat, rate_limit, def_th);
1867
1868                 th = pgdat->nbp_threshold ? : def_th;
1869                 latency = numa_hint_fault_latency(page);
1870                 if (latency >= th)
1871                         return false;
1872
1873                 return !numa_promotion_rate_limit(pgdat, rate_limit,
1874                                                   thp_nr_pages(page));
1875         }
1876
1877         this_cpupid = cpu_pid_to_cpupid(dst_cpu, current->pid);
1878         last_cpupid = page_cpupid_xchg_last(page, this_cpupid);
1879
1880         if (!(sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) &&
1881             !node_is_toptier(src_nid) && !cpupid_valid(last_cpupid))
1882                 return false;
1883
1884         /*
1885          * Allow first faults or private faults to migrate immediately early in
1886          * the lifetime of a task. The magic number 4 is based on waiting for
1887          * two full passes of the "multi-stage node selection" test that is
1888          * executed below.
1889          */
1890         if ((p->numa_preferred_nid == NUMA_NO_NODE || p->numa_scan_seq <= 4) &&
1891             (cpupid_pid_unset(last_cpupid) || cpupid_match_pid(p, last_cpupid)))
1892                 return true;
1893
1894         /*
1895          * Multi-stage node selection is used in conjunction with a periodic
1896          * migration fault to build a temporal task<->page relation. By using
1897          * a two-stage filter we remove short/unlikely relations.
1898          *
1899          * Using P(p) ~ n_p / n_t as per frequentist probability, we can equate
1900          * a task's usage of a particular page (n_p) per total usage of this
1901          * page (n_t) (in a given time-span) to a probability.
1902          *
1903          * Our periodic faults will sample this probability and getting the
1904          * same result twice in a row, given these samples are fully
1905          * independent, is then given by P(n)^2, provided our sample period
1906          * is sufficiently short compared to the usage pattern.
1907          *
1908          * This quadric squishes small probabilities, making it less likely we
1909          * act on an unlikely task<->page relation.
1910          */
1911         if (!cpupid_pid_unset(last_cpupid) &&
1912                                 cpupid_to_nid(last_cpupid) != dst_nid)
1913                 return false;
1914
1915         /* Always allow migrate on private faults */
1916         if (cpupid_match_pid(p, last_cpupid))
1917                 return true;
1918
1919         /* A shared fault, but p->numa_group has not been set up yet. */
1920         if (!ng)
1921                 return true;
1922
1923         /*
1924          * Destination node is much more heavily used than the source
1925          * node? Allow migration.
1926          */
1927         if (group_faults_cpu(ng, dst_nid) > group_faults_cpu(ng, src_nid) *
1928                                         ACTIVE_NODE_FRACTION)
1929                 return true;
1930
1931         /*
1932          * Distribute memory according to CPU & memory use on each node,
1933          * with 3/4 hysteresis to avoid unnecessary memory migrations:
1934          *
1935          * faults_cpu(dst)   3   faults_cpu(src)
1936          * --------------- * - > ---------------
1937          * faults_mem(dst)   4   faults_mem(src)
1938          */
1939         return group_faults_cpu(ng, dst_nid) * group_faults(p, src_nid) * 3 >
1940                group_faults_cpu(ng, src_nid) * group_faults(p, dst_nid) * 4;
1941 }
1942
1943 /*
1944  * 'numa_type' describes the node at the moment of load balancing.
1945  */
1946 enum numa_type {
1947         /* The node has spare capacity that can be used to run more tasks.  */
1948         node_has_spare = 0,
1949         /*
1950          * The node is fully used and the tasks don't compete for more CPU
1951          * cycles. Nevertheless, some tasks might wait before running.
1952          */
1953         node_fully_busy,
1954         /*
1955          * The node is overloaded and can't provide expected CPU cycles to all
1956          * tasks.
1957          */
1958         node_overloaded
1959 };
1960
1961 /* Cached statistics for all CPUs within a node */
1962 struct numa_stats {
1963         unsigned long load;
1964         unsigned long runnable;
1965         unsigned long util;
1966         /* Total compute capacity of CPUs on a node */
1967         unsigned long compute_capacity;
1968         unsigned int nr_running;
1969         unsigned int weight;
1970         enum numa_type node_type;
1971         int idle_cpu;
1972 };
1973
1974 struct task_numa_env {
1975         struct task_struct *p;
1976
1977         int src_cpu, src_nid;
1978         int dst_cpu, dst_nid;
1979         int imb_numa_nr;
1980
1981         struct numa_stats src_stats, dst_stats;
1982
1983         int imbalance_pct;
1984         int dist;
1985
1986         struct task_struct *best_task;
1987         long best_imp;
1988         int best_cpu;
1989 };
1990
1991 static unsigned long cpu_load(struct rq *rq);
1992 static unsigned long cpu_runnable(struct rq *rq);
1993
1994 static inline enum
1995 numa_type numa_classify(unsigned int imbalance_pct,
1996                          struct numa_stats *ns)
1997 {
1998         if ((ns->nr_running > ns->weight) &&
1999             (((ns->compute_capacity * 100) < (ns->util * imbalance_pct)) ||
2000              ((ns->compute_capacity * imbalance_pct) < (ns->runnable * 100))))
2001                 return node_overloaded;
2002
2003         if ((ns->nr_running < ns->weight) ||
2004             (((ns->compute_capacity * 100) > (ns->util * imbalance_pct)) &&
2005              ((ns->compute_capacity * imbalance_pct) > (ns->runnable * 100))))
2006                 return node_has_spare;
2007
2008         return node_fully_busy;
2009 }
2010
2011 #ifdef CONFIG_SCHED_SMT
2012 /* Forward declarations of select_idle_sibling helpers */
2013 static inline bool test_idle_cores(int cpu);
2014 static inline int numa_idle_core(int idle_core, int cpu)
2015 {
2016         if (!static_branch_likely(&sched_smt_present) ||
2017             idle_core >= 0 || !test_idle_cores(cpu))
2018                 return idle_core;
2019
2020         /*
2021          * Prefer cores instead of packing HT siblings
2022          * and triggering future load balancing.
2023          */
2024         if (is_core_idle(cpu))
2025                 idle_core = cpu;
2026
2027         return idle_core;
2028 }
2029 #else
2030 static inline int numa_idle_core(int idle_core, int cpu)
2031 {
2032         return idle_core;
2033 }
2034 #endif
2035
2036 /*
2037  * Gather all necessary information to make NUMA balancing placement
2038  * decisions that are compatible with standard load balancer. This
2039  * borrows code and logic from update_sg_lb_stats but sharing a
2040  * common implementation is impractical.
2041  */
2042 static void update_numa_stats(struct task_numa_env *env,
2043                               struct numa_stats *ns, int nid,
2044                               bool find_idle)
2045 {
2046         int cpu, idle_core = -1;
2047
2048         memset(ns, 0, sizeof(*ns));
2049         ns->idle_cpu = -1;
2050
2051         rcu_read_lock();
2052         for_each_cpu(cpu, cpumask_of_node(nid)) {
2053                 struct rq *rq = cpu_rq(cpu);
2054
2055                 ns->load += cpu_load(rq);
2056                 ns->runnable += cpu_runnable(rq);
2057                 ns->util += cpu_util_cfs(cpu);
2058                 ns->nr_running += rq->cfs.h_nr_running;
2059                 ns->compute_capacity += capacity_of(cpu);
2060
2061                 if (find_idle && idle_core < 0 && !rq->nr_running && idle_cpu(cpu)) {
2062                         if (READ_ONCE(rq->numa_migrate_on) ||
2063                             !cpumask_test_cpu(cpu, env->p->cpus_ptr))
2064                                 continue;
2065
2066                         if (ns->idle_cpu == -1)
2067                                 ns->idle_cpu = cpu;
2068
2069                         idle_core = numa_idle_core(idle_core, cpu);
2070                 }
2071         }
2072         rcu_read_unlock();
2073
2074         ns->weight = cpumask_weight(cpumask_of_node(nid));
2075
2076         ns->node_type = numa_classify(env->imbalance_pct, ns);
2077
2078         if (idle_core >= 0)
2079                 ns->idle_cpu = idle_core;
2080 }
2081
2082 static void task_numa_assign(struct task_numa_env *env,
2083                              struct task_struct *p, long imp)
2084 {
2085         struct rq *rq = cpu_rq(env->dst_cpu);
2086
2087         /* Check if run-queue part of active NUMA balance. */
2088         if (env->best_cpu != env->dst_cpu && xchg(&rq->numa_migrate_on, 1)) {
2089                 int cpu;
2090                 int start = env->dst_cpu;
2091
2092                 /* Find alternative idle CPU. */
2093                 for_each_cpu_wrap(cpu, cpumask_of_node(env->dst_nid), start + 1) {
2094                         if (cpu == env->best_cpu || !idle_cpu(cpu) ||
2095                             !cpumask_test_cpu(cpu, env->p->cpus_ptr)) {
2096                                 continue;
2097                         }
2098
2099                         env->dst_cpu = cpu;
2100                         rq = cpu_rq(env->dst_cpu);
2101                         if (!xchg(&rq->numa_migrate_on, 1))
2102                                 goto assign;
2103                 }
2104
2105                 /* Failed to find an alternative idle CPU */
2106                 return;
2107         }
2108
2109 assign:
2110         /*
2111          * Clear previous best_cpu/rq numa-migrate flag, since task now
2112          * found a better CPU to move/swap.
2113          */
2114         if (env->best_cpu != -1 && env->best_cpu != env->dst_cpu) {
2115                 rq = cpu_rq(env->best_cpu);
2116                 WRITE_ONCE(rq->numa_migrate_on, 0);
2117         }
2118
2119         if (env->best_task)
2120                 put_task_struct(env->best_task);
2121         if (p)
2122                 get_task_struct(p);
2123
2124         env->best_task = p;
2125         env->best_imp = imp;
2126         env->best_cpu = env->dst_cpu;
2127 }
2128
2129 static bool load_too_imbalanced(long src_load, long dst_load,
2130                                 struct task_numa_env *env)
2131 {
2132         long imb, old_imb;
2133         long orig_src_load, orig_dst_load;
2134         long src_capacity, dst_capacity;
2135
2136         /*
2137          * The load is corrected for the CPU capacity available on each node.
2138          *
2139          * src_load        dst_load
2140          * ------------ vs ---------
2141          * src_capacity    dst_capacity
2142          */
2143         src_capacity = env->src_stats.compute_capacity;
2144         dst_capacity = env->dst_stats.compute_capacity;
2145
2146         imb = abs(dst_load * src_capacity - src_load * dst_capacity);
2147
2148         orig_src_load = env->src_stats.load;
2149         orig_dst_load = env->dst_stats.load;
2150
2151         old_imb = abs(orig_dst_load * src_capacity - orig_src_load * dst_capacity);
2152
2153         /* Would this change make things worse? */
2154         return (imb > old_imb);
2155 }
2156
2157 /*
2158  * Maximum NUMA importance can be 1998 (2*999);
2159  * SMALLIMP @ 30 would be close to 1998/64.
2160  * Used to deter task migration.
2161  */
2162 #define SMALLIMP        30
2163
2164 /*
2165  * This checks if the overall compute and NUMA accesses of the system would
2166  * be improved if the source tasks was migrated to the target dst_cpu taking
2167  * into account that it might be best if task running on the dst_cpu should
2168  * be exchanged with the source task
2169  */
2170 static bool task_numa_compare(struct task_numa_env *env,
2171                               long taskimp, long groupimp, bool maymove)
2172 {
2173         struct numa_group *cur_ng, *p_ng = deref_curr_numa_group(env->p);
2174         struct rq *dst_rq = cpu_rq(env->dst_cpu);
2175         long imp = p_ng ? groupimp : taskimp;
2176         struct task_struct *cur;
2177         long src_load, dst_load;
2178         int dist = env->dist;
2179         long moveimp = imp;
2180         long load;
2181         bool stopsearch = false;
2182
2183         if (READ_ONCE(dst_rq->numa_migrate_on))
2184                 return false;
2185
2186         rcu_read_lock();
2187         cur = rcu_dereference(dst_rq->curr);
2188         if (cur && ((cur->flags & PF_EXITING) || is_idle_task(cur)))
2189                 cur = NULL;
2190
2191         /*
2192          * Because we have preemption enabled we can get migrated around and
2193          * end try selecting ourselves (current == env->p) as a swap candidate.
2194          */
2195         if (cur == env->p) {
2196                 stopsearch = true;
2197                 goto unlock;
2198         }
2199
2200         if (!cur) {
2201                 if (maymove && moveimp >= env->best_imp)
2202                         goto assign;
2203                 else
2204                         goto unlock;
2205         }
2206
2207         /* Skip this swap candidate if cannot move to the source cpu. */
2208         if (!cpumask_test_cpu(env->src_cpu, cur->cpus_ptr))
2209                 goto unlock;
2210
2211         /*
2212          * Skip this swap candidate if it is not moving to its preferred
2213          * node and the best task is.
2214          */
2215         if (env->best_task &&
2216             env->best_task->numa_preferred_nid == env->src_nid &&
2217             cur->numa_preferred_nid != env->src_nid) {
2218                 goto unlock;
2219         }
2220
2221         /*
2222          * "imp" is the fault differential for the source task between the
2223          * source and destination node. Calculate the total differential for
2224          * the source task and potential destination task. The more negative
2225          * the value is, the more remote accesses that would be expected to
2226          * be incurred if the tasks were swapped.
2227          *
2228          * If dst and source tasks are in the same NUMA group, or not
2229          * in any group then look only at task weights.
2230          */
2231         cur_ng = rcu_dereference(cur->numa_group);
2232         if (cur_ng == p_ng) {
2233                 /*
2234                  * Do not swap within a group or between tasks that have
2235                  * no group if there is spare capacity. Swapping does
2236                  * not address the load imbalance and helps one task at
2237                  * the cost of punishing another.
2238                  */
2239                 if (env->dst_stats.node_type == node_has_spare)
2240                         goto unlock;
2241
2242                 imp = taskimp + task_weight(cur, env->src_nid, dist) -
2243                       task_weight(cur, env->dst_nid, dist);
2244                 /*
2245                  * Add some hysteresis to prevent swapping the
2246                  * tasks within a group over tiny differences.
2247                  */
2248                 if (cur_ng)
2249                         imp -= imp / 16;
2250         } else {
2251                 /*
2252                  * Compare the group weights. If a task is all by itself
2253                  * (not part of a group), use the task weight instead.
2254                  */
2255                 if (cur_ng && p_ng)
2256                         imp += group_weight(cur, env->src_nid, dist) -
2257                                group_weight(cur, env->dst_nid, dist);
2258                 else
2259                         imp += task_weight(cur, env->src_nid, dist) -
2260                                task_weight(cur, env->dst_nid, dist);
2261         }
2262
2263         /* Discourage picking a task already on its preferred node */
2264         if (cur->numa_preferred_nid == env->dst_nid)
2265                 imp -= imp / 16;
2266
2267         /*
2268          * Encourage picking a task that moves to its preferred node.
2269          * This potentially makes imp larger than it's maximum of
2270          * 1998 (see SMALLIMP and task_weight for why) but in this
2271          * case, it does not matter.
2272          */
2273         if (cur->numa_preferred_nid == env->src_nid)
2274                 imp += imp / 8;
2275
2276         if (maymove && moveimp > imp && moveimp > env->best_imp) {
2277                 imp = moveimp;
2278                 cur = NULL;
2279                 goto assign;
2280         }
2281
2282         /*
2283          * Prefer swapping with a task moving to its preferred node over a
2284          * task that is not.
2285          */
2286         if (env->best_task && cur->numa_preferred_nid == env->src_nid &&
2287             env->best_task->numa_preferred_nid != env->src_nid) {
2288                 goto assign;
2289         }
2290
2291         /*
2292          * If the NUMA importance is less than SMALLIMP,
2293          * task migration might only result in ping pong
2294          * of tasks and also hurt performance due to cache
2295          * misses.
2296          */
2297         if (imp < SMALLIMP || imp <= env->best_imp + SMALLIMP / 2)
2298                 goto unlock;
2299
2300         /*
2301          * In the overloaded case, try and keep the load balanced.
2302          */
2303         load = task_h_load(env->p) - task_h_load(cur);
2304         if (!load)
2305                 goto assign;
2306
2307         dst_load = env->dst_stats.load + load;
2308         src_load = env->src_stats.load - load;
2309
2310         if (load_too_imbalanced(src_load, dst_load, env))
2311                 goto unlock;
2312
2313 assign:
2314         /* Evaluate an idle CPU for a task numa move. */
2315         if (!cur) {
2316                 int cpu = env->dst_stats.idle_cpu;
2317
2318                 /* Nothing cached so current CPU went idle since the search. */
2319                 if (cpu < 0)
2320                         cpu = env->dst_cpu;
2321
2322                 /*
2323                  * If the CPU is no longer truly idle and the previous best CPU
2324                  * is, keep using it.
2325                  */
2326                 if (!idle_cpu(cpu) && env->best_cpu >= 0 &&
2327                     idle_cpu(env->best_cpu)) {
2328                         cpu = env->best_cpu;
2329                 }
2330
2331                 env->dst_cpu = cpu;
2332         }
2333
2334         task_numa_assign(env, cur, imp);
2335
2336         /*
2337          * If a move to idle is allowed because there is capacity or load
2338          * balance improves then stop the search. While a better swap
2339          * candidate may exist, a search is not free.
2340          */
2341         if (maymove && !cur && env->best_cpu >= 0 && idle_cpu(env->best_cpu))
2342                 stopsearch = true;
2343
2344         /*
2345          * If a swap candidate must be identified and the current best task
2346          * moves its preferred node then stop the search.
2347          */
2348         if (!maymove && env->best_task &&
2349             env->best_task->numa_preferred_nid == env->src_nid) {
2350                 stopsearch = true;
2351         }
2352 unlock:
2353         rcu_read_unlock();
2354
2355         return stopsearch;
2356 }
2357
2358 static void task_numa_find_cpu(struct task_numa_env *env,
2359                                 long taskimp, long groupimp)
2360 {
2361         bool maymove = false;
2362         int cpu;
2363
2364         /*
2365          * If dst node has spare capacity, then check if there is an
2366          * imbalance that would be overruled by the load balancer.
2367          */
2368         if (env->dst_stats.node_type == node_has_spare) {
2369                 unsigned int imbalance;
2370                 int src_running, dst_running;
2371
2372                 /*
2373                  * Would movement cause an imbalance? Note that if src has
2374                  * more running tasks that the imbalance is ignored as the
2375                  * move improves the imbalance from the perspective of the
2376                  * CPU load balancer.
2377                  * */
2378                 src_running = env->src_stats.nr_running - 1;
2379                 dst_running = env->dst_stats.nr_running + 1;
2380                 imbalance = max(0, dst_running - src_running);
2381                 imbalance = adjust_numa_imbalance(imbalance, dst_running,
2382                                                   env->imb_numa_nr);
2383
2384                 /* Use idle CPU if there is no imbalance */
2385                 if (!imbalance) {
2386                         maymove = true;
2387                         if (env->dst_stats.idle_cpu >= 0) {
2388                                 env->dst_cpu = env->dst_stats.idle_cpu;
2389                                 task_numa_assign(env, NULL, 0);
2390                                 return;
2391                         }
2392                 }
2393         } else {
2394                 long src_load, dst_load, load;
2395                 /*
2396                  * If the improvement from just moving env->p direction is better
2397                  * than swapping tasks around, check if a move is possible.
2398                  */
2399                 load = task_h_load(env->p);
2400                 dst_load = env->dst_stats.load + load;
2401                 src_load = env->src_stats.load - load;
2402                 maymove = !load_too_imbalanced(src_load, dst_load, env);
2403         }
2404
2405         for_each_cpu(cpu, cpumask_of_node(env->dst_nid)) {
2406                 /* Skip this CPU if the source task cannot migrate */
2407                 if (!cpumask_test_cpu(cpu, env->p->cpus_ptr))
2408                         continue;
2409
2410                 env->dst_cpu = cpu;
2411                 if (task_numa_compare(env, taskimp, groupimp, maymove))
2412                         break;
2413         }
2414 }
2415
2416 static int task_numa_migrate(struct task_struct *p)
2417 {
2418         struct task_numa_env env = {
2419                 .p = p,
2420
2421                 .src_cpu = task_cpu(p),
2422                 .src_nid = task_node(p),
2423
2424                 .imbalance_pct = 112,
2425
2426                 .best_task = NULL,
2427                 .best_imp = 0,
2428                 .best_cpu = -1,
2429         };
2430         unsigned long taskweight, groupweight;
2431         struct sched_domain *sd;
2432         long taskimp, groupimp;
2433         struct numa_group *ng;
2434         struct rq *best_rq;
2435         int nid, ret, dist;
2436
2437         /*
2438          * Pick the lowest SD_NUMA domain, as that would have the smallest
2439          * imbalance and would be the first to start moving tasks about.
2440          *
2441          * And we want to avoid any moving of tasks about, as that would create
2442          * random movement of tasks -- counter the numa conditions we're trying
2443          * to satisfy here.
2444          */
2445         rcu_read_lock();
2446         sd = rcu_dereference(per_cpu(sd_numa, env.src_cpu));
2447         if (sd) {
2448                 env.imbalance_pct = 100 + (sd->imbalance_pct - 100) / 2;
2449                 env.imb_numa_nr = sd->imb_numa_nr;
2450         }
2451         rcu_read_unlock();
2452
2453         /*
2454          * Cpusets can break the scheduler domain tree into smaller
2455          * balance domains, some of which do not cross NUMA boundaries.
2456          * Tasks that are "trapped" in such domains cannot be migrated
2457          * elsewhere, so there is no point in (re)trying.
2458          */
2459         if (unlikely(!sd)) {
2460                 sched_setnuma(p, task_node(p));
2461                 return -EINVAL;
2462         }
2463
2464         env.dst_nid = p->numa_preferred_nid;
2465         dist = env.dist = node_distance(env.src_nid, env.dst_nid);
2466         taskweight = task_weight(p, env.src_nid, dist);
2467         groupweight = group_weight(p, env.src_nid, dist);
2468         update_numa_stats(&env, &env.src_stats, env.src_nid, false);
2469         taskimp = task_weight(p, env.dst_nid, dist) - taskweight;
2470         groupimp = group_weight(p, env.dst_nid, dist) - groupweight;
2471         update_numa_stats(&env, &env.dst_stats, env.dst_nid, true);
2472
2473         /* Try to find a spot on the preferred nid. */
2474         task_numa_find_cpu(&env, taskimp, groupimp);
2475
2476         /*
2477          * Look at other nodes in these cases:
2478          * - there is no space available on the preferred_nid
2479          * - the task is part of a numa_group that is interleaved across
2480          *   multiple NUMA nodes; in order to better consolidate the group,
2481          *   we need to check other locations.
2482          */
2483         ng = deref_curr_numa_group(p);
2484         if (env.best_cpu == -1 || (ng && ng->active_nodes > 1)) {
2485                 for_each_node_state(nid, N_CPU) {
2486                         if (nid == env.src_nid || nid == p->numa_preferred_nid)
2487                                 continue;
2488
2489                         dist = node_distance(env.src_nid, env.dst_nid);
2490                         if (sched_numa_topology_type == NUMA_BACKPLANE &&
2491                                                 dist != env.dist) {
2492                                 taskweight = task_weight(p, env.src_nid, dist);
2493                                 groupweight = group_weight(p, env.src_nid, dist);
2494                         }
2495
2496                         /* Only consider nodes where both task and groups benefit */
2497                         taskimp = task_weight(p, nid, dist) - taskweight;
2498                         groupimp = group_weight(p, nid, dist) - groupweight;
2499                         if (taskimp < 0 && groupimp < 0)
2500                                 continue;
2501
2502                         env.dist = dist;
2503                         env.dst_nid = nid;
2504                         update_numa_stats(&env, &env.dst_stats, env.dst_nid, true);
2505                         task_numa_find_cpu(&env, taskimp, groupimp);
2506                 }
2507         }
2508
2509         /*
2510          * If the task is part of a workload that spans multiple NUMA nodes,
2511          * and is migrating into one of the workload's active nodes, remember
2512          * this node as the task's preferred numa node, so the workload can
2513          * settle down.
2514          * A task that migrated to a second choice node will be better off
2515          * trying for a better one later. Do not set the preferred node here.
2516          */
2517         if (ng) {
2518                 if (env.best_cpu == -1)
2519                         nid = env.src_nid;
2520                 else
2521                         nid = cpu_to_node(env.best_cpu);
2522
2523                 if (nid != p->numa_preferred_nid)
2524                         sched_setnuma(p, nid);
2525         }
2526
2527         /* No better CPU than the current one was found. */
2528         if (env.best_cpu == -1) {
2529                 trace_sched_stick_numa(p, env.src_cpu, NULL, -1);
2530                 return -EAGAIN;
2531         }
2532
2533         best_rq = cpu_rq(env.best_cpu);
2534         if (env.best_task == NULL) {
2535                 ret = migrate_task_to(p, env.best_cpu);
2536                 WRITE_ONCE(best_rq->numa_migrate_on, 0);
2537                 if (ret != 0)
2538                         trace_sched_stick_numa(p, env.src_cpu, NULL, env.best_cpu);
2539                 return ret;
2540         }
2541
2542         ret = migrate_swap(p, env.best_task, env.best_cpu, env.src_cpu);
2543         WRITE_ONCE(best_rq->numa_migrate_on, 0);
2544
2545         if (ret != 0)
2546                 trace_sched_stick_numa(p, env.src_cpu, env.best_task, env.best_cpu);
2547         put_task_struct(env.best_task);
2548         return ret;
2549 }
2550
2551 /* Attempt to migrate a task to a CPU on the preferred node. */
2552 static void numa_migrate_preferred(struct task_struct *p)
2553 {
2554         unsigned long interval = HZ;
2555
2556         /* This task has no NUMA fault statistics yet */
2557         if (unlikely(p->numa_preferred_nid == NUMA_NO_NODE || !p->numa_faults))
2558                 return;
2559
2560         /* Periodically retry migrating the task to the preferred node */
2561         interval = min(interval, msecs_to_jiffies(p->numa_scan_period) / 16);
2562         p->numa_migrate_retry = jiffies + interval;
2563
2564         /* Success if task is already running on preferred CPU */
2565         if (task_node(p) == p->numa_preferred_nid)
2566                 return;
2567
2568         /* Otherwise, try migrate to a CPU on the preferred node */
2569         task_numa_migrate(p);
2570 }
2571
2572 /*
2573  * Find out how many nodes the workload is actively running on. Do this by
2574  * tracking the nodes from which NUMA hinting faults are triggered. This can
2575  * be different from the set of nodes where the workload's memory is currently
2576  * located.
2577  */
2578 static void numa_group_count_active_nodes(struct numa_group *numa_group)
2579 {
2580         unsigned long faults, max_faults = 0;
2581         int nid, active_nodes = 0;
2582
2583         for_each_node_state(nid, N_CPU) {
2584                 faults = group_faults_cpu(numa_group, nid);
2585                 if (faults > max_faults)
2586                         max_faults = faults;
2587         }
2588
2589         for_each_node_state(nid, N_CPU) {
2590                 faults = group_faults_cpu(numa_group, nid);
2591                 if (faults * ACTIVE_NODE_FRACTION > max_faults)
2592                         active_nodes++;
2593         }
2594
2595         numa_group->max_faults_cpu = max_faults;
2596         numa_group->active_nodes = active_nodes;
2597 }
2598
2599 /*
2600  * When adapting the scan rate, the period is divided into NUMA_PERIOD_SLOTS
2601  * increments. The more local the fault statistics are, the higher the scan
2602  * period will be for the next scan window. If local/(local+remote) ratio is
2603  * below NUMA_PERIOD_THRESHOLD (where range of ratio is 1..NUMA_PERIOD_SLOTS)
2604  * the scan period will decrease. Aim for 70% local accesses.
2605  */
2606 #define NUMA_PERIOD_SLOTS 10
2607 #define NUMA_PERIOD_THRESHOLD 7
2608
2609 /*
2610  * Increase the scan period (slow down scanning) if the majority of
2611  * our memory is already on our local node, or if the majority of
2612  * the page accesses are shared with other processes.
2613  * Otherwise, decrease the scan period.
2614  */
2615 static void update_task_scan_period(struct task_struct *p,
2616                         unsigned long shared, unsigned long private)
2617 {
2618         unsigned int period_slot;
2619         int lr_ratio, ps_ratio;
2620         int diff;
2621
2622         unsigned long remote = p->numa_faults_locality[0];
2623         unsigned long local = p->numa_faults_locality[1];
2624
2625         /*
2626          * If there were no record hinting faults then either the task is
2627          * completely idle or all activity is in areas that are not of interest
2628          * to automatic numa balancing. Related to that, if there were failed
2629          * migration then it implies we are migrating too quickly or the local
2630          * node is overloaded. In either case, scan slower
2631          */
2632         if (local + shared == 0 || p->numa_faults_locality[2]) {
2633                 p->numa_scan_period = min(p->numa_scan_period_max,
2634                         p->numa_scan_period << 1);
2635
2636                 p->mm->numa_next_scan = jiffies +
2637                         msecs_to_jiffies(p->numa_scan_period);
2638
2639                 return;
2640         }
2641
2642         /*
2643          * Prepare to scale scan period relative to the current period.
2644          *       == NUMA_PERIOD_THRESHOLD scan period stays the same
2645          *       <  NUMA_PERIOD_THRESHOLD scan period decreases (scan faster)
2646          *       >= NUMA_PERIOD_THRESHOLD scan period increases (scan slower)
2647          */
2648         period_slot = DIV_ROUND_UP(p->numa_scan_period, NUMA_PERIOD_SLOTS);
2649         lr_ratio = (local * NUMA_PERIOD_SLOTS) / (local + remote);
2650         ps_ratio = (private * NUMA_PERIOD_SLOTS) / (private + shared);
2651
2652         if (ps_ratio >= NUMA_PERIOD_THRESHOLD) {
2653                 /*
2654                  * Most memory accesses are local. There is no need to
2655                  * do fast NUMA scanning, since memory is already local.
2656                  */
2657                 int slot = ps_ratio - NUMA_PERIOD_THRESHOLD;
2658                 if (!slot)
2659                         slot = 1;
2660                 diff = slot * period_slot;
2661         } else if (lr_ratio >= NUMA_PERIOD_THRESHOLD) {
2662                 /*
2663                  * Most memory accesses are shared with other tasks.
2664                  * There is no point in continuing fast NUMA scanning,
2665                  * since other tasks may just move the memory elsewhere.
2666                  */
2667                 int slot = lr_ratio - NUMA_PERIOD_THRESHOLD;
2668                 if (!slot)
2669                         slot = 1;
2670                 diff = slot * period_slot;
2671         } else {
2672                 /*
2673                  * Private memory faults exceed (SLOTS-THRESHOLD)/SLOTS,
2674                  * yet they are not on the local NUMA node. Speed up
2675                  * NUMA scanning to get the memory moved over.
2676                  */
2677                 int ratio = max(lr_ratio, ps_ratio);
2678                 diff = -(NUMA_PERIOD_THRESHOLD - ratio) * period_slot;
2679         }
2680
2681         p->numa_scan_period = clamp(p->numa_scan_period + diff,
2682                         task_scan_min(p), task_scan_max(p));
2683         memset(p->numa_faults_locality, 0, sizeof(p->numa_faults_locality));
2684 }
2685
2686 /*
2687  * Get the fraction of time the task has been running since the last
2688  * NUMA placement cycle. The scheduler keeps similar statistics, but
2689  * decays those on a 32ms period, which is orders of magnitude off
2690  * from the dozens-of-seconds NUMA balancing period. Use the scheduler
2691  * stats only if the task is so new there are no NUMA statistics yet.
2692  */
2693 static u64 numa_get_avg_runtime(struct task_struct *p, u64 *period)
2694 {
2695         u64 runtime, delta, now;
2696         /* Use the start of this time slice to avoid calculations. */
2697         now = p->se.exec_start;
2698         runtime = p->se.sum_exec_runtime;
2699
2700         if (p->last_task_numa_placement) {
2701                 delta = runtime - p->last_sum_exec_runtime;
2702                 *period = now - p->last_task_numa_placement;
2703
2704                 /* Avoid time going backwards, prevent potential divide error: */
2705                 if (unlikely((s64)*period < 0))
2706                         *period = 0;
2707         } else {
2708                 delta = p->se.avg.load_sum;
2709                 *period = LOAD_AVG_MAX;
2710         }
2711
2712         p->last_sum_exec_runtime = runtime;
2713         p->last_task_numa_placement = now;
2714
2715         return delta;
2716 }
2717
2718 /*
2719  * Determine the preferred nid for a task in a numa_group. This needs to
2720  * be done in a way that produces consistent results with group_weight,
2721  * otherwise workloads might not converge.
2722  */
2723 static int preferred_group_nid(struct task_struct *p, int nid)
2724 {
2725         nodemask_t nodes;
2726         int dist;
2727
2728         /* Direct connections between all NUMA nodes. */
2729         if (sched_numa_topology_type == NUMA_DIRECT)
2730                 return nid;
2731
2732         /*
2733          * On a system with glueless mesh NUMA topology, group_weight
2734          * scores nodes according to the number of NUMA hinting faults on
2735          * both the node itself, and on nearby nodes.
2736          */
2737         if (sched_numa_topology_type == NUMA_GLUELESS_MESH) {
2738                 unsigned long score, max_score = 0;
2739                 int node, max_node = nid;
2740
2741                 dist = sched_max_numa_distance;
2742
2743                 for_each_node_state(node, N_CPU) {
2744                         score = group_weight(p, node, dist);
2745                         if (score > max_score) {
2746                                 max_score = score;
2747                                 max_node = node;
2748                         }
2749                 }
2750                 return max_node;
2751         }
2752
2753         /*
2754          * Finding the preferred nid in a system with NUMA backplane
2755          * interconnect topology is more involved. The goal is to locate
2756          * tasks from numa_groups near each other in the system, and
2757          * untangle workloads from different sides of the system. This requires
2758          * searching down the hierarchy of node groups, recursively searching
2759          * inside the highest scoring group of nodes. The nodemask tricks
2760          * keep the complexity of the search down.
2761          */
2762         nodes = node_states[N_CPU];
2763         for (dist = sched_max_numa_distance; dist > LOCAL_DISTANCE; dist--) {
2764                 unsigned long max_faults = 0;
2765                 nodemask_t max_group = NODE_MASK_NONE;
2766                 int a, b;
2767
2768                 /* Are there nodes at this distance from each other? */
2769                 if (!find_numa_distance(dist))
2770                         continue;
2771
2772                 for_each_node_mask(a, nodes) {
2773                         unsigned long faults = 0;
2774                         nodemask_t this_group;
2775                         nodes_clear(this_group);
2776
2777                         /* Sum group's NUMA faults; includes a==b case. */
2778                         for_each_node_mask(b, nodes) {
2779                                 if (node_distance(a, b) < dist) {
2780                                         faults += group_faults(p, b);
2781                                         node_set(b, this_group);
2782                                         node_clear(b, nodes);
2783                                 }
2784                         }
2785
2786                         /* Remember the top group. */
2787                         if (faults > max_faults) {
2788                                 max_faults = faults;
2789                                 max_group = this_group;
2790                                 /*
2791                                  * subtle: at the smallest distance there is
2792                                  * just one node left in each "group", the
2793                                  * winner is the preferred nid.
2794                                  */
2795                                 nid = a;
2796                         }
2797                 }
2798                 /* Next round, evaluate the nodes within max_group. */
2799                 if (!max_faults)
2800                         break;
2801                 nodes = max_group;
2802         }
2803         return nid;
2804 }
2805
2806 static void task_numa_placement(struct task_struct *p)
2807 {
2808         int seq, nid, max_nid = NUMA_NO_NODE;
2809         unsigned long max_faults = 0;
2810         unsigned long fault_types[2] = { 0, 0 };
2811         unsigned long total_faults;
2812         u64 runtime, period;
2813         spinlock_t *group_lock = NULL;
2814         struct numa_group *ng;
2815
2816         /*
2817          * The p->mm->numa_scan_seq field gets updated without
2818          * exclusive access. Use READ_ONCE() here to ensure
2819          * that the field is read in a single access:
2820          */
2821         seq = READ_ONCE(p->mm->numa_scan_seq);
2822         if (p->numa_scan_seq == seq)
2823                 return;
2824         p->numa_scan_seq = seq;
2825         p->numa_scan_period_max = task_scan_max(p);
2826
2827         total_faults = p->numa_faults_locality[0] +
2828                        p->numa_faults_locality[1];
2829         runtime = numa_get_avg_runtime(p, &period);
2830
2831         /* If the task is part of a group prevent parallel updates to group stats */
2832         ng = deref_curr_numa_group(p);
2833         if (ng) {
2834                 group_lock = &ng->lock;
2835                 spin_lock_irq(group_lock);
2836         }
2837
2838         /* Find the node with the highest number of faults */
2839         for_each_online_node(nid) {
2840                 /* Keep track of the offsets in numa_faults array */
2841                 int mem_idx, membuf_idx, cpu_idx, cpubuf_idx;
2842                 unsigned long faults = 0, group_faults = 0;
2843                 int priv;
2844
2845                 for (priv = 0; priv < NR_NUMA_HINT_FAULT_TYPES; priv++) {
2846                         long diff, f_diff, f_weight;
2847
2848                         mem_idx = task_faults_idx(NUMA_MEM, nid, priv);
2849                         membuf_idx = task_faults_idx(NUMA_MEMBUF, nid, priv);
2850                         cpu_idx = task_faults_idx(NUMA_CPU, nid, priv);
2851                         cpubuf_idx = task_faults_idx(NUMA_CPUBUF, nid, priv);
2852
2853                         /* Decay existing window, copy faults since last scan */
2854                         diff = p->numa_faults[membuf_idx] - p->numa_faults[mem_idx] / 2;
2855                         fault_types[priv] += p->numa_faults[membuf_idx];
2856                         p->numa_faults[membuf_idx] = 0;
2857
2858                         /*
2859                          * Normalize the faults_from, so all tasks in a group
2860                          * count according to CPU use, instead of by the raw
2861                          * number of faults. Tasks with little runtime have
2862                          * little over-all impact on throughput, and thus their
2863                          * faults are less important.
2864                          */
2865                         f_weight = div64_u64(runtime << 16, period + 1);
2866                         f_weight = (f_weight * p->numa_faults[cpubuf_idx]) /
2867                                    (total_faults + 1);
2868                         f_diff = f_weight - p->numa_faults[cpu_idx] / 2;
2869                         p->numa_faults[cpubuf_idx] = 0;
2870
2871                         p->numa_faults[mem_idx] += diff;
2872                         p->numa_faults[cpu_idx] += f_diff;
2873                         faults += p->numa_faults[mem_idx];
2874                         p->total_numa_faults += diff;
2875                         if (ng) {
2876                                 /*
2877                                  * safe because we can only change our own group
2878                                  *
2879                                  * mem_idx represents the offset for a given
2880                                  * nid and priv in a specific region because it
2881                                  * is at the beginning of the numa_faults array.
2882                                  */
2883                                 ng->faults[mem_idx] += diff;
2884                                 ng->faults[cpu_idx] += f_diff;
2885                                 ng->total_faults += diff;
2886                                 group_faults += ng->faults[mem_idx];
2887                         }
2888                 }
2889
2890                 if (!ng) {
2891                         if (faults > max_faults) {
2892                                 max_faults = faults;
2893                                 max_nid = nid;
2894                         }
2895                 } else if (group_faults > max_faults) {
2896                         max_faults = group_faults;
2897                         max_nid = nid;
2898                 }
2899         }
2900
2901         /* Cannot migrate task to CPU-less node */
2902         if (max_nid != NUMA_NO_NODE && !node_state(max_nid, N_CPU)) {
2903                 int near_nid = max_nid;
2904                 int distance, near_distance = INT_MAX;
2905
2906                 for_each_node_state(nid, N_CPU) {
2907                         distance = node_distance(max_nid, nid);
2908                         if (distance < near_distance) {
2909                                 near_nid = nid;
2910                                 near_distance = distance;
2911                         }
2912                 }
2913                 max_nid = near_nid;
2914         }
2915
2916         if (ng) {
2917                 numa_group_count_active_nodes(ng);
2918                 spin_unlock_irq(group_lock);
2919                 max_nid = preferred_group_nid(p, max_nid);
2920         }
2921
2922         if (max_faults) {
2923                 /* Set the new preferred node */
2924                 if (max_nid != p->numa_preferred_nid)
2925                         sched_setnuma(p, max_nid);
2926         }
2927
2928         update_task_scan_period(p, fault_types[0], fault_types[1]);
2929 }
2930
2931 static inline int get_numa_group(struct numa_group *grp)
2932 {
2933         return refcount_inc_not_zero(&grp->refcount);
2934 }
2935
2936 static inline void put_numa_group(struct numa_group *grp)
2937 {
2938         if (refcount_dec_and_test(&grp->refcount))
2939                 kfree_rcu(grp, rcu);
2940 }
2941
2942 static void task_numa_group(struct task_struct *p, int cpupid, int flags,
2943                         int *priv)
2944 {
2945         struct numa_group *grp, *my_grp;
2946         struct task_struct *tsk;
2947         bool join = false;
2948         int cpu = cpupid_to_cpu(cpupid);
2949         int i;
2950
2951         if (unlikely(!deref_curr_numa_group(p))) {
2952                 unsigned int size = sizeof(struct numa_group) +
2953                                     NR_NUMA_HINT_FAULT_STATS *
2954                                     nr_node_ids * sizeof(unsigned long);
2955
2956                 grp = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
2957                 if (!grp)
2958                         return;
2959
2960                 refcount_set(&grp->refcount, 1);
2961                 grp->active_nodes = 1;
2962                 grp->max_faults_cpu = 0;
2963                 spin_lock_init(&grp->lock);
2964                 grp->gid = p->pid;
2965
2966                 for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
2967                         grp->faults[i] = p->numa_faults[i];
2968
2969                 grp->total_faults = p->total_numa_faults;
2970
2971                 grp->nr_tasks++;
2972                 rcu_assign_pointer(p->numa_group, grp);
2973         }
2974
2975         rcu_read_lock();
2976         tsk = READ_ONCE(cpu_rq(cpu)->curr);
2977
2978         if (!cpupid_match_pid(tsk, cpupid))
2979                 goto no_join;
2980
2981         grp = rcu_dereference(tsk->numa_group);
2982         if (!grp)
2983                 goto no_join;
2984
2985         my_grp = deref_curr_numa_group(p);
2986         if (grp == my_grp)
2987                 goto no_join;
2988
2989         /*
2990          * Only join the other group if its bigger; if we're the bigger group,
2991          * the other task will join us.
2992          */
2993         if (my_grp->nr_tasks > grp->nr_tasks)
2994                 goto no_join;
2995
2996         /*
2997          * Tie-break on the grp address.
2998          */
2999         if (my_grp->nr_tasks == grp->nr_tasks && my_grp > grp)
3000                 goto no_join;
3001
3002         /* Always join threads in the same process. */
3003         if (tsk->mm == current->mm)
3004                 join = true;
3005
3006         /* Simple filter to avoid false positives due to PID collisions */
3007         if (flags & TNF_SHARED)
3008                 join = true;
3009
3010         /* Update priv based on whether false sharing was detected */
3011         *priv = !join;
3012
3013         if (join && !get_numa_group(grp))
3014                 goto no_join;
3015
3016         rcu_read_unlock();
3017
3018         if (!join)
3019                 return;
3020
3021         WARN_ON_ONCE(irqs_disabled());
3022         double_lock_irq(&my_grp->lock, &grp->lock);
3023
3024         for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++) {
3025                 my_grp->faults[i] -= p->numa_faults[i];
3026                 grp->faults[i] += p->numa_faults[i];
3027         }
3028         my_grp->total_faults -= p->total_numa_faults;
3029         grp->total_faults += p->total_numa_faults;
3030
3031         my_grp->nr_tasks--;
3032         grp->nr_tasks++;
3033
3034         spin_unlock(&my_grp->lock);
3035         spin_unlock_irq(&grp->lock);
3036
3037         rcu_assign_pointer(p->numa_group, grp);
3038
3039         put_numa_group(my_grp);
3040         return;
3041
3042 no_join:
3043         rcu_read_unlock();
3044         return;
3045 }
3046
3047 /*
3048  * Get rid of NUMA statistics associated with a task (either current or dead).
3049  * If @final is set, the task is dead and has reached refcount zero, so we can
3050  * safely free all relevant data structures. Otherwise, there might be
3051  * concurrent reads from places like load balancing and procfs, and we should
3052  * reset the data back to default state without freeing ->numa_faults.
3053  */
3054 void task_numa_free(struct task_struct *p, bool final)
3055 {
3056         /* safe: p either is current or is being freed by current */
3057         struct numa_group *grp = rcu_dereference_raw(p->numa_group);
3058         unsigned long *numa_faults = p->numa_faults;
3059         unsigned long flags;
3060         int i;
3061
3062         if (!numa_faults)
3063                 return;
3064
3065         if (grp) {
3066                 spin_lock_irqsave(&grp->lock, flags);
3067                 for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
3068                         grp->faults[i] -= p->numa_faults[i];
3069                 grp->total_faults -= p->total_numa_faults;
3070
3071                 grp->nr_tasks--;
3072                 spin_unlock_irqrestore(&grp->lock, flags);
3073                 RCU_INIT_POINTER(p->numa_group, NULL);
3074                 put_numa_group(grp);
3075         }
3076
3077         if (final) {
3078                 p->numa_faults = NULL;
3079                 kfree(numa_faults);
3080         } else {
3081                 p->total_numa_faults = 0;
3082                 for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
3083                         numa_faults[i] = 0;
3084         }
3085 }
3086
3087 /*
3088  * Got a PROT_NONE fault for a page on @node.
3089  */
3090 void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
3091 {
3092         struct task_struct *p = current;
3093         bool migrated = flags & TNF_MIGRATED;
3094         int cpu_node = task_node(current);
3095         int local = !!(flags & TNF_FAULT_LOCAL);
3096         struct numa_group *ng;
3097         int priv;
3098
3099         if (!static_branch_likely(&sched_numa_balancing))
3100                 return;
3101
3102         /* for example, ksmd faulting in a user's mm */
3103         if (!p->mm)
3104                 return;
3105
3106         /*
3107          * NUMA faults statistics are unnecessary for the slow memory
3108          * node for memory tiering mode.
3109          */
3110         if (!node_is_toptier(mem_node) &&
3111             (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING ||
3112              !cpupid_valid(last_cpupid)))
3113                 return;
3114
3115         /* Allocate buffer to track faults on a per-node basis */
3116         if (unlikely(!p->numa_faults)) {
3117                 int size = sizeof(*p->numa_faults) *
3118                            NR_NUMA_HINT_FAULT_BUCKETS * nr_node_ids;
3119
3120                 p->numa_faults = kzalloc(size, GFP_KERNEL|__GFP_NOWARN);
3121                 if (!p->numa_faults)
3122                         return;
3123
3124                 p->total_numa_faults = 0;
3125                 memset(p->numa_faults_locality, 0, sizeof(p->numa_faults_locality));
3126         }
3127
3128         /*
3129          * First accesses are treated as private, otherwise consider accesses
3130          * to be private if the accessing pid has not changed
3131          */
3132         if (unlikely(last_cpupid == (-1 & LAST_CPUPID_MASK))) {
3133                 priv = 1;
3134         } else {
3135                 priv = cpupid_match_pid(p, last_cpupid);
3136                 if (!priv && !(flags & TNF_NO_GROUP))
3137                         task_numa_group(p, last_cpupid, flags, &priv);
3138         }
3139
3140         /*
3141          * If a workload spans multiple NUMA nodes, a shared fault that
3142          * occurs wholly within the set of nodes that the workload is
3143          * actively using should be counted as local. This allows the
3144          * scan rate to slow down when a workload has settled down.
3145          */
3146         ng = deref_curr_numa_group(p);
3147         if (!priv && !local && ng && ng->active_nodes > 1 &&
3148                                 numa_is_active_node(cpu_node, ng) &&
3149                                 numa_is_active_node(mem_node, ng))
3150                 local = 1;
3151
3152         /*
3153          * Retry to migrate task to preferred node periodically, in case it
3154          * previously failed, or the scheduler moved us.
3155          */
3156         if (time_after(jiffies, p->numa_migrate_retry)) {
3157                 task_numa_placement(p);
3158                 numa_migrate_preferred(p);
3159         }
3160
3161         if (migrated)
3162                 p->numa_pages_migrated += pages;
3163         if (flags & TNF_MIGRATE_FAIL)
3164                 p->numa_faults_locality[2] += pages;
3165
3166         p->numa_faults[task_faults_idx(NUMA_MEMBUF, mem_node, priv)] += pages;
3167         p->numa_faults[task_faults_idx(NUMA_CPUBUF, cpu_node, priv)] += pages;
3168         p->numa_faults_locality[local] += pages;
3169 }
3170
3171 static void reset_ptenuma_scan(struct task_struct *p)
3172 {
3173         /*
3174          * We only did a read acquisition of the mmap sem, so
3175          * p->mm->numa_scan_seq is written to without exclusive access
3176          * and the update is not guaranteed to be atomic. That's not
3177          * much of an issue though, since this is just used for
3178          * statistical sampling. Use READ_ONCE/WRITE_ONCE, which are not
3179          * expensive, to avoid any form of compiler optimizations:
3180          */
3181         WRITE_ONCE(p->mm->numa_scan_seq, READ_ONCE(p->mm->numa_scan_seq) + 1);
3182         p->mm->numa_scan_offset = 0;
3183 }
3184
3185 static bool vma_is_accessed(struct vm_area_struct *vma)
3186 {
3187         unsigned long pids;
3188         /*
3189          * Allow unconditional access first two times, so that all the (pages)
3190          * of VMAs get prot_none fault introduced irrespective of accesses.
3191          * This is also done to avoid any side effect of task scanning
3192          * amplifying the unfairness of disjoint set of VMAs' access.
3193          */
3194         if (READ_ONCE(current->mm->numa_scan_seq) < 2)
3195                 return true;
3196
3197         pids = vma->numab_state->access_pids[0] | vma->numab_state->access_pids[1];
3198         return test_bit(hash_32(current->pid, ilog2(BITS_PER_LONG)), &pids);
3199 }
3200
3201 #define VMA_PID_RESET_PERIOD (4 * sysctl_numa_balancing_scan_delay)
3202
3203 /*
3204  * The expensive part of numa migration is done from task_work context.
3205  * Triggered from task_tick_numa().
3206  */
3207 static void task_numa_work(struct callback_head *work)
3208 {
3209         unsigned long migrate, next_scan, now = jiffies;
3210         struct task_struct *p = current;
3211         struct mm_struct *mm = p->mm;
3212         u64 runtime = p->se.sum_exec_runtime;
3213         struct vm_area_struct *vma;
3214         unsigned long start, end;
3215         unsigned long nr_pte_updates = 0;
3216         long pages, virtpages;
3217         struct vma_iterator vmi;
3218
3219         SCHED_WARN_ON(p != container_of(work, struct task_struct, numa_work));
3220
3221         work->next = work;
3222         /*
3223          * Who cares about NUMA placement when they're dying.
3224          *
3225          * NOTE: make sure not to dereference p->mm before this check,
3226          * exit_task_work() happens _after_ exit_mm() so we could be called
3227          * without p->mm even though we still had it when we enqueued this
3228          * work.
3229          */
3230         if (p->flags & PF_EXITING)
3231                 return;
3232
3233         if (!mm->numa_next_scan) {
3234                 mm->numa_next_scan = now +
3235                         msecs_to_jiffies(sysctl_numa_balancing_scan_delay);
3236         }
3237
3238         /*
3239          * Enforce maximal scan/migration frequency..
3240          */
3241         migrate = mm->numa_next_scan;
3242         if (time_before(now, migrate))
3243                 return;
3244
3245         if (p->numa_scan_period == 0) {
3246                 p->numa_scan_period_max = task_scan_max(p);
3247                 p->numa_scan_period = task_scan_start(p);
3248         }
3249
3250         next_scan = now + msecs_to_jiffies(p->numa_scan_period);
3251         if (!try_cmpxchg(&mm->numa_next_scan, &migrate, next_scan))
3252                 return;
3253
3254         /*
3255          * Delay this task enough that another task of this mm will likely win
3256          * the next time around.
3257          */
3258         p->node_stamp += 2 * TICK_NSEC;
3259
3260         start = mm->numa_scan_offset;
3261         pages = sysctl_numa_balancing_scan_size;
3262         pages <<= 20 - PAGE_SHIFT; /* MB in pages */
3263         virtpages = pages * 8;     /* Scan up to this much virtual space */
3264         if (!pages)
3265                 return;
3266
3267
3268         if (!mmap_read_trylock(mm))
3269                 return;
3270         vma_iter_init(&vmi, mm, start);
3271         vma = vma_next(&vmi);
3272         if (!vma) {
3273                 reset_ptenuma_scan(p);
3274                 start = 0;
3275                 vma_iter_set(&vmi, start);
3276                 vma = vma_next(&vmi);
3277         }
3278
3279         do {
3280                 if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
3281                         is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) {
3282                         continue;
3283                 }
3284
3285                 /*
3286                  * Shared library pages mapped by multiple processes are not
3287                  * migrated as it is expected they are cache replicated. Avoid
3288                  * hinting faults in read-only file-backed mappings or the vdso
3289                  * as migrating the pages will be of marginal benefit.
3290                  */
3291                 if (!vma->vm_mm ||
3292                     (vma->vm_file && (vma->vm_flags & (VM_READ|VM_WRITE)) == (VM_READ)))
3293                         continue;
3294
3295                 /*
3296                  * Skip inaccessible VMAs to avoid any confusion between
3297                  * PROT_NONE and NUMA hinting ptes
3298                  */
3299                 if (!vma_is_accessible(vma))
3300                         continue;
3301
3302                 /* Initialise new per-VMA NUMAB state. */
3303                 if (!vma->numab_state) {
3304                         vma->numab_state = kzalloc(sizeof(struct vma_numab_state),
3305                                 GFP_KERNEL);
3306                         if (!vma->numab_state)
3307                                 continue;
3308
3309                         vma->numab_state->next_scan = now +
3310                                 msecs_to_jiffies(sysctl_numa_balancing_scan_delay);
3311
3312                         /* Reset happens after 4 times scan delay of scan start */
3313                         vma->numab_state->next_pid_reset =  vma->numab_state->next_scan +
3314                                 msecs_to_jiffies(VMA_PID_RESET_PERIOD);
3315                 }
3316
3317                 /*
3318                  * Scanning the VMA's of short lived tasks add more overhead. So
3319                  * delay the scan for new VMAs.
3320                  */
3321                 if (mm->numa_scan_seq && time_before(jiffies,
3322                                                 vma->numab_state->next_scan))
3323                         continue;
3324
3325                 /* Do not scan the VMA if task has not accessed */
3326                 if (!vma_is_accessed(vma))
3327                         continue;
3328
3329                 /*
3330                  * RESET access PIDs regularly for old VMAs. Resetting after checking
3331                  * vma for recent access to avoid clearing PID info before access..
3332                  */
3333                 if (mm->numa_scan_seq &&
3334                                 time_after(jiffies, vma->numab_state->next_pid_reset)) {
3335                         vma->numab_state->next_pid_reset = vma->numab_state->next_pid_reset +
3336                                 msecs_to_jiffies(VMA_PID_RESET_PERIOD);
3337                         vma->numab_state->access_pids[0] = READ_ONCE(vma->numab_state->access_pids[1]);
3338                         vma->numab_state->access_pids[1] = 0;
3339                 }
3340
3341                 do {
3342                         start = max(start, vma->vm_start);
3343                         end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
3344                         end = min(end, vma->vm_end);
3345                         nr_pte_updates = change_prot_numa(vma, start, end);
3346
3347                         /*
3348                          * Try to scan sysctl_numa_balancing_size worth of
3349                          * hpages that have at least one present PTE that
3350                          * is not already pte-numa. If the VMA contains
3351                          * areas that are unused or already full of prot_numa
3352                          * PTEs, scan up to virtpages, to skip through those
3353                          * areas faster.
3354                          */
3355                         if (nr_pte_updates)
3356                                 pages -= (end - start) >> PAGE_SHIFT;
3357                         virtpages -= (end - start) >> PAGE_SHIFT;
3358
3359                         start = end;
3360                         if (pages <= 0 || virtpages <= 0)
3361                                 goto out;
3362
3363                         cond_resched();
3364                 } while (end != vma->vm_end);
3365         } for_each_vma(vmi, vma);
3366
3367 out:
3368         /*
3369          * It is possible to reach the end of the VMA list but the last few
3370          * VMAs are not guaranteed to the vma_migratable. If they are not, we
3371          * would find the !migratable VMA on the next scan but not reset the
3372          * scanner to the start so check it now.
3373          */
3374         if (vma)
3375                 mm->numa_scan_offset = start;
3376         else
3377                 reset_ptenuma_scan(p);
3378         mmap_read_unlock(mm);
3379
3380         /*
3381          * Make sure tasks use at least 32x as much time to run other code
3382          * than they used here, to limit NUMA PTE scanning overhead to 3% max.
3383          * Usually update_task_scan_period slows down scanning enough; on an
3384          * overloaded system we need to limit overhead on a per task basis.
3385          */
3386         if (unlikely(p->se.sum_exec_runtime != runtime)) {
3387                 u64 diff = p->se.sum_exec_runtime - runtime;
3388                 p->node_stamp += 32 * diff;
3389         }
3390 }
3391
3392 void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
3393 {
3394         int mm_users = 0;
3395         struct mm_struct *mm = p->mm;
3396
3397         if (mm) {
3398                 mm_users = atomic_read(&mm->mm_users);
3399                 if (mm_users == 1) {
3400                         mm->numa_next_scan = jiffies + msecs_to_jiffies(sysctl_numa_balancing_scan_delay);
3401                         mm->numa_scan_seq = 0;
3402                 }
3403         }
3404         p->node_stamp                   = 0;
3405         p->numa_scan_seq                = mm ? mm->numa_scan_seq : 0;
3406         p->numa_scan_period             = sysctl_numa_balancing_scan_delay;
3407         p->numa_migrate_retry           = 0;
3408         /* Protect against double add, see task_tick_numa and task_numa_work */
3409         p->numa_work.next               = &p->numa_work;
3410         p->numa_faults                  = NULL;
3411         p->numa_pages_migrated          = 0;
3412         p->total_numa_faults            = 0;
3413         RCU_INIT_POINTER(p->numa_group, NULL);
3414         p->last_task_numa_placement     = 0;
3415         p->last_sum_exec_runtime        = 0;
3416
3417         init_task_work(&p->numa_work, task_numa_work);
3418
3419         /* New address space, reset the preferred nid */
3420         if (!(clone_flags & CLONE_VM)) {
3421                 p->numa_preferred_nid = NUMA_NO_NODE;
3422                 return;
3423         }
3424
3425         /*
3426          * New thread, keep existing numa_preferred_nid which should be copied
3427          * already by arch_dup_task_struct but stagger when scans start.
3428          */
3429         if (mm) {
3430                 unsigned int delay;
3431
3432                 delay = min_t(unsigned int, task_scan_max(current),
3433                         current->numa_scan_period * mm_users * NSEC_PER_MSEC);
3434                 delay += 2 * TICK_NSEC;
3435                 p->node_stamp = delay;
3436         }
3437 }
3438
3439 /*
3440  * Drive the periodic memory faults..
3441  */
3442 static void task_tick_numa(struct rq *rq, struct task_struct *curr)
3443 {
3444         struct callback_head *work = &curr->numa_work;
3445         u64 period, now;
3446
3447         /*
3448          * We don't care about NUMA placement if we don't have memory.
3449          */
3450         if (!curr->mm || (curr->flags & (PF_EXITING | PF_KTHREAD)) || work->next != work)
3451                 return;
3452
3453         /*
3454          * Using runtime rather than walltime has the dual advantage that
3455          * we (mostly) drive the selection from busy threads and that the
3456          * task needs to have done some actual work before we bother with
3457          * NUMA placement.
3458          */
3459         now = curr->se.sum_exec_runtime;
3460         period = (u64)curr->numa_scan_period * NSEC_PER_MSEC;
3461
3462         if (now > curr->node_stamp + period) {
3463                 if (!curr->node_stamp)
3464                         curr->numa_scan_period = task_scan_start(curr);
3465                 curr->node_stamp += period;
3466
3467                 if (!time_before(jiffies, curr->mm->numa_next_scan))
3468                         task_work_add(curr, work, TWA_RESUME);
3469         }
3470 }
3471
3472 static void update_scan_period(struct task_struct *p, int new_cpu)
3473 {
3474         int src_nid = cpu_to_node(task_cpu(p));
3475         int dst_nid = cpu_to_node(new_cpu);
3476
3477         if (!static_branch_likely(&sched_numa_balancing))
3478                 return;
3479
3480         if (!p->mm || !p->numa_faults || (p->flags & PF_EXITING))
3481                 return;
3482
3483         if (src_nid == dst_nid)
3484                 return;
3485
3486         /*
3487          * Allow resets if faults have been trapped before one scan
3488          * has completed. This is most likely due to a new task that
3489          * is pulled cross-node due to wakeups or load balancing.
3490          */
3491         if (p->numa_scan_seq) {
3492                 /*
3493                  * Avoid scan adjustments if moving to the preferred
3494                  * node or if the task was not previously running on
3495                  * the preferred node.
3496                  */
3497                 if (dst_nid == p->numa_preferred_nid ||
3498                     (p->numa_preferred_nid != NUMA_NO_NODE &&
3499                         src_nid != p->numa_preferred_nid))
3500                         return;
3501         }
3502
3503         p->numa_scan_period = task_scan_start(p);
3504 }
3505
3506 #else
3507 static void task_tick_numa(struct rq *rq, struct task_struct *curr)
3508 {
3509 }
3510
3511 static inline void account_numa_enqueue(struct rq *rq, struct task_struct *p)
3512 {
3513 }
3514
3515 static inline void account_numa_dequeue(struct rq *rq, struct task_struct *p)
3516 {
3517 }
3518
3519 static inline void update_scan_period(struct task_struct *p, int new_cpu)
3520 {
3521 }
3522
3523 #endif /* CONFIG_NUMA_BALANCING */
3524
3525 static void
3526 account_entity_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
3527 {
3528         update_load_add(&cfs_rq->load, se->load.weight);
3529 #ifdef CONFIG_SMP
3530         if (entity_is_task(se)) {
3531                 struct rq *rq = rq_of(cfs_rq);
3532
3533                 account_numa_enqueue(rq, task_of(se));
3534                 list_add(&se->group_node, &rq->cfs_tasks);
3535         }
3536 #endif
3537         cfs_rq->nr_running++;
3538         if (se_is_idle(se))
3539                 cfs_rq->idle_nr_running++;
3540 }
3541
3542 static void
3543 account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
3544 {
3545         update_load_sub(&cfs_rq->load, se->load.weight);
3546 #ifdef CONFIG_SMP
3547         if (entity_is_task(se)) {
3548                 account_numa_dequeue(rq_of(cfs_rq), task_of(se));
3549                 list_del_init(&se->group_node);
3550         }
3551 #endif
3552         cfs_rq->nr_running--;
3553         if (se_is_idle(se))
3554                 cfs_rq->idle_nr_running--;
3555 }
3556
3557 /*
3558  * Signed add and clamp on underflow.
3559  *
3560  * Explicitly do a load-store to ensure the intermediate value never hits
3561  * memory. This allows lockless observations without ever seeing the negative
3562  * values.
3563  */
3564 #define add_positive(_ptr, _val) do {                           \
3565         typeof(_ptr) ptr = (_ptr);                              \
3566         typeof(_val) val = (_val);                              \
3567         typeof(*ptr) res, var = READ_ONCE(*ptr);                \
3568                                                                 \
3569         res = var + val;                                        \
3570                                                                 \
3571         if (val < 0 && res > var)                               \
3572                 res = 0;                                        \
3573                                                                 \
3574         WRITE_ONCE(*ptr, res);                                  \
3575 } while (0)
3576
3577 /*
3578  * Unsigned subtract and clamp on underflow.
3579  *
3580  * Explicitly do a load-store to ensure the intermediate value never hits
3581  * memory. This allows lockless observations without ever seeing the negative
3582  * values.
3583  */
3584 #define sub_positive(_ptr, _val) do {                           \
3585         typeof(_ptr) ptr = (_ptr);                              \
3586         typeof(*ptr) val = (_val);                              \
3587         typeof(*ptr) res, var = READ_ONCE(*ptr);                \
3588         res = var - val;                                        \
3589         if (res > var)                                          \
3590                 res = 0;                                        \
3591         WRITE_ONCE(*ptr, res);                                  \
3592 } while (0)
3593
3594 /*
3595  * Remove and clamp on negative, from a local variable.
3596  *
3597  * A variant of sub_positive(), which does not use explicit load-store
3598  * and is thus optimized for local variable updates.
3599  */
3600 #define lsub_positive(_ptr, _val) do {                          \
3601         typeof(_ptr) ptr = (_ptr);                              \
3602         *ptr -= min_t(typeof(*ptr), *ptr, _val);                \
3603 } while (0)
3604
3605 #ifdef CONFIG_SMP
3606 static inline void
3607 enqueue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
3608 {
3609         cfs_rq->avg.load_avg += se->avg.load_avg;
3610         cfs_rq->avg.load_sum += se_weight(se) * se->avg.load_sum;
3611 }
3612
3613 static inline void
3614 dequeue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
3615 {
3616         sub_positive(&cfs_rq->avg.load_avg, se->avg.load_avg);
3617         sub_positive(&cfs_rq->avg.load_sum, se_weight(se) * se->avg.load_sum);
3618         /* See update_cfs_rq_load_avg() */
3619         cfs_rq->avg.load_sum = max_t(u32, cfs_rq->avg.load_sum,
3620                                           cfs_rq->avg.load_avg * PELT_MIN_DIVIDER);
3621 }
3622 #else
3623 static inline void
3624 enqueue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) { }
3625 static inline void
3626 dequeue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) { }
3627 #endif
3628
3629 static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
3630                             unsigned long weight)
3631 {
3632         unsigned long old_weight = se->load.weight;
3633
3634         if (se->on_rq) {
3635                 /* commit outstanding execution time */
3636                 if (cfs_rq->curr == se)
3637                         update_curr(cfs_rq);
3638                 else
3639                         avg_vruntime_sub(cfs_rq, se);
3640                 update_load_sub(&cfs_rq->load, se->load.weight);
3641         }
3642         dequeue_load_avg(cfs_rq, se);
3643
3644         update_load_set(&se->load, weight);
3645
3646         if (!se->on_rq) {
3647                 /*
3648                  * Because we keep se->vlag = V - v_i, while: lag_i = w_i*(V - v_i),
3649                  * we need to scale se->vlag when w_i changes.
3650                  */
3651                 se->vlag = div_s64(se->vlag * old_weight, weight);
3652         } else {
3653                 s64 deadline = se->deadline - se->vruntime;
3654                 /*
3655                  * When the weight changes, the virtual time slope changes and
3656                  * we should adjust the relative virtual deadline accordingly.
3657                  */
3658                 deadline = div_s64(deadline * old_weight, weight);
3659                 se->deadline = se->vruntime + deadline;
3660                 if (se != cfs_rq->curr)
3661                         min_deadline_cb_propagate(&se->run_node, NULL);
3662         }
3663
3664 #ifdef CONFIG_SMP
3665         do {
3666                 u32 divider = get_pelt_divider(&se->avg);
3667
3668                 se->avg.load_avg = div_u64(se_weight(se) * se->avg.load_sum, divider);
3669         } while (0);
3670 #endif
3671
3672         enqueue_load_avg(cfs_rq, se);
3673         if (se->on_rq) {
3674                 update_load_add(&cfs_rq->load, se->load.weight);
3675                 if (cfs_rq->curr != se)
3676                         avg_vruntime_add(cfs_rq, se);
3677         }
3678 }
3679
3680 void reweight_task(struct task_struct *p, int prio)
3681 {
3682         struct sched_entity *se = &p->se;
3683         struct cfs_rq *cfs_rq = cfs_rq_of(se);
3684         struct load_weight *load = &se->load;
3685         unsigned long weight = scale_load(sched_prio_to_weight[prio]);
3686
3687         reweight_entity(cfs_rq, se, weight);
3688         load->inv_weight = sched_prio_to_wmult[prio];
3689 }
3690
3691 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq);
3692
3693 #ifdef CONFIG_FAIR_GROUP_SCHED
3694 #ifdef CONFIG_SMP
3695 /*
3696  * All this does is approximate the hierarchical proportion which includes that
3697  * global sum we all love to hate.
3698  *
3699  * That is, the weight of a group entity, is the proportional share of the
3700  * group weight based on the group runqueue weights. That is:
3701  *
3702  *                     tg->weight * grq->load.weight
3703  *   ge->load.weight = -----------------------------               (1)
3704  *                       \Sum grq->load.weight
3705  *
3706  * Now, because computing that sum is prohibitively expensive to compute (been
3707  * there, done that) we approximate it with this average stuff. The average
3708  * moves slower and therefore the approximation is cheaper and more stable.
3709  *
3710  * So instead of the above, we substitute:
3711  *
3712  *   grq->load.weight -> grq->avg.load_avg                         (2)
3713  *
3714  * which yields the following:
3715  *
3716  *                     tg->weight * grq->avg.load_avg
3717  *   ge->load.weight = ------------------------------              (3)
3718  *                             tg->load_avg
3719  *
3720  * Where: tg->load_avg ~= \Sum grq->avg.load_avg
3721  *
3722  * That is shares_avg, and it is right (given the approximation (2)).
3723  *
3724  * The problem with it is that because the average is slow -- it was designed
3725  * to be exactly that of course -- this leads to transients in boundary
3726  * conditions. In specific, the case where the group was idle and we start the
3727  * one task. It takes time for our CPU's grq->avg.load_avg to build up,
3728  * yielding bad latency etc..
3729  *
3730  * Now, in that special case (1) reduces to:
3731  *
3732  *                     tg->weight * grq->load.weight
3733  *   ge->load.weight = ----------------------------- = tg->weight   (4)
3734  *                         grp->load.weight
3735  *
3736  * That is, the sum collapses because all other CPUs are idle; the UP scenario.
3737  *
3738  * So what we do is modify our approximation (3) to approach (4) in the (near)
3739  * UP case, like:
3740  *
3741  *   ge->load.weight =
3742  *
3743  *              tg->weight * grq->load.weight
3744  *     ---------------------------------------------------         (5)
3745  *     tg->load_avg - grq->avg.load_avg + grq->load.weight
3746  *
3747  * But because grq->load.weight can drop to 0, resulting in a divide by zero,
3748  * we need to use grq->avg.load_avg as its lower bound, which then gives:
3749  *
3750  *
3751  *                     tg->weight * grq->load.weight
3752  *   ge->load.weight = -----------------------------               (6)
3753  *                             tg_load_avg'
3754  *
3755  * Where:
3756  *
3757  *   tg_load_avg' = tg->load_avg - grq->avg.load_avg +
3758  *                  max(grq->load.weight, grq->avg.load_avg)
3759  *
3760  * And that is shares_weight and is icky. In the (near) UP case it approaches
3761  * (4) while in the normal case it approaches (3). It consistently
3762  * overestimates the ge->load.weight and therefore:
3763  *
3764  *   \Sum ge->load.weight >= tg->weight
3765  *
3766  * hence icky!
3767  */
3768 static long calc_group_shares(struct cfs_rq *cfs_rq)
3769 {
3770         long tg_weight, tg_shares, load, shares;
3771         struct task_group *tg = cfs_rq->tg;
3772
3773         tg_shares = READ_ONCE(tg->shares);
3774
3775         load = max(scale_load_down(cfs_rq->load.weight), cfs_rq->avg.load_avg);
3776
3777         tg_weight = atomic_long_read(&tg->load_avg);
3778
3779         /* Ensure tg_weight >= load */
3780         tg_weight -= cfs_rq->tg_load_avg_contrib;
3781         tg_weight += load;
3782
3783         shares = (tg_shares * load);
3784         if (tg_weight)
3785                 shares /= tg_weight;
3786
3787         /*
3788          * MIN_SHARES has to be unscaled here to support per-CPU partitioning
3789          * of a group with small tg->shares value. It is a floor value which is
3790          * assigned as a minimum load.weight to the sched_entity representing
3791          * the group on a CPU.
3792          *
3793          * E.g. on 64-bit for a group with tg->shares of scale_load(15)=15*1024
3794          * on an 8-core system with 8 tasks each runnable on one CPU shares has
3795          * to be 15*1024*1/8=1920 instead of scale_load(MIN_SHARES)=2*1024. In
3796          * case no task is runnable on a CPU MIN_SHARES=2 should be returned
3797          * instead of 0.
3798          */
3799         return clamp_t(long, shares, MIN_SHARES, tg_shares);
3800 }
3801 #endif /* CONFIG_SMP */
3802
3803 /*
3804  * Recomputes the group entity based on the current state of its group
3805  * runqueue.
3806  */
3807 static void update_cfs_group(struct sched_entity *se)
3808 {
3809         struct cfs_rq *gcfs_rq = group_cfs_rq(se);
3810         long shares;
3811
3812         if (!gcfs_rq)
3813                 return;
3814
3815         if (throttled_hierarchy(gcfs_rq))
3816                 return;
3817
3818 #ifndef CONFIG_SMP
3819         shares = READ_ONCE(gcfs_rq->tg->shares);
3820
3821         if (likely(se->load.weight == shares))
3822                 return;
3823 #else
3824         shares   = calc_group_shares(gcfs_rq);
3825 #endif
3826
3827         reweight_entity(cfs_rq_of(se), se, shares);
3828 }
3829
3830 #else /* CONFIG_FAIR_GROUP_SCHED */
3831 static inline void update_cfs_group(struct sched_entity *se)
3832 {
3833 }
3834 #endif /* CONFIG_FAIR_GROUP_SCHED */
3835
3836 static inline void cfs_rq_util_change(struct cfs_rq *cfs_rq, int flags)
3837 {
3838         struct rq *rq = rq_of(cfs_rq);
3839
3840         if (&rq->cfs == cfs_rq) {
3841                 /*
3842                  * There are a few boundary cases this might miss but it should
3843                  * get called often enough that that should (hopefully) not be
3844                  * a real problem.
3845                  *
3846                  * It will not get called when we go idle, because the idle
3847                  * thread is a different class (!fair), nor will the utilization
3848                  * number include things like RT tasks.
3849                  *
3850                  * As is, the util number is not freq-invariant (we'd have to
3851                  * implement arch_scale_freq_capacity() for that).
3852                  *
3853                  * See cpu_util_cfs().
3854                  */
3855                 cpufreq_update_util(rq, flags);
3856         }
3857 }
3858
3859 #ifdef CONFIG_SMP
3860 static inline bool load_avg_is_decayed(struct sched_avg *sa)
3861 {
3862         if (sa->load_sum)
3863                 return false;
3864
3865         if (sa->util_sum)
3866                 return false;
3867
3868         if (sa->runnable_sum)
3869                 return false;
3870
3871         /*
3872          * _avg must be null when _sum are null because _avg = _sum / divider
3873          * Make sure that rounding and/or propagation of PELT values never
3874          * break this.
3875          */
3876         SCHED_WARN_ON(sa->load_avg ||
3877                       sa->util_avg ||
3878                       sa->runnable_avg);
3879
3880         return true;
3881 }
3882
3883 static inline u64 cfs_rq_last_update_time(struct cfs_rq *cfs_rq)
3884 {
3885         return u64_u32_load_copy(cfs_rq->avg.last_update_time,
3886                                  cfs_rq->last_update_time_copy);
3887 }
3888 #ifdef CONFIG_FAIR_GROUP_SCHED
3889 /*
3890  * Because list_add_leaf_cfs_rq always places a child cfs_rq on the list
3891  * immediately before a parent cfs_rq, and cfs_rqs are removed from the list
3892  * bottom-up, we only have to test whether the cfs_rq before us on the list
3893  * is our child.
3894  * If cfs_rq is not on the list, test whether a child needs its to be added to
3895  * connect a branch to the tree  * (see list_add_leaf_cfs_rq() for details).
3896  */
3897 static inline bool child_cfs_rq_on_list(struct cfs_rq *cfs_rq)
3898 {
3899         struct cfs_rq *prev_cfs_rq;
3900         struct list_head *prev;
3901
3902         if (cfs_rq->on_list) {
3903                 prev = cfs_rq->leaf_cfs_rq_list.prev;
3904         } else {
3905                 struct rq *rq = rq_of(cfs_rq);
3906
3907                 prev = rq->tmp_alone_branch;
3908         }
3909
3910         prev_cfs_rq = container_of(prev, struct cfs_rq, leaf_cfs_rq_list);
3911
3912         return (prev_cfs_rq->tg->parent == cfs_rq->tg);
3913 }
3914
3915 static inline bool cfs_rq_is_decayed(struct cfs_rq *cfs_rq)
3916 {
3917         if (cfs_rq->load.weight)
3918                 return false;
3919
3920         if (!load_avg_is_decayed(&cfs_rq->avg))
3921                 return false;
3922
3923         if (child_cfs_rq_on_list(cfs_rq))
3924                 return false;
3925
3926         return true;
3927 }
3928
3929 /**
3930  * update_tg_load_avg - update the tg's load avg
3931  * @cfs_rq: the cfs_rq whose avg changed
3932  *
3933  * This function 'ensures': tg->load_avg := \Sum tg->cfs_rq[]->avg.load.
3934  * However, because tg->load_avg is a global value there are performance
3935  * considerations.
3936  *
3937  * In order to avoid having to look at the other cfs_rq's, we use a
3938  * differential update where we store the last value we propagated. This in
3939  * turn allows skipping updates if the differential is 'small'.
3940  *
3941  * Updating tg's load_avg is necessary before update_cfs_share().
3942  */
3943 static inline void update_tg_load_avg(struct cfs_rq *cfs_rq)
3944 {
3945         long delta = cfs_rq->avg.load_avg - cfs_rq->tg_load_avg_contrib;
3946
3947         /*
3948          * No need to update load_avg for root_task_group as it is not used.
3949          */
3950         if (cfs_rq->tg == &root_task_group)
3951                 return;
3952
3953         if (abs(delta) > cfs_rq->tg_load_avg_contrib / 64) {
3954                 atomic_long_add(delta, &cfs_rq->tg->load_avg);
3955                 cfs_rq->tg_load_avg_contrib = cfs_rq->avg.load_avg;
3956         }
3957 }
3958
3959 /*
3960  * Called within set_task_rq() right before setting a task's CPU. The
3961  * caller only guarantees p->pi_lock is held; no other assumptions,
3962  * including the state of rq->lock, should be made.
3963  */
3964 void set_task_rq_fair(struct sched_entity *se,
3965                       struct cfs_rq *prev, struct cfs_rq *next)
3966 {
3967         u64 p_last_update_time;
3968         u64 n_last_update_time;
3969
3970         if (!sched_feat(ATTACH_AGE_LOAD))
3971                 return;
3972
3973         /*
3974          * We are supposed to update the task to "current" time, then its up to
3975          * date and ready to go to new CPU/cfs_rq. But we have difficulty in
3976          * getting what current time is, so simply throw away the out-of-date
3977          * time. This will result in the wakee task is less decayed, but giving
3978          * the wakee more load sounds not bad.
3979          */
3980         if (!(se->avg.last_update_time && prev))
3981                 return;
3982
3983         p_last_update_time = cfs_rq_last_update_time(prev);
3984         n_last_update_time = cfs_rq_last_update_time(next);
3985
3986         __update_load_avg_blocked_se(p_last_update_time, se);
3987         se->avg.last_update_time = n_last_update_time;
3988 }
3989
3990 /*
3991  * When on migration a sched_entity joins/leaves the PELT hierarchy, we need to
3992  * propagate its contribution. The key to this propagation is the invariant
3993  * that for each group:
3994  *
3995  *   ge->avg == grq->avg                                                (1)
3996  *
3997  * _IFF_ we look at the pure running and runnable sums. Because they
3998  * represent the very same entity, just at different points in the hierarchy.
3999  *
4000  * Per the above update_tg_cfs_util() and update_tg_cfs_runnable() are trivial
4001  * and simply copies the running/runnable sum over (but still wrong, because
4002  * the group entity and group rq do not have their PELT windows aligned).
4003  *
4004  * However, update_tg_cfs_load() is more complex. So we have:
4005  *
4006  *   ge->avg.load_avg = ge->load.weight * ge->avg.runnable_avg          (2)
4007  *
4008  * And since, like util, the runnable part should be directly transferable,
4009  * the following would _appear_ to be the straight forward approach:
4010  *
4011  *   grq->avg.load_avg = grq->load.weight * grq->avg.runnable_avg       (3)
4012  *
4013  * And per (1) we have:
4014  *
4015  *   ge->avg.runnable_avg == grq->avg.runnable_avg
4016  *
4017  * Which gives:
4018  *
4019  *                      ge->load.weight * grq->avg.load_avg
4020  *   ge->avg.load_avg = -----------------------------------             (4)
4021  *                               grq->load.weight
4022  *
4023  * Except that is wrong!
4024  *
4025  * Because while for entities historical weight is not important and we
4026  * really only care about our future and therefore can consider a pure
4027  * runnable sum, runqueues can NOT do this.
4028  *
4029  * We specifically want runqueues to have a load_avg that includes
4030  * historical weights. Those represent the blocked load, the load we expect
4031  * to (shortly) return to us. This only works by keeping the weights as
4032  * integral part of the sum. We therefore cannot decompose as per (3).
4033  *
4034  * Another reason this doesn't work is that runnable isn't a 0-sum entity.
4035  * Imagine a rq with 2 tasks that each are runnable 2/3 of the time. Then the
4036  * rq itself is runnable anywhere between 2/3 and 1 depending on how the
4037  * runnable section of these tasks overlap (or not). If they were to perfectly
4038  * align the rq as a whole would be runnable 2/3 of the time. If however we
4039  * always have at least 1 runnable task, the rq as a whole is always runnable.
4040  *
4041  * So we'll have to approximate.. :/
4042  *
4043  * Given the constraint:
4044  *
4045  *   ge->avg.running_sum <= ge->avg.runnable_sum <= LOAD_AVG_MAX
4046  *
4047  * We can construct a rule that adds runnable to a rq by assuming minimal
4048  * overlap.
4049  *
4050  * On removal, we'll assume each task is equally runnable; which yields:
4051  *
4052  *   grq->avg.runnable_sum = grq->avg.load_sum / grq->load.weight
4053  *
4054  * XXX: only do this for the part of runnable > running ?
4055  *
4056  */
4057 static inline void
4058 update_tg_cfs_util(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq *gcfs_rq)
4059 {
4060         long delta_sum, delta_avg = gcfs_rq->avg.util_avg - se->avg.util_avg;
4061         u32 new_sum, divider;
4062
4063         /* Nothing to update */
4064         if (!delta_avg)
4065                 return;
4066
4067         /*
4068          * cfs_rq->avg.period_contrib can be used for both cfs_rq and se.
4069          * See ___update_load_avg() for details.
4070          */
4071         divider = get_pelt_divider(&cfs_rq->avg);
4072
4073
4074         /* Set new sched_entity's utilization */
4075         se->avg.util_avg = gcfs_rq->avg.util_avg;
4076         new_sum = se->avg.util_avg * divider;
4077         delta_sum = (long)new_sum - (long)se->avg.util_sum;
4078         se->avg.util_sum = new_sum;
4079
4080         /* Update parent cfs_rq utilization */
4081         add_positive(&cfs_rq->avg.util_avg, delta_avg);
4082         add_positive(&cfs_rq->avg.util_sum, delta_sum);
4083
4084         /* See update_cfs_rq_load_avg() */
4085         cfs_rq->avg.util_sum = max_t(u32, cfs_rq->avg.util_sum,
4086                                           cfs_rq->avg.util_avg * PELT_MIN_DIVIDER);
4087 }
4088
4089 static inline void
4090 update_tg_cfs_runnable(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq *gcfs_rq)
4091 {
4092         long delta_sum, delta_avg = gcfs_rq->avg.runnable_avg - se->avg.runnable_avg;
4093         u32 new_sum, divider;
4094
4095         /* Nothing to update */
4096         if (!delta_avg)
4097                 return;
4098
4099         /*
4100          * cfs_rq->avg.period_contrib can be used for both cfs_rq and se.
4101          * See ___update_load_avg() for details.
4102          */
4103         divider = get_pelt_divider(&cfs_rq->avg);
4104
4105         /* Set new sched_entity's runnable */
4106         se->avg.runnable_avg = gcfs_rq->avg.runnable_avg;
4107         new_sum = se->avg.runnable_avg * divider;
4108         delta_sum = (long)new_sum - (long)se->avg.runnable_sum;
4109         se->avg.runnable_sum = new_sum;
4110
4111         /* Update parent cfs_rq runnable */
4112         add_positive(&cfs_rq->avg.runnable_avg, delta_avg);
4113         add_positive(&cfs_rq->avg.runnable_sum, delta_sum);
4114         /* See update_cfs_rq_load_avg() */
4115         cfs_rq->avg.runnable_sum = max_t(u32, cfs_rq->avg.runnable_sum,
4116                                               cfs_rq->avg.runnable_avg * PELT_MIN_DIVIDER);
4117 }
4118
4119 static inline void
4120 update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq *gcfs_rq)
4121 {
4122         long delta_avg, running_sum, runnable_sum = gcfs_rq->prop_runnable_sum;
4123         unsigned long load_avg;
4124         u64 load_sum = 0;
4125         s64 delta_sum;
4126         u32 divider;
4127
4128         if (!runnable_sum)
4129                 return;
4130
4131         gcfs_rq->prop_runnable_sum = 0;
4132
4133         /*
4134          * cfs_rq->avg.period_contrib can be used for both cfs_rq and se.
4135          * See ___update_load_avg() for details.
4136          */
4137         divider = get_pelt_divider(&cfs_rq->avg);
4138
4139         if (runnable_sum >= 0) {
4140                 /*
4141                  * Add runnable; clip at LOAD_AVG_MAX. Reflects that until
4142                  * the CPU is saturated running == runnable.
4143                  */
4144                 runnable_sum += se->avg.load_sum;
4145                 runnable_sum = min_t(long, runnable_sum, divider);
4146         } else {
4147                 /*
4148                  * Estimate the new unweighted runnable_sum of the gcfs_rq by
4149                  * assuming all tasks are equally runnable.
4150                  */
4151                 if (scale_load_down(gcfs_rq->load.weight)) {
4152                         load_sum = div_u64(gcfs_rq->avg.load_sum,
4153                                 scale_load_down(gcfs_rq->load.weight));
4154                 }
4155
4156                 /* But make sure to not inflate se's runnable */
4157                 runnable_sum = min(se->avg.load_sum, load_sum);
4158         }
4159
4160         /*
4161          * runnable_sum can't be lower than running_sum
4162          * Rescale running sum to be in the same range as runnable sum
4163          * running_sum is in [0 : LOAD_AVG_MAX <<  SCHED_CAPACITY_SHIFT]
4164          * runnable_sum is in [0 : LOAD_AVG_MAX]
4165          */
4166         running_sum = se->avg.util_sum >> SCHED_CAPACITY_SHIFT;
4167         runnable_sum = max(runnable_sum, running_sum);
4168
4169         load_sum = se_weight(se) * runnable_sum;
4170         load_avg = div_u64(load_sum, divider);
4171
4172         delta_avg = load_avg - se->avg.load_avg;
4173         if (!delta_avg)
4174                 return;
4175
4176         delta_sum = load_sum - (s64)se_weight(se) * se->avg.load_sum;
4177
4178         se->avg.load_sum = runnable_sum;
4179         se->avg.load_avg = load_avg;
4180         add_positive(&cfs_rq->avg.load_avg, delta_avg);
4181         add_positive(&cfs_rq->avg.load_sum, delta_sum);
4182         /* See update_cfs_rq_load_avg() */
4183         cfs_rq->avg.load_sum = max_t(u32, cfs_rq->avg.load_sum,
4184                                           cfs_rq->avg.load_avg * PELT_MIN_DIVIDER);
4185 }
4186
4187 static inline void add_tg_cfs_propagate(struct cfs_rq *cfs_rq, long runnable_sum)
4188 {
4189         cfs_rq->propagate = 1;
4190         cfs_rq->prop_runnable_sum += runnable_sum;
4191 }
4192
4193 /* Update task and its cfs_rq load average */
4194 static inline int propagate_entity_load_avg(struct sched_entity *se)
4195 {
4196         struct cfs_rq *cfs_rq, *gcfs_rq;
4197
4198         if (entity_is_task(se))
4199                 return 0;
4200
4201         gcfs_rq = group_cfs_rq(se);
4202         if (!gcfs_rq->propagate)
4203                 return 0;
4204
4205         gcfs_rq->propagate = 0;
4206
4207         cfs_rq = cfs_rq_of(se);
4208
4209         add_tg_cfs_propagate(cfs_rq, gcfs_rq->prop_runnable_sum);
4210
4211         update_tg_cfs_util(cfs_rq, se, gcfs_rq);
4212         update_tg_cfs_runnable(cfs_rq, se, gcfs_rq);
4213         update_tg_cfs_load(cfs_rq, se, gcfs_rq);
4214
4215         trace_pelt_cfs_tp(cfs_rq);
4216         trace_pelt_se_tp(se);
4217
4218         return 1;
4219 }
4220
4221 /*
4222  * Check if we need to update the load and the utilization of a blocked
4223  * group_entity:
4224  */
4225 static inline bool skip_blocked_update(struct sched_entity *se)
4226 {
4227         struct cfs_rq *gcfs_rq = group_cfs_rq(se);
4228
4229         /*
4230          * If sched_entity still have not zero load or utilization, we have to
4231          * decay it:
4232          */
4233         if (se->avg.load_avg || se->avg.util_avg)
4234                 return false;
4235
4236         /*
4237          * If there is a pending propagation, we have to update the load and
4238          * the utilization of the sched_entity:
4239          */
4240         if (gcfs_rq->propagate)
4241                 return false;
4242
4243         /*
4244          * Otherwise, the load and the utilization of the sched_entity is
4245          * already zero and there is no pending propagation, so it will be a
4246          * waste of time to try to decay it:
4247          */
4248         return true;
4249 }
4250
4251 #else /* CONFIG_FAIR_GROUP_SCHED */
4252
4253 static inline void update_tg_load_avg(struct cfs_rq *cfs_rq) {}
4254
4255 static inline int propagate_entity_load_avg(struct sched_entity *se)
4256 {
4257         return 0;
4258 }
4259
4260 static inline void add_tg_cfs_propagate(struct cfs_rq *cfs_rq, long runnable_sum) {}
4261
4262 #endif /* CONFIG_FAIR_GROUP_SCHED */
4263
4264 #ifdef CONFIG_NO_HZ_COMMON
4265 static inline void migrate_se_pelt_lag(struct sched_entity *se)
4266 {
4267         u64 throttled = 0, now, lut;
4268         struct cfs_rq *cfs_rq;
4269         struct rq *rq;
4270         bool is_idle;
4271
4272         if (load_avg_is_decayed(&se->avg))
4273                 return;
4274
4275         cfs_rq = cfs_rq_of(se);
4276         rq = rq_of(cfs_rq);
4277
4278         rcu_read_lock();
4279         is_idle = is_idle_task(rcu_dereference(rq->curr));
4280         rcu_read_unlock();
4281
4282         /*
4283          * The lag estimation comes with a cost we don't want to pay all the
4284          * time. Hence, limiting to the case where the source CPU is idle and
4285          * we know we are at the greatest risk to have an outdated clock.
4286          */
4287         if (!is_idle)
4288                 return;
4289
4290         /*
4291          * Estimated "now" is: last_update_time + cfs_idle_lag + rq_idle_lag, where:
4292          *
4293          *   last_update_time (the cfs_rq's last_update_time)
4294          *      = cfs_rq_clock_pelt()@cfs_rq_idle
4295          *      = rq_clock_pelt()@cfs_rq_idle
4296          *        - cfs->throttled_clock_pelt_time@cfs_rq_idle
4297          *
4298          *   cfs_idle_lag (delta between rq's update and cfs_rq's update)
4299          *      = rq_clock_pelt()@rq_idle - rq_clock_pelt()@cfs_rq_idle
4300          *
4301          *   rq_idle_lag (delta between now and rq's update)
4302          *      = sched_clock_cpu() - rq_clock()@rq_idle
4303          *
4304          * We can then write:
4305          *
4306          *    now = rq_clock_pelt()@rq_idle - cfs->throttled_clock_pelt_time +
4307          *          sched_clock_cpu() - rq_clock()@rq_idle
4308          * Where:
4309          *      rq_clock_pelt()@rq_idle is rq->clock_pelt_idle
4310          *      rq_clock()@rq_idle      is rq->clock_idle
4311          *      cfs->throttled_clock_pelt_time@cfs_rq_idle
4312          *                              is cfs_rq->throttled_pelt_idle
4313          */
4314
4315 #ifdef CONFIG_CFS_BANDWIDTH
4316         throttled = u64_u32_load(cfs_rq->throttled_pelt_idle);
4317         /* The clock has been stopped for throttling */
4318         if (throttled == U64_MAX)
4319                 return;
4320 #endif
4321         now = u64_u32_load(rq->clock_pelt_idle);
4322         /*
4323          * Paired with _update_idle_rq_clock_pelt(). It ensures at the worst case
4324          * is observed the old clock_pelt_idle value and the new clock_idle,
4325          * which lead to an underestimation. The opposite would lead to an
4326          * overestimation.
4327          */
4328         smp_rmb();
4329         lut = cfs_rq_last_update_time(cfs_rq);
4330
4331         now -= throttled;
4332         if (now < lut)
4333                 /*
4334                  * cfs_rq->avg.last_update_time is more recent than our
4335                  * estimation, let's use it.
4336                  */
4337                 now = lut;
4338         else
4339                 now += sched_clock_cpu(cpu_of(rq)) - u64_u32_load(rq->clock_idle);
4340
4341         __update_load_avg_blocked_se(now, se);
4342 }
4343 #else
4344 static void migrate_se_pelt_lag(struct sched_entity *se) {}
4345 #endif
4346
4347 /**
4348  * update_cfs_rq_load_avg - update the cfs_rq's load/util averages
4349  * @now: current time, as per cfs_rq_clock_pelt()
4350  * @cfs_rq: cfs_rq to update
4351  *
4352  * The cfs_rq avg is the direct sum of all its entities (blocked and runnable)
4353  * avg. The immediate corollary is that all (fair) tasks must be attached.
4354  *
4355  * cfs_rq->avg is used for task_h_load() and update_cfs_share() for example.
4356  *
4357  * Return: true if the load decayed or we removed load.
4358  *
4359  * Since both these conditions indicate a changed cfs_rq->avg.load we should
4360  * call update_tg_load_avg() when this function returns true.
4361  */
4362 static inline int
4363 update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq)
4364 {
4365         unsigned long removed_load = 0, removed_util = 0, removed_runnable = 0;
4366         struct sched_avg *sa = &cfs_rq->avg;
4367         int decayed = 0;
4368
4369         if (cfs_rq->removed.nr) {
4370                 unsigned long r;
4371                 u32 divider = get_pelt_divider(&cfs_rq->avg);
4372
4373                 raw_spin_lock(&cfs_rq->removed.lock);
4374                 swap(cfs_rq->removed.util_avg, removed_util);
4375                 swap(cfs_rq->removed.load_avg, removed_load);
4376                 swap(cfs_rq->removed.runnable_avg, removed_runnable);
4377                 cfs_rq->removed.nr = 0;
4378                 raw_spin_unlock(&cfs_rq->removed.lock);
4379
4380                 r = removed_load;
4381                 sub_positive(&sa->load_avg, r);
4382                 sub_positive(&sa->load_sum, r * divider);
4383                 /* See sa->util_sum below */
4384                 sa->load_sum = max_t(u32, sa->load_sum, sa->load_avg * PELT_MIN_DIVIDER);
4385
4386                 r = removed_util;
4387                 sub_positive(&sa->util_avg, r);
4388                 sub_positive(&sa->util_sum, r * divider);
4389                 /*
4390                  * Because of rounding, se->util_sum might ends up being +1 more than
4391                  * cfs->util_sum. Although this is not a problem by itself, detaching
4392                  * a lot of tasks with the rounding problem between 2 updates of
4393                  * util_avg (~1ms) can make cfs->util_sum becoming null whereas
4394                  * cfs_util_avg is not.
4395                  * Check that util_sum is still above its lower bound for the new
4396                  * util_avg. Given that period_contrib might have moved since the last
4397                  * sync, we are only sure that util_sum must be above or equal to
4398                  *    util_avg * minimum possible divider
4399                  */
4400                 sa->util_sum = max_t(u32, sa->util_sum, sa->util_avg * PELT_MIN_DIVIDER);
4401
4402                 r = removed_runnable;
4403                 sub_positive(&sa->runnable_avg, r);
4404                 sub_positive(&sa->runnable_sum, r * divider);
4405                 /* See sa->util_sum above */
4406                 sa->runnable_sum = max_t(u32, sa->runnable_sum,
4407                                               sa->runnable_avg * PELT_MIN_DIVIDER);
4408
4409                 /*
4410                  * removed_runnable is the unweighted version of removed_load so we
4411                  * can use it to estimate removed_load_sum.
4412                  */
4413                 add_tg_cfs_propagate(cfs_rq,
4414                         -(long)(removed_runnable * divider) >> SCHED_CAPACITY_SHIFT);
4415
4416                 decayed = 1;
4417         }
4418
4419         decayed |= __update_load_avg_cfs_rq(now, cfs_rq);
4420         u64_u32_store_copy(sa->last_update_time,
4421                            cfs_rq->last_update_time_copy,
4422                            sa->last_update_time);
4423         return decayed;
4424 }
4425
4426 /**
4427  * attach_entity_load_avg - attach this entity to its cfs_rq load avg
4428  * @cfs_rq: cfs_rq to attach to
4429  * @se: sched_entity to attach
4430  *
4431  * Must call update_cfs_rq_load_avg() before this, since we rely on
4432  * cfs_rq->avg.last_update_time being current.
4433  */
4434 static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
4435 {
4436         /*
4437          * cfs_rq->avg.period_contrib can be used for both cfs_rq and se.
4438          * See ___update_load_avg() for details.
4439          */
4440         u32 divider = get_pelt_divider(&cfs_rq->avg);
4441
4442         /*
4443          * When we attach the @se to the @cfs_rq, we must align the decay
4444          * window because without that, really weird and wonderful things can
4445          * happen.
4446          *
4447          * XXX illustrate
4448          */
4449         se->avg.last_update_time = cfs_rq->avg.last_update_time;
4450         se->avg.period_contrib = cfs_rq->avg.period_contrib;
4451
4452         /*
4453          * Hell(o) Nasty stuff.. we need to recompute _sum based on the new
4454          * period_contrib. This isn't strictly correct, but since we're
4455          * entirely outside of the PELT hierarchy, nobody cares if we truncate
4456          * _sum a little.
4457          */
4458         se->avg.util_sum = se->avg.util_avg * divider;
4459
4460         se->avg.runnable_sum = se->avg.runnable_avg * divider;
4461
4462         se->avg.load_sum = se->avg.load_avg * divider;
4463         if (se_weight(se) < se->avg.load_sum)
4464                 se->avg.load_sum = div_u64(se->avg.load_sum, se_weight(se));
4465         else
4466                 se->avg.load_sum = 1;
4467
4468         enqueue_load_avg(cfs_rq, se);
4469         cfs_rq->avg.util_avg += se->avg.util_avg;
4470         cfs_rq->avg.util_sum += se->avg.util_sum;
4471         cfs_rq->avg.runnable_avg += se->avg.runnable_avg;
4472         cfs_rq->avg.runnable_sum += se->avg.runnable_sum;
4473
4474         add_tg_cfs_propagate(cfs_rq, se->avg.load_sum);
4475
4476         cfs_rq_util_change(cfs_rq, 0);
4477
4478         trace_pelt_cfs_tp(cfs_rq);
4479 }
4480
4481 /**
4482  * detach_entity_load_avg - detach this entity from its cfs_rq load avg
4483  * @cfs_rq: cfs_rq to detach from
4484  * @se: sched_entity to detach
4485  *
4486  * Must call update_cfs_rq_load_avg() before this, since we rely on
4487  * cfs_rq->avg.last_update_time being current.
4488  */
4489 static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
4490 {
4491         dequeue_load_avg(cfs_rq, se);
4492         sub_positive(&cfs_rq->avg.util_avg, se->avg.util_avg);
4493         sub_positive(&cfs_rq->avg.util_sum, se->avg.util_sum);
4494         /* See update_cfs_rq_load_avg() */
4495         cfs_rq->avg.util_sum = max_t(u32, cfs_rq->avg.util_sum,
4496                                           cfs_rq->avg.util_avg * PELT_MIN_DIVIDER);
4497
4498         sub_positive(&cfs_rq->avg.runnable_avg, se->avg.runnable_avg);
4499         sub_positive(&cfs_rq->avg.runnable_sum, se->avg.runnable_sum);
4500         /* See update_cfs_rq_load_avg() */
4501         cfs_rq->avg.runnable_sum = max_t(u32, cfs_rq->avg.runnable_sum,
4502                                               cfs_rq->avg.runnable_avg * PELT_MIN_DIVIDER);
4503
4504         add_tg_cfs_propagate(cfs_rq, -se->avg.load_sum);
4505
4506         cfs_rq_util_change(cfs_rq, 0);
4507
4508         trace_pelt_cfs_tp(cfs_rq);
4509 }
4510
4511 /*
4512  * Optional action to be done while updating the load average
4513  */
4514 #define UPDATE_TG       0x1
4515 #define SKIP_AGE_LOAD   0x2
4516 #define DO_ATTACH       0x4
4517 #define DO_DETACH       0x8
4518
4519 /* Update task and its cfs_rq load average */
4520 static inline void update_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
4521 {
4522         u64 now = cfs_rq_clock_pelt(cfs_rq);
4523         int decayed;
4524
4525         /*
4526          * Track task load average for carrying it to new CPU after migrated, and
4527          * track group sched_entity load average for task_h_load calc in migration
4528          */
4529         if (se->avg.last_update_time && !(flags & SKIP_AGE_LOAD))
4530                 __update_load_avg_se(now, cfs_rq, se);
4531
4532         decayed  = update_cfs_rq_load_avg(now, cfs_rq);
4533         decayed |= propagate_entity_load_avg(se);
4534
4535         if (!se->avg.last_update_time && (flags & DO_ATTACH)) {
4536
4537                 /*
4538                  * DO_ATTACH means we're here from enqueue_entity().
4539                  * !last_update_time means we've passed through
4540                  * migrate_task_rq_fair() indicating we migrated.
4541                  *
4542                  * IOW we're enqueueing a task on a new CPU.
4543                  */
4544                 attach_entity_load_avg(cfs_rq, se);
4545                 update_tg_load_avg(cfs_rq);
4546
4547         } else if (flags & DO_DETACH) {
4548                 /*
4549                  * DO_DETACH means we're here from dequeue_entity()
4550                  * and we are migrating task out of the CPU.
4551                  */
4552                 detach_entity_load_avg(cfs_rq, se);
4553                 update_tg_load_avg(cfs_rq);
4554         } else if (decayed) {
4555                 cfs_rq_util_change(cfs_rq, 0);
4556
4557                 if (flags & UPDATE_TG)
4558                         update_tg_load_avg(cfs_rq);
4559         }
4560 }
4561
4562 /*
4563  * Synchronize entity load avg of dequeued entity without locking
4564  * the previous rq.
4565  */
4566 static void sync_entity_load_avg(struct sched_entity *se)
4567 {
4568         struct cfs_rq *cfs_rq = cfs_rq_of(se);
4569         u64 last_update_time;
4570
4571         last_update_time = cfs_rq_last_update_time(cfs_rq);
4572         __update_load_avg_blocked_se(last_update_time, se);
4573 }
4574
4575 /*
4576  * Task first catches up with cfs_rq, and then subtract
4577  * itself from the cfs_rq (task must be off the queue now).
4578  */
4579 static void remove_entity_load_avg(struct sched_entity *se)
4580 {
4581         struct cfs_rq *cfs_rq = cfs_rq_of(se);
4582         unsigned long flags;
4583
4584         /*
4585          * tasks cannot exit without having gone through wake_up_new_task() ->
4586          * enqueue_task_fair() which will have added things to the cfs_rq,
4587          * so we can remove unconditionally.
4588          */
4589
4590         sync_entity_load_avg(se);
4591
4592         raw_spin_lock_irqsave(&cfs_rq->removed.lock, flags);
4593         ++cfs_rq->removed.nr;
4594         cfs_rq->removed.util_avg        += se->avg.util_avg;
4595         cfs_rq->removed.load_avg        += se->avg.load_avg;
4596         cfs_rq->removed.runnable_avg    += se->avg.runnable_avg;
4597         raw_spin_unlock_irqrestore(&cfs_rq->removed.lock, flags);
4598 }
4599
4600 static inline unsigned long cfs_rq_runnable_avg(struct cfs_rq *cfs_rq)
4601 {
4602         return cfs_rq->avg.runnable_avg;
4603 }
4604
4605 static inline unsigned long cfs_rq_load_avg(struct cfs_rq *cfs_rq)
4606 {
4607         return cfs_rq->avg.load_avg;
4608 }
4609
4610 static int newidle_balance(struct rq *this_rq, struct rq_flags *rf);
4611
4612 static inline unsigned long task_util(struct task_struct *p)
4613 {
4614         return READ_ONCE(p->se.avg.util_avg);
4615 }
4616
4617 static inline unsigned long _task_util_est(struct task_struct *p)
4618 {
4619         struct util_est ue = READ_ONCE(p->se.avg.util_est);
4620
4621         return max(ue.ewma, (ue.enqueued & ~UTIL_AVG_UNCHANGED));
4622 }
4623
4624 static inline unsigned long task_util_est(struct task_struct *p)
4625 {
4626         return max(task_util(p), _task_util_est(p));
4627 }
4628
4629 static inline void util_est_enqueue(struct cfs_rq *cfs_rq,
4630                                     struct task_struct *p)
4631 {
4632         unsigned int enqueued;
4633
4634         if (!sched_feat(UTIL_EST))
4635                 return;
4636
4637         /* Update root cfs_rq's estimated utilization */
4638         enqueued  = cfs_rq->avg.util_est.enqueued;
4639         enqueued += _task_util_est(p);
4640         WRITE_ONCE(cfs_rq->avg.util_est.enqueued, enqueued);
4641
4642         trace_sched_util_est_cfs_tp(cfs_rq);
4643 }
4644
4645 static inline void util_est_dequeue(struct cfs_rq *cfs_rq,
4646                                     struct task_struct *p)
4647 {
4648         unsigned int enqueued;
4649
4650         if (!sched_feat(UTIL_EST))
4651                 return;
4652
4653         /* Update root cfs_rq's estimated utilization */
4654         enqueued  = cfs_rq->avg.util_est.enqueued;
4655         enqueued -= min_t(unsigned int, enqueued, _task_util_est(p));
4656         WRITE_ONCE(cfs_rq->avg.util_est.enqueued, enqueued);
4657
4658         trace_sched_util_est_cfs_tp(cfs_rq);
4659 }
4660
4661 #define UTIL_EST_MARGIN (SCHED_CAPACITY_SCALE / 100)
4662
4663 /*
4664  * Check if a (signed) value is within a specified (unsigned) margin,
4665  * based on the observation that:
4666  *
4667  *     abs(x) < y := (unsigned)(x + y - 1) < (2 * y - 1)
4668  *
4669  * NOTE: this only works when value + margin < INT_MAX.
4670  */
4671 static inline bool within_margin(int value, int margin)
4672 {
4673         return ((unsigned int)(value + margin - 1) < (2 * margin - 1));
4674 }
4675
4676 static inline void util_est_update(struct cfs_rq *cfs_rq,
4677                                    struct task_struct *p,
4678                                    bool task_sleep)
4679 {
4680         long last_ewma_diff, last_enqueued_diff;
4681         struct util_est ue;
4682
4683         if (!sched_feat(UTIL_EST))
4684                 return;
4685
4686         /*
4687          * Skip update of task's estimated utilization when the task has not
4688          * yet completed an activation, e.g. being migrated.
4689          */
4690         if (!task_sleep)
4691                 return;
4692
4693         /*
4694          * If the PELT values haven't changed since enqueue time,
4695          * skip the util_est update.
4696          */
4697         ue = p->se.avg.util_est;
4698         if (ue.enqueued & UTIL_AVG_UNCHANGED)
4699                 return;
4700
4701         last_enqueued_diff = ue.enqueued;
4702
4703         /*
4704          * Reset EWMA on utilization increases, the moving average is used only
4705          * to smooth utilization decreases.
4706          */
4707         ue.enqueued = task_util(p);
4708         if (sched_feat(UTIL_EST_FASTUP)) {
4709                 if (ue.ewma < ue.enqueued) {
4710                         ue.ewma = ue.enqueued;
4711                         goto done;
4712                 }
4713         }
4714
4715         /*
4716          * Skip update of task's estimated utilization when its members are
4717          * already ~1% close to its last activation value.
4718          */
4719         last_ewma_diff = ue.enqueued - ue.ewma;
4720         last_enqueued_diff -= ue.enqueued;
4721         if (within_margin(last_ewma_diff, UTIL_EST_MARGIN)) {
4722                 if (!within_margin(last_enqueued_diff, UTIL_EST_MARGIN))
4723                         goto done;
4724
4725                 return;
4726         }
4727
4728         /*
4729          * To avoid overestimation of actual task utilization, skip updates if
4730          * we cannot grant there is idle time in this CPU.
4731          */
4732         if (task_util(p) > capacity_orig_of(cpu_of(rq_of(cfs_rq))))
4733                 return;
4734
4735         /*
4736          * Update Task's estimated utilization
4737          *
4738          * When *p completes an activation we can consolidate another sample
4739          * of the task size. This is done by storing the current PELT value
4740          * as ue.enqueued and by using this value to update the Exponential
4741          * Weighted Moving Average (EWMA):
4742          *
4743          *  ewma(t) = w *  task_util(p) + (1-w) * ewma(t-1)
4744          *          = w *  task_util(p) +         ewma(t-1)  - w * ewma(t-1)
4745          *          = w * (task_util(p) -         ewma(t-1)) +     ewma(t-1)
4746          *          = w * (      last_ewma_diff            ) +     ewma(t-1)
4747          *          = w * (last_ewma_diff  +  ewma(t-1) / w)
4748          *
4749          * Where 'w' is the weight of new samples, which is configured to be
4750          * 0.25, thus making w=1/4 ( >>= UTIL_EST_WEIGHT_SHIFT)
4751          */
4752         ue.ewma <<= UTIL_EST_WEIGHT_SHIFT;
4753         ue.ewma  += last_ewma_diff;
4754         ue.ewma >>= UTIL_EST_WEIGHT_SHIFT;
4755 done:
4756         ue.enqueued |= UTIL_AVG_UNCHANGED;
4757         WRITE_ONCE(p->se.avg.util_est, ue);
4758
4759         trace_sched_util_est_se_tp(&p->se);
4760 }
4761
4762 static inline int util_fits_cpu(unsigned long util,
4763                                 unsigned long uclamp_min,
4764                                 unsigned long uclamp_max,
4765                                 int cpu)
4766 {
4767         unsigned long capacity_orig, capacity_orig_thermal;
4768         unsigned long capacity = capacity_of(cpu);
4769         bool fits, uclamp_max_fits;
4770
4771         /*
4772          * Check if the real util fits without any uclamp boost/cap applied.
4773          */
4774         fits = fits_capacity(util, capacity);
4775
4776         if (!uclamp_is_used())
4777                 return fits;
4778
4779         /*
4780          * We must use capacity_orig_of() for comparing against uclamp_min and
4781          * uclamp_max. We only care about capacity pressure (by using
4782          * capacity_of()) for comparing against the real util.
4783          *
4784          * If a task is boosted to 1024 for example, we don't want a tiny
4785          * pressure to skew the check whether it fits a CPU or not.
4786          *
4787          * Similarly if a task is capped to capacity_orig_of(little_cpu), it
4788          * should fit a little cpu even if there's some pressure.
4789          *
4790          * Only exception is for thermal pressure since it has a direct impact
4791          * on available OPP of the system.
4792          *
4793          * We honour it for uclamp_min only as a drop in performance level
4794          * could result in not getting the requested minimum performance level.
4795          *
4796          * For uclamp_max, we can tolerate a drop in performance level as the
4797          * goal is to cap the task. So it's okay if it's getting less.
4798          */
4799         capacity_orig = capacity_orig_of(cpu);
4800         capacity_orig_thermal = capacity_orig - arch_scale_thermal_pressure(cpu);
4801
4802         /*
4803          * We want to force a task to fit a cpu as implied by uclamp_max.
4804          * But we do have some corner cases to cater for..
4805          *
4806          *
4807          *                                 C=z
4808          *   |                             ___
4809          *   |                  C=y       |   |
4810          *   |_ _ _ _ _ _ _ _ _ ___ _ _ _ | _ | _ _ _ _ _  uclamp_max
4811          *   |      C=x        |   |      |   |
4812          *   |      ___        |   |      |   |
4813          *   |     |   |       |   |      |   |    (util somewhere in this region)
4814          *   |     |   |       |   |      |   |
4815          *   |     |   |       |   |      |   |
4816          *   +----------------------------------------
4817          *         cpu0        cpu1       cpu2
4818          *
4819          *   In the above example if a task is capped to a specific performance
4820          *   point, y, then when:
4821          *
4822          *   * util = 80% of x then it does not fit on cpu0 and should migrate
4823          *     to cpu1
4824          *   * util = 80% of y then it is forced to fit on cpu1 to honour
4825          *     uclamp_max request.
4826          *
4827          *   which is what we're enforcing here. A task always fits if
4828          *   uclamp_max <= capacity_orig. But when uclamp_max > capacity_orig,
4829          *   the normal upmigration rules should withhold still.
4830          *
4831          *   Only exception is when we are on max capacity, then we need to be
4832          *   careful not to block overutilized state. This is so because:
4833          *
4834          *     1. There's no concept of capping at max_capacity! We can't go
4835          *        beyond this performance level anyway.
4836          *     2. The system is being saturated when we're operating near
4837          *        max capacity, it doesn't make sense to block overutilized.
4838          */
4839         uclamp_max_fits = (capacity_orig == SCHED_CAPACITY_SCALE) && (uclamp_max == SCHED_CAPACITY_SCALE);
4840         uclamp_max_fits = !uclamp_max_fits && (uclamp_max <= capacity_orig);
4841         fits = fits || uclamp_max_fits;
4842
4843         /*
4844          *
4845          *                                 C=z
4846          *   |                             ___       (region a, capped, util >= uclamp_max)
4847          *   |                  C=y       |   |
4848          *   |_ _ _ _ _ _ _ _ _ ___ _ _ _ | _ | _ _ _ _ _ uclamp_max
4849          *   |      C=x        |   |      |   |
4850          *   |      ___        |   |      |   |      (region b, uclamp_min <= util <= uclamp_max)
4851          *   |_ _ _|_ _|_ _ _ _| _ | _ _ _| _ | _ _ _ _ _ uclamp_min
4852          *   |     |   |       |   |      |   |
4853          *   |     |   |       |   |      |   |      (region c, boosted, util < uclamp_min)
4854          *   +----------------------------------------
4855          *         cpu0        cpu1       cpu2
4856          *
4857          * a) If util > uclamp_max, then we're capped, we don't care about
4858          *    actual fitness value here. We only care if uclamp_max fits
4859          *    capacity without taking margin/pressure into account.
4860          *    See comment above.
4861          *
4862          * b) If uclamp_min <= util <= uclamp_max, then the normal
4863          *    fits_capacity() rules apply. Except we need to ensure that we
4864          *    enforce we remain within uclamp_max, see comment above.
4865          *
4866          * c) If util < uclamp_min, then we are boosted. Same as (b) but we
4867          *    need to take into account the boosted value fits the CPU without
4868          *    taking margin/pressure into account.
4869          *
4870          * Cases (a) and (b) are handled in the 'fits' variable already. We
4871          * just need to consider an extra check for case (c) after ensuring we
4872          * handle the case uclamp_min > uclamp_max.
4873          */
4874         uclamp_min = min(uclamp_min, uclamp_max);
4875         if (fits && (util < uclamp_min) && (uclamp_min > capacity_orig_thermal))
4876                 return -1;
4877
4878         return fits;
4879 }
4880
4881 static inline int task_fits_cpu(struct task_struct *p, int cpu)
4882 {
4883         unsigned long uclamp_min = uclamp_eff_value(p, UCLAMP_MIN);
4884         unsigned long uclamp_max = uclamp_eff_value(p, UCLAMP_MAX);
4885         unsigned long util = task_util_est(p);
4886         /*
4887          * Return true only if the cpu fully fits the task requirements, which
4888          * include the utilization but also the performance hints.
4889          */
4890         return (util_fits_cpu(util, uclamp_min, uclamp_max, cpu) > 0);
4891 }
4892
4893 static inline void update_misfit_status(struct task_struct *p, struct rq *rq)
4894 {
4895         if (!sched_asym_cpucap_active())
4896                 return;
4897
4898         if (!p || p->nr_cpus_allowed == 1) {
4899                 rq->misfit_task_load = 0;
4900                 return;
4901         }
4902
4903         if (task_fits_cpu(p, cpu_of(rq))) {
4904                 rq->misfit_task_load = 0;
4905                 return;
4906         }
4907
4908         /*
4909          * Make sure that misfit_task_load will not be null even if
4910          * task_h_load() returns 0.
4911          */
4912         rq->misfit_task_load = max_t(unsigned long, task_h_load(p), 1);
4913 }
4914
4915 #else /* CONFIG_SMP */
4916
4917 static inline bool cfs_rq_is_decayed(struct cfs_rq *cfs_rq)
4918 {
4919         return !cfs_rq->nr_running;
4920 }
4921
4922 #define UPDATE_TG       0x0
4923 #define SKIP_AGE_LOAD   0x0
4924 #define DO_ATTACH       0x0
4925 #define DO_DETACH       0x0
4926
4927 static inline void update_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se, int not_used1)
4928 {
4929         cfs_rq_util_change(cfs_rq, 0);
4930 }
4931
4932 static inline void remove_entity_load_avg(struct sched_entity *se) {}
4933
4934 static inline void
4935 attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
4936 static inline void
4937 detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
4938
4939 static inline int newidle_balance(struct rq *rq, struct rq_flags *rf)
4940 {
4941         return 0;
4942 }
4943
4944 static inline void
4945 util_est_enqueue(struct cfs_rq *cfs_rq, struct task_struct *p) {}
4946
4947 static inline void
4948 util_est_dequeue(struct cfs_rq *cfs_rq, struct task_struct *p) {}
4949
4950 static inline void
4951 util_est_update(struct cfs_rq *cfs_rq, struct task_struct *p,
4952                 bool task_sleep) {}
4953 static inline void update_misfit_status(struct task_struct *p, struct rq *rq) {}
4954
4955 #endif /* CONFIG_SMP */
4956
4957 static void
4958 place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
4959 {
4960         u64 vslice, vruntime = avg_vruntime(cfs_rq);
4961         s64 lag = 0;
4962
4963         se->slice = sysctl_sched_base_slice;
4964         vslice = calc_delta_fair(se->slice, se);
4965
4966         /*
4967          * Due to how V is constructed as the weighted average of entities,
4968          * adding tasks with positive lag, or removing tasks with negative lag
4969          * will move 'time' backwards, this can screw around with the lag of
4970          * other tasks.
4971          *
4972          * EEVDF: placement strategy #1 / #2
4973          */
4974         if (sched_feat(PLACE_LAG) && cfs_rq->nr_running) {
4975                 struct sched_entity *curr = cfs_rq->curr;
4976                 unsigned long load;
4977
4978                 lag = se->vlag;
4979
4980                 /*
4981                  * If we want to place a task and preserve lag, we have to
4982                  * consider the effect of the new entity on the weighted
4983                  * average and compensate for this, otherwise lag can quickly
4984                  * evaporate.
4985                  *
4986                  * Lag is defined as:
4987                  *
4988                  *   lag_i = S - s_i = w_i * (V - v_i)
4989                  *
4990                  * To avoid the 'w_i' term all over the place, we only track
4991                  * the virtual lag:
4992                  *
4993                  *   vl_i = V - v_i <=> v_i = V - vl_i
4994                  *
4995                  * And we take V to be the weighted average of all v:
4996                  *
4997                  *   V = (\Sum w_j*v_j) / W
4998                  *
4999                  * Where W is: \Sum w_j
5000                  *
5001                  * Then, the weighted average after adding an entity with lag
5002                  * vl_i is given by:
5003                  *
5004                  *   V' = (\Sum w_j*v_j + w_i*v_i) / (W + w_i)
5005                  *      = (W*V + w_i*(V - vl_i)) / (W + w_i)
5006                  *      = (W*V + w_i*V - w_i*vl_i) / (W + w_i)
5007                  *      = (V*(W + w_i) - w_i*l) / (W + w_i)
5008                  *      = V - w_i*vl_i / (W + w_i)
5009                  *
5010                  * And the actual lag after adding an entity with vl_i is:
5011                  *
5012                  *   vl'_i = V' - v_i
5013                  *         = V - w_i*vl_i / (W + w_i) - (V - vl_i)
5014                  *         = vl_i - w_i*vl_i / (W + w_i)
5015                  *
5016                  * Which is strictly less than vl_i. So in order to preserve lag
5017                  * we should inflate the lag before placement such that the
5018                  * effective lag after placement comes out right.
5019                  *
5020                  * As such, invert the above relation for vl'_i to get the vl_i
5021                  * we need to use such that the lag after placement is the lag
5022                  * we computed before dequeue.
5023                  *
5024                  *   vl'_i = vl_i - w_i*vl_i / (W + w_i)
5025                  *         = ((W + w_i)*vl_i - w_i*vl_i) / (W + w_i)
5026                  *
5027                  *   (W + w_i)*vl'_i = (W + w_i)*vl_i - w_i*vl_i
5028                  *                   = W*vl_i
5029                  *
5030                  *   vl_i = (W + w_i)*vl'_i / W
5031                  */
5032                 load = cfs_rq->avg_load;
5033                 if (curr && curr->on_rq)
5034                         load += scale_load_down(curr->load.weight);
5035
5036                 lag *= load + scale_load_down(se->load.weight);
5037                 if (WARN_ON_ONCE(!load))
5038                         load = 1;
5039                 lag = div_s64(lag, load);
5040         }
5041
5042         se->vruntime = vruntime - lag;
5043
5044         /*
5045          * When joining the competition; the exisiting tasks will be,
5046          * on average, halfway through their slice, as such start tasks
5047          * off with half a slice to ease into the competition.
5048          */
5049         if (sched_feat(PLACE_DEADLINE_INITIAL) && (flags & ENQUEUE_INITIAL))
5050                 vslice /= 2;
5051
5052         /*
5053          * EEVDF: vd_i = ve_i + r_i/w_i
5054          */
5055         se->deadline = se->vruntime + vslice;
5056 }
5057
5058 static void check_enqueue_throttle(struct cfs_rq *cfs_rq);
5059 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq);
5060
5061 static inline bool cfs_bandwidth_used(void);
5062
5063 static void
5064 enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
5065 {
5066         bool curr = cfs_rq->curr == se;
5067
5068         /*
5069          * If we're the current task, we must renormalise before calling
5070          * update_curr().
5071          */
5072         if (curr)
5073                 place_entity(cfs_rq, se, flags);
5074
5075         update_curr(cfs_rq);
5076
5077         /*
5078          * When enqueuing a sched_entity, we must:
5079          *   - Update loads to have both entity and cfs_rq synced with now.
5080          *   - For group_entity, update its runnable_weight to reflect the new
5081          *     h_nr_running of its group cfs_rq.
5082          *   - For group_entity, update its weight to reflect the new share of
5083          *     its group cfs_rq
5084          *   - Add its new weight to cfs_rq->load.weight
5085          */
5086         update_load_avg(cfs_rq, se, UPDATE_TG | DO_ATTACH);
5087         se_update_runnable(se);
5088         /*
5089          * XXX update_load_avg() above will have attached us to the pelt sum;
5090          * but update_cfs_group() here will re-adjust the weight and have to
5091          * undo/redo all that. Seems wasteful.
5092          */
5093         update_cfs_group(se);
5094
5095         /*
5096          * XXX now that the entity has been re-weighted, and it's lag adjusted,
5097          * we can place the entity.
5098          */
5099         if (!curr)
5100                 place_entity(cfs_rq, se, flags);
5101
5102         account_entity_enqueue(cfs_rq, se);
5103
5104         /* Entity has migrated, no longer consider this task hot */
5105         if (flags & ENQUEUE_MIGRATED)
5106                 se->exec_start = 0;
5107
5108         check_schedstat_required();
5109         update_stats_enqueue_fair(cfs_rq, se, flags);
5110         if (!curr)
5111                 __enqueue_entity(cfs_rq, se);
5112         se->on_rq = 1;
5113
5114         if (cfs_rq->nr_running == 1) {
5115                 check_enqueue_throttle(cfs_rq);
5116                 if (!throttled_hierarchy(cfs_rq)) {
5117                         list_add_leaf_cfs_rq(cfs_rq);
5118                 } else {
5119 #ifdef CONFIG_CFS_BANDWIDTH
5120                         struct rq *rq = rq_of(cfs_rq);
5121
5122                         if (cfs_rq_throttled(cfs_rq) && !cfs_rq->throttled_clock)
5123                                 cfs_rq->throttled_clock = rq_clock(rq);
5124                         if (!cfs_rq->throttled_clock_self)
5125                                 cfs_rq->throttled_clock_self = rq_clock(rq);
5126 #endif
5127                 }
5128         }
5129 }
5130
5131 static void __clear_buddies_next(struct sched_entity *se)
5132 {
5133         for_each_sched_entity(se) {
5134                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
5135                 if (cfs_rq->next != se)
5136                         break;
5137
5138                 cfs_rq->next = NULL;
5139         }
5140 }
5141
5142 static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
5143 {
5144         if (cfs_rq->next == se)
5145                 __clear_buddies_next(se);
5146 }
5147
5148 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
5149
5150 static void
5151 dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
5152 {
5153         int action = UPDATE_TG;
5154
5155         if (entity_is_task(se) && task_on_rq_migrating(task_of(se)))
5156                 action |= DO_DETACH;
5157
5158         /*
5159          * Update run-time statistics of the 'current'.
5160          */
5161         update_curr(cfs_rq);
5162
5163         /*
5164          * When dequeuing a sched_entity, we must:
5165          *   - Update loads to have both entity and cfs_rq synced with now.
5166          *   - For group_entity, update its runnable_weight to reflect the new
5167          *     h_nr_running of its group cfs_rq.
5168          *   - Subtract its previous weight from cfs_rq->load.weight.
5169          *   - For group entity, update its weight to reflect the new share
5170          *     of its group cfs_rq.
5171          */
5172         update_load_avg(cfs_rq, se, action);
5173         se_update_runnable(se);
5174
5175         update_stats_dequeue_fair(cfs_rq, se, flags);
5176
5177         clear_buddies(cfs_rq, se);
5178
5179         update_entity_lag(cfs_rq, se);
5180         if (se != cfs_rq->curr)
5181                 __dequeue_entity(cfs_rq, se);
5182         se->on_rq = 0;
5183         account_entity_dequeue(cfs_rq, se);
5184
5185         /* return excess runtime on last dequeue */
5186         return_cfs_rq_runtime(cfs_rq);
5187
5188         update_cfs_group(se);
5189
5190         /*
5191          * Now advance min_vruntime if @se was the entity holding it back,
5192          * except when: DEQUEUE_SAVE && !DEQUEUE_MOVE, in this case we'll be
5193          * put back on, and if we advance min_vruntime, we'll be placed back
5194          * further than we started -- ie. we'll be penalized.
5195          */
5196         if ((flags & (DEQUEUE_SAVE | DEQUEUE_MOVE)) != DEQUEUE_SAVE)
5197                 update_min_vruntime(cfs_rq);
5198
5199         if (cfs_rq->nr_running == 0)
5200                 update_idle_cfs_rq_clock_pelt(cfs_rq);
5201 }
5202
5203 static void
5204 set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
5205 {
5206         clear_buddies(cfs_rq, se);
5207
5208         /* 'current' is not kept within the tree. */
5209         if (se->on_rq) {
5210                 /*
5211                  * Any task has to be enqueued before it get to execute on
5212                  * a CPU. So account for the time it spent waiting on the
5213                  * runqueue.
5214                  */
5215                 update_stats_wait_end_fair(cfs_rq, se);
5216                 __dequeue_entity(cfs_rq, se);
5217                 update_load_avg(cfs_rq, se, UPDATE_TG);
5218                 /*
5219                  * HACK, stash a copy of deadline at the point of pick in vlag,
5220                  * which isn't used until dequeue.
5221                  */
5222                 se->vlag = se->deadline;
5223         }
5224
5225         update_stats_curr_start(cfs_rq, se);
5226         cfs_rq->curr = se;
5227
5228         /*
5229          * Track our maximum slice length, if the CPU's load is at
5230          * least twice that of our own weight (i.e. dont track it
5231          * when there are only lesser-weight tasks around):
5232          */
5233         if (schedstat_enabled() &&
5234             rq_of(cfs_rq)->cfs.load.weight >= 2*se->load.weight) {
5235                 struct sched_statistics *stats;
5236
5237                 stats = __schedstats_from_se(se);
5238                 __schedstat_set(stats->slice_max,
5239                                 max((u64)stats->slice_max,
5240                                     se->sum_exec_runtime - se->prev_sum_exec_runtime));
5241         }
5242
5243         se->prev_sum_exec_runtime = se->sum_exec_runtime;
5244 }
5245
5246 /*
5247  * Pick the next process, keeping these things in mind, in this order:
5248  * 1) keep things fair between processes/task groups
5249  * 2) pick the "next" process, since someone really wants that to run
5250  * 3) pick the "last" process, for cache locality
5251  * 4) do not run the "skip" process, if something else is available
5252  */
5253 static struct sched_entity *
5254 pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr)
5255 {
5256         /*
5257          * Enabling NEXT_BUDDY will affect latency but not fairness.
5258          */
5259         if (sched_feat(NEXT_BUDDY) &&
5260             cfs_rq->next && entity_eligible(cfs_rq, cfs_rq->next))
5261                 return cfs_rq->next;
5262
5263         return pick_eevdf(cfs_rq);
5264 }
5265
5266 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
5267
5268 static void put_prev_entity(struct cfs_rq *cfs_rq, struct sched_entity *prev)
5269 {
5270         /*
5271          * If still on the runqueue then deactivate_task()
5272          * was not called and update_curr() has to be done:
5273          */
5274         if (prev->on_rq)
5275                 update_curr(cfs_rq);
5276
5277         /* throttle cfs_rqs exceeding runtime */
5278         check_cfs_rq_runtime(cfs_rq);
5279
5280         if (prev->on_rq) {
5281                 update_stats_wait_start_fair(cfs_rq, prev);
5282                 /* Put 'current' back into the tree. */
5283                 __enqueue_entity(cfs_rq, prev);
5284                 /* in !on_rq case, update occurred at dequeue */
5285                 update_load_avg(cfs_rq, prev, 0);
5286         }
5287         cfs_rq->curr = NULL;
5288 }
5289
5290 static void
5291 entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued)
5292 {
5293         /*
5294          * Update run-time statistics of the 'current'.
5295          */
5296         update_curr(cfs_rq);
5297
5298         /*
5299          * Ensure that runnable average is periodically updated.
5300          */
5301         update_load_avg(cfs_rq, curr, UPDATE_TG);
5302         update_cfs_group(curr);
5303
5304 #ifdef CONFIG_SCHED_HRTICK
5305         /*
5306          * queued ticks are scheduled to match the slice, so don't bother
5307          * validating it and just reschedule.
5308          */
5309         if (queued) {
5310                 resched_curr(rq_of(cfs_rq));
5311                 return;
5312         }
5313         /*
5314          * don't let the period tick interfere with the hrtick preemption
5315          */
5316         if (!sched_feat(DOUBLE_TICK) &&
5317                         hrtimer_active(&rq_of(cfs_rq)->hrtick_timer))
5318                 return;
5319 #endif
5320 }
5321
5322
5323 /**************************************************
5324  * CFS bandwidth control machinery
5325  */
5326
5327 #ifdef CONFIG_CFS_BANDWIDTH
5328
5329 #ifdef CONFIG_JUMP_LABEL
5330 static struct static_key __cfs_bandwidth_used;
5331
5332 static inline bool cfs_bandwidth_used(void)
5333 {
5334         return static_key_false(&__cfs_bandwidth_used);
5335 }
5336
5337 void cfs_bandwidth_usage_inc(void)
5338 {
5339         static_key_slow_inc_cpuslocked(&__cfs_bandwidth_used);
5340 }
5341
5342 void cfs_bandwidth_usage_dec(void)
5343 {
5344         static_key_slow_dec_cpuslocked(&__cfs_bandwidth_used);
5345 }
5346 #else /* CONFIG_JUMP_LABEL */
5347 static bool cfs_bandwidth_used(void)
5348 {
5349         return true;
5350 }
5351
5352 void cfs_bandwidth_usage_inc(void) {}
5353 void cfs_bandwidth_usage_dec(void) {}
5354 #endif /* CONFIG_JUMP_LABEL */
5355
5356 /*
5357  * default period for cfs group bandwidth.
5358  * default: 0.1s, units: nanoseconds
5359  */
5360 static inline u64 default_cfs_period(void)
5361 {
5362         return 100000000ULL;
5363 }
5364
5365 static inline u64 sched_cfs_bandwidth_slice(void)
5366 {
5367         return (u64)sysctl_sched_cfs_bandwidth_slice * NSEC_PER_USEC;
5368 }
5369
5370 /*
5371  * Replenish runtime according to assigned quota. We use sched_clock_cpu
5372  * directly instead of rq->clock to avoid adding additional synchronization
5373  * around rq->lock.
5374  *
5375  * requires cfs_b->lock
5376  */
5377 void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b)
5378 {
5379         s64 runtime;
5380
5381         if (unlikely(cfs_b->quota == RUNTIME_INF))
5382                 return;
5383
5384         cfs_b->runtime += cfs_b->quota;
5385         runtime = cfs_b->runtime_snap - cfs_b->runtime;
5386         if (runtime > 0) {
5387                 cfs_b->burst_time += runtime;
5388                 cfs_b->nr_burst++;
5389         }
5390
5391         cfs_b->runtime = min(cfs_b->runtime, cfs_b->quota + cfs_b->burst);
5392         cfs_b->runtime_snap = cfs_b->runtime;
5393 }
5394
5395 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
5396 {
5397         return &tg->cfs_bandwidth;
5398 }
5399
5400 /* returns 0 on failure to allocate runtime */
5401 static int __assign_cfs_rq_runtime(struct cfs_bandwidth *cfs_b,
5402                                    struct cfs_rq *cfs_rq, u64 target_runtime)
5403 {
5404         u64 min_amount, amount = 0;
5405
5406         lockdep_assert_held(&cfs_b->lock);
5407
5408         /* note: this is a positive sum as runtime_remaining <= 0 */
5409         min_amount = target_runtime - cfs_rq->runtime_remaining;
5410
5411         if (cfs_b->quota == RUNTIME_INF)
5412                 amount = min_amount;
5413         else {
5414                 start_cfs_bandwidth(cfs_b);
5415
5416                 if (cfs_b->runtime > 0) {
5417                         amount = min(cfs_b->runtime, min_amount);
5418                         cfs_b->runtime -= amount;
5419                         cfs_b->idle = 0;
5420                 }
5421         }
5422
5423         cfs_rq->runtime_remaining += amount;
5424
5425         return cfs_rq->runtime_remaining > 0;
5426 }
5427
5428 /* returns 0 on failure to allocate runtime */
5429 static int assign_cfs_rq_runtime(struct cfs_rq *cfs_rq)
5430 {
5431         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
5432         int ret;
5433
5434         raw_spin_lock(&cfs_b->lock);
5435         ret = __assign_cfs_rq_runtime(cfs_b, cfs_rq, sched_cfs_bandwidth_slice());
5436         raw_spin_unlock(&cfs_b->lock);
5437
5438         return ret;
5439 }
5440
5441 static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
5442 {
5443         /* dock delta_exec before expiring quota (as it could span periods) */
5444         cfs_rq->runtime_remaining -= delta_exec;
5445
5446         if (likely(cfs_rq->runtime_remaining > 0))
5447                 return;
5448
5449         if (cfs_rq->throttled)
5450                 return;
5451         /*
5452          * if we're unable to extend our runtime we resched so that the active
5453          * hierarchy can be throttled
5454          */
5455         if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr))
5456                 resched_curr(rq_of(cfs_rq));
5457 }
5458
5459 static __always_inline
5460 void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
5461 {
5462         if (!cfs_bandwidth_used() || !cfs_rq->runtime_enabled)
5463                 return;
5464
5465         __account_cfs_rq_runtime(cfs_rq, delta_exec);
5466 }
5467
5468 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
5469 {
5470         return cfs_bandwidth_used() && cfs_rq->throttled;
5471 }
5472
5473 /* check whether cfs_rq, or any parent, is throttled */
5474 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
5475 {
5476         return cfs_bandwidth_used() && cfs_rq->throttle_count;
5477 }
5478
5479 /*
5480  * Ensure that neither of the group entities corresponding to src_cpu or
5481  * dest_cpu are members of a throttled hierarchy when performing group
5482  * load-balance operations.
5483  */
5484 static inline int throttled_lb_pair(struct task_group *tg,
5485                                     int src_cpu, int dest_cpu)
5486 {
5487         struct cfs_rq *src_cfs_rq, *dest_cfs_rq;
5488
5489         src_cfs_rq = tg->cfs_rq[src_cpu];
5490         dest_cfs_rq = tg->cfs_rq[dest_cpu];
5491
5492         return throttled_hierarchy(src_cfs_rq) ||
5493                throttled_hierarchy(dest_cfs_rq);
5494 }
5495
5496 static int tg_unthrottle_up(struct task_group *tg, void *data)
5497 {
5498         struct rq *rq = data;
5499         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
5500
5501         cfs_rq->throttle_count--;
5502         if (!cfs_rq->throttle_count) {
5503                 cfs_rq->throttled_clock_pelt_time += rq_clock_pelt(rq) -
5504                                              cfs_rq->throttled_clock_pelt;
5505
5506                 /* Add cfs_rq with load or one or more already running entities to the list */
5507                 if (!cfs_rq_is_decayed(cfs_rq))
5508                         list_add_leaf_cfs_rq(cfs_rq);
5509
5510                 if (cfs_rq->throttled_clock_self) {
5511                         u64 delta = rq_clock(rq) - cfs_rq->throttled_clock_self;
5512
5513                         cfs_rq->throttled_clock_self = 0;
5514
5515                         if (SCHED_WARN_ON((s64)delta < 0))
5516                                 delta = 0;
5517
5518                         cfs_rq->throttled_clock_self_time += delta;
5519                 }
5520         }
5521
5522         return 0;
5523 }
5524
5525 static int tg_throttle_down(struct task_group *tg, void *data)
5526 {
5527         struct rq *rq = data;
5528         struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
5529
5530         /* group is entering throttled state, stop time */
5531         if (!cfs_rq->throttle_count) {
5532                 cfs_rq->throttled_clock_pelt = rq_clock_pelt(rq);
5533                 list_del_leaf_cfs_rq(cfs_rq);
5534
5535                 SCHED_WARN_ON(cfs_rq->throttled_clock_self);
5536                 if (cfs_rq->nr_running)
5537                         cfs_rq->throttled_clock_self = rq_clock(rq);
5538         }
5539         cfs_rq->throttle_count++;
5540
5541         return 0;
5542 }
5543
5544 static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
5545 {
5546         struct rq *rq = rq_of(cfs_rq);
5547         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
5548         struct sched_entity *se;
5549         long task_delta, idle_task_delta, dequeue = 1;
5550
5551         raw_spin_lock(&cfs_b->lock);
5552         /* This will start the period timer if necessary */
5553         if (__assign_cfs_rq_runtime(cfs_b, cfs_rq, 1)) {
5554                 /*
5555                  * We have raced with bandwidth becoming available, and if we
5556                  * actually throttled the timer might not unthrottle us for an
5557                  * entire period. We additionally needed to make sure that any
5558                  * subsequent check_cfs_rq_runtime calls agree not to throttle
5559                  * us, as we may commit to do cfs put_prev+pick_next, so we ask
5560                  * for 1ns of runtime rather than just check cfs_b.
5561                  */
5562                 dequeue = 0;
5563         } else {
5564                 list_add_tail_rcu(&cfs_rq->throttled_list,
5565                                   &cfs_b->throttled_cfs_rq);
5566         }
5567         raw_spin_unlock(&cfs_b->lock);
5568
5569         if (!dequeue)
5570                 return false;  /* Throttle no longer required. */
5571
5572         se = cfs_rq->tg->se[cpu_of(rq_of(cfs_rq))];
5573
5574         /* freeze hierarchy runnable averages while throttled */
5575         rcu_read_lock();
5576         walk_tg_tree_from(cfs_rq->tg, tg_throttle_down, tg_nop, (void *)rq);
5577         rcu_read_unlock();
5578
5579         task_delta = cfs_rq->h_nr_running;
5580         idle_task_delta = cfs_rq->idle_h_nr_running;
5581         for_each_sched_entity(se) {
5582                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
5583                 /* throttled entity or throttle-on-deactivate */
5584                 if (!se->on_rq)
5585                         goto done;
5586
5587                 dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP);
5588
5589                 if (cfs_rq_is_idle(group_cfs_rq(se)))
5590                         idle_task_delta = cfs_rq->h_nr_running;
5591
5592                 qcfs_rq->h_nr_running -= task_delta;
5593                 qcfs_rq->idle_h_nr_running -= idle_task_delta;
5594
5595                 if (qcfs_rq->load.weight) {
5596                         /* Avoid re-evaluating load for this entity: */
5597                         se = parent_entity(se);
5598                         break;
5599                 }
5600         }
5601
5602         for_each_sched_entity(se) {
5603                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
5604                 /* throttled entity or throttle-on-deactivate */
5605                 if (!se->on_rq)
5606                         goto done;
5607
5608                 update_load_avg(qcfs_rq, se, 0);
5609                 se_update_runnable(se);
5610
5611                 if (cfs_rq_is_idle(group_cfs_rq(se)))
5612                         idle_task_delta = cfs_rq->h_nr_running;
5613
5614                 qcfs_rq->h_nr_running -= task_delta;
5615                 qcfs_rq->idle_h_nr_running -= idle_task_delta;
5616         }
5617
5618         /* At this point se is NULL and we are at root level*/
5619         sub_nr_running(rq, task_delta);
5620
5621 done:
5622         /*
5623          * Note: distribution will already see us throttled via the
5624          * throttled-list.  rq->lock protects completion.
5625          */
5626         cfs_rq->throttled = 1;
5627         SCHED_WARN_ON(cfs_rq->throttled_clock);
5628         if (cfs_rq->nr_running)
5629                 cfs_rq->throttled_clock = rq_clock(rq);
5630         return true;
5631 }
5632
5633 void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
5634 {
5635         struct rq *rq = rq_of(cfs_rq);
5636         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
5637         struct sched_entity *se;
5638         long task_delta, idle_task_delta;
5639
5640         se = cfs_rq->tg->se[cpu_of(rq)];
5641
5642         cfs_rq->throttled = 0;
5643
5644         update_rq_clock(rq);
5645
5646         raw_spin_lock(&cfs_b->lock);
5647         if (cfs_rq->throttled_clock) {
5648                 cfs_b->throttled_time += rq_clock(rq) - cfs_rq->throttled_clock;
5649                 cfs_rq->throttled_clock = 0;
5650         }
5651         list_del_rcu(&cfs_rq->throttled_list);
5652         raw_spin_unlock(&cfs_b->lock);
5653
5654         /* update hierarchical throttle state */
5655         walk_tg_tree_from(cfs_rq->tg, tg_nop, tg_unthrottle_up, (void *)rq);
5656
5657         if (!cfs_rq->load.weight) {
5658                 if (!cfs_rq->on_list)
5659                         return;
5660                 /*
5661                  * Nothing to run but something to decay (on_list)?
5662                  * Complete the branch.
5663                  */
5664                 for_each_sched_entity(se) {
5665                         if (list_add_leaf_cfs_rq(cfs_rq_of(se)))
5666                                 break;
5667                 }
5668                 goto unthrottle_throttle;
5669         }
5670
5671         task_delta = cfs_rq->h_nr_running;
5672         idle_task_delta = cfs_rq->idle_h_nr_running;
5673         for_each_sched_entity(se) {
5674                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
5675
5676                 if (se->on_rq)
5677                         break;
5678                 enqueue_entity(qcfs_rq, se, ENQUEUE_WAKEUP);
5679
5680                 if (cfs_rq_is_idle(group_cfs_rq(se)))
5681                         idle_task_delta = cfs_rq->h_nr_running;
5682
5683                 qcfs_rq->h_nr_running += task_delta;
5684                 qcfs_rq->idle_h_nr_running += idle_task_delta;
5685
5686                 /* end evaluation on encountering a throttled cfs_rq */
5687                 if (cfs_rq_throttled(qcfs_rq))
5688                         goto unthrottle_throttle;
5689         }
5690
5691         for_each_sched_entity(se) {
5692                 struct cfs_rq *qcfs_rq = cfs_rq_of(se);
5693
5694                 update_load_avg(qcfs_rq, se, UPDATE_TG);
5695                 se_update_runnable(se);
5696
5697                 if (cfs_rq_is_idle(group_cfs_rq(se)))
5698                         idle_task_delta = cfs_rq->h_nr_running;
5699
5700                 qcfs_rq->h_nr_running += task_delta;
5701                 qcfs_rq->idle_h_nr_running += idle_task_delta;
5702
5703                 /* end evaluation on encountering a throttled cfs_rq */
5704                 if (cfs_rq_throttled(qcfs_rq))
5705                         goto unthrottle_throttle;
5706         }
5707
5708         /* At this point se is NULL and we are at root level*/
5709         add_nr_running(rq, task_delta);
5710
5711 unthrottle_throttle:
5712         assert_list_leaf_cfs_rq(rq);
5713
5714         /* Determine whether we need to wake up potentially idle CPU: */
5715         if (rq->curr == rq->idle && rq->cfs.nr_running)
5716                 resched_curr(rq);
5717 }
5718
5719 #ifdef CONFIG_SMP
5720 static void __cfsb_csd_unthrottle(void *arg)
5721 {
5722         struct cfs_rq *cursor, *tmp;
5723         struct rq *rq = arg;
5724         struct rq_flags rf;
5725
5726         rq_lock(rq, &rf);
5727
5728         /*
5729          * Iterating over the list can trigger several call to
5730          * update_rq_clock() in unthrottle_cfs_rq().
5731          * Do it once and skip the potential next ones.
5732          */
5733         update_rq_clock(rq);
5734         rq_clock_start_loop_update(rq);
5735
5736         /*
5737          * Since we hold rq lock we're safe from concurrent manipulation of
5738          * the CSD list. However, this RCU critical section annotates the
5739          * fact that we pair with sched_free_group_rcu(), so that we cannot
5740          * race with group being freed in the window between removing it
5741          * from the list and advancing to the next entry in the list.
5742          */
5743         rcu_read_lock();
5744
5745         list_for_each_entry_safe(cursor, tmp, &rq->cfsb_csd_list,
5746                                  throttled_csd_list) {
5747                 list_del_init(&cursor->throttled_csd_list);
5748
5749                 if (cfs_rq_throttled(cursor))
5750                         unthrottle_cfs_rq(cursor);
5751         }
5752
5753         rcu_read_unlock();
5754
5755         rq_clock_stop_loop_update(rq);
5756         rq_unlock(rq, &rf);
5757 }
5758
5759 static inline void __unthrottle_cfs_rq_async(struct cfs_rq *cfs_rq)
5760 {
5761         struct rq *rq = rq_of(cfs_rq);
5762         bool first;
5763
5764         if (rq == this_rq()) {
5765                 unthrottle_cfs_rq(cfs_rq);
5766                 return;
5767         }
5768
5769         /* Already enqueued */
5770         if (SCHED_WARN_ON(!list_empty(&cfs_rq->throttled_csd_list)))
5771                 return;
5772
5773         first = list_empty(&rq->cfsb_csd_list);
5774         list_add_tail(&cfs_rq->throttled_csd_list, &rq->cfsb_csd_list);
5775         if (first)
5776                 smp_call_function_single_async(cpu_of(rq), &rq->cfsb_csd);
5777 }
5778 #else
5779 static inline void __unthrottle_cfs_rq_async(struct cfs_rq *cfs_rq)
5780 {
5781         unthrottle_cfs_rq(cfs_rq);
5782 }
5783 #endif
5784
5785 static void unthrottle_cfs_rq_async(struct cfs_rq *cfs_rq)
5786 {
5787         lockdep_assert_rq_held(rq_of(cfs_rq));
5788
5789         if (SCHED_WARN_ON(!cfs_rq_throttled(cfs_rq) ||
5790             cfs_rq->runtime_remaining <= 0))
5791                 return;
5792
5793         __unthrottle_cfs_rq_async(cfs_rq);
5794 }
5795
5796 static bool distribute_cfs_runtime(struct cfs_bandwidth *cfs_b)
5797 {
5798         struct cfs_rq *local_unthrottle = NULL;
5799         int this_cpu = smp_processor_id();
5800         u64 runtime, remaining = 1;
5801         bool throttled = false;
5802         struct cfs_rq *cfs_rq;
5803         struct rq_flags rf;
5804         struct rq *rq;
5805
5806         rcu_read_lock();
5807         list_for_each_entry_rcu(cfs_rq, &cfs_b->throttled_cfs_rq,
5808                                 throttled_list) {
5809                 rq = rq_of(cfs_rq);
5810
5811                 if (!remaining) {
5812                         throttled = true;
5813                         break;
5814                 }
5815
5816                 rq_lock_irqsave(rq, &rf);
5817                 if (!cfs_rq_throttled(cfs_rq))
5818                         goto next;
5819
5820 #ifdef CONFIG_SMP
5821                 /* Already queued for async unthrottle */
5822                 if (!list_empty(&cfs_rq->throttled_csd_list))
5823                         goto next;
5824 #endif
5825
5826                 /* By the above checks, this should never be true */
5827                 SCHED_WARN_ON(cfs_rq->runtime_remaining > 0);
5828
5829                 raw_spin_lock(&cfs_b->lock);
5830                 runtime = -cfs_rq->runtime_remaining + 1;
5831                 if (runtime > cfs_b->runtime)
5832                         runtime = cfs_b->runtime;
5833                 cfs_b->runtime -= runtime;
5834                 remaining = cfs_b->runtime;
5835                 raw_spin_unlock(&cfs_b->lock);
5836
5837                 cfs_rq->runtime_remaining += runtime;
5838
5839                 /* we check whether we're throttled above */
5840                 if (cfs_rq->runtime_remaining > 0) {
5841                         if (cpu_of(rq) != this_cpu ||
5842                             SCHED_WARN_ON(local_unthrottle))
5843                                 unthrottle_cfs_rq_async(cfs_rq);
5844                         else
5845                                 local_unthrottle = cfs_rq;
5846                 } else {
5847                         throttled = true;
5848                 }
5849
5850 next:
5851                 rq_unlock_irqrestore(rq, &rf);
5852         }
5853         rcu_read_unlock();
5854
5855         if (local_unthrottle) {
5856                 rq = cpu_rq(this_cpu);
5857                 rq_lock_irqsave(rq, &rf);
5858                 if (cfs_rq_throttled(local_unthrottle))
5859                         unthrottle_cfs_rq(local_unthrottle);
5860                 rq_unlock_irqrestore(rq, &rf);
5861         }
5862
5863         return throttled;
5864 }
5865
5866 /*
5867  * Responsible for refilling a task_group's bandwidth and unthrottling its
5868  * cfs_rqs as appropriate. If there has been no activity within the last
5869  * period the timer is deactivated until scheduling resumes; cfs_b->idle is
5870  * used to track this state.
5871  */
5872 static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun, unsigned long flags)
5873 {
5874         int throttled;
5875
5876         /* no need to continue the timer with no bandwidth constraint */
5877         if (cfs_b->quota == RUNTIME_INF)
5878                 goto out_deactivate;
5879
5880         throttled = !list_empty(&cfs_b->throttled_cfs_rq);
5881         cfs_b->nr_periods += overrun;
5882
5883         /* Refill extra burst quota even if cfs_b->idle */
5884         __refill_cfs_bandwidth_runtime(cfs_b);
5885
5886         /*
5887          * idle depends on !throttled (for the case of a large deficit), and if
5888          * we're going inactive then everything else can be deferred
5889          */
5890         if (cfs_b->idle && !throttled)
5891                 goto out_deactivate;
5892
5893         if (!throttled) {
5894                 /* mark as potentially idle for the upcoming period */
5895                 cfs_b->idle = 1;
5896                 return 0;
5897         }
5898
5899         /* account preceding periods in which throttling occurred */
5900         cfs_b->nr_throttled += overrun;
5901
5902         /*
5903          * This check is repeated as we release cfs_b->lock while we unthrottle.
5904          */
5905         while (throttled && cfs_b->runtime > 0) {
5906                 raw_spin_unlock_irqrestore(&cfs_b->lock, flags);
5907                 /* we can't nest cfs_b->lock while distributing bandwidth */
5908                 throttled = distribute_cfs_runtime(cfs_b);
5909                 raw_spin_lock_irqsave(&cfs_b->lock, flags);
5910         }
5911
5912         /*
5913          * While we are ensured activity in the period following an
5914          * unthrottle, this also covers the case in which the new bandwidth is
5915          * insufficient to cover the existing bandwidth deficit.  (Forcing the
5916          * timer to remain active while there are any throttled entities.)
5917          */
5918         cfs_b->idle = 0;
5919
5920         return 0;
5921
5922 out_deactivate:
5923         return 1;
5924 }
5925
5926 /* a cfs_rq won't donate quota below this amount */
5927 static const u64 min_cfs_rq_runtime = 1 * NSEC_PER_MSEC;
5928 /* minimum remaining period time to redistribute slack quota */
5929 static const u64 min_bandwidth_expiration = 2 * NSEC_PER_MSEC;
5930 /* how long we wait to gather additional slack before distributing */
5931 static const u64 cfs_bandwidth_slack_period = 5 * NSEC_PER_MSEC;
5932
5933 /*
5934  * Are we near the end of the current quota period?
5935  *
5936  * Requires cfs_b->lock for hrtimer_expires_remaining to be safe against the
5937  * hrtimer base being cleared by hrtimer_start. In the case of
5938  * migrate_hrtimers, base is never cleared, so we are fine.
5939  */
5940 static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire)
5941 {
5942         struct hrtimer *refresh_timer = &cfs_b->period_timer;
5943         s64 remaining;
5944
5945         /* if the call-back is running a quota refresh is already occurring */
5946         if (hrtimer_callback_running(refresh_timer))
5947                 return 1;
5948
5949         /* is a quota refresh about to occur? */
5950         remaining = ktime_to_ns(hrtimer_expires_remaining(refresh_timer));
5951         if (remaining < (s64)min_expire)
5952                 return 1;
5953
5954         return 0;
5955 }
5956
5957 static void start_cfs_slack_bandwidth(struct cfs_bandwidth *cfs_b)
5958 {
5959         u64 min_left = cfs_bandwidth_slack_period + min_bandwidth_expiration;
5960
5961         /* if there's a quota refresh soon don't bother with slack */
5962         if (runtime_refresh_within(cfs_b, min_left))
5963                 return;
5964
5965         /* don't push forwards an existing deferred unthrottle */
5966         if (cfs_b->slack_started)
5967                 return;
5968         cfs_b->slack_started = true;
5969
5970         hrtimer_start(&cfs_b->slack_timer,
5971                         ns_to_ktime(cfs_bandwidth_slack_period),
5972                         HRTIMER_MODE_REL);
5973 }
5974
5975 /* we know any runtime found here is valid as update_curr() precedes return */
5976 static void __return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
5977 {
5978         struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
5979         s64 slack_runtime = cfs_rq->runtime_remaining - min_cfs_rq_runtime;
5980
5981         if (slack_runtime <= 0)
5982                 return;
5983
5984         raw_spin_lock(&cfs_b->lock);
5985         if (cfs_b->quota != RUNTIME_INF) {
5986                 cfs_b->runtime += slack_runtime;
5987
5988                 /* we are under rq->lock, defer unthrottling using a timer */
5989                 if (cfs_b->runtime > sched_cfs_bandwidth_slice() &&
5990                     !list_empty(&cfs_b->throttled_cfs_rq))
5991                         start_cfs_slack_bandwidth(cfs_b);
5992         }
5993         raw_spin_unlock(&cfs_b->lock);
5994
5995         /* even if it's not valid for return we don't want to try again */
5996         cfs_rq->runtime_remaining -= slack_runtime;
5997 }
5998
5999 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq)
6000 {
6001         if (!cfs_bandwidth_used())
6002                 return;
6003
6004         if (!cfs_rq->runtime_enabled || cfs_rq->nr_running)
6005                 return;
6006
6007         __return_cfs_rq_runtime(cfs_rq);
6008 }
6009
6010 /*
6011  * This is done with a timer (instead of inline with bandwidth return) since
6012  * it's necessary to juggle rq->locks to unthrottle their respective cfs_rqs.
6013  */
6014 static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b)
6015 {
6016         u64 runtime = 0, slice = sched_cfs_bandwidth_slice();
6017         unsigned long flags;
6018
6019         /* confirm we're still not at a refresh boundary */
6020         raw_spin_lock_irqsave(&cfs_b->lock, flags);
6021         cfs_b->slack_started = false;
6022
6023         if (runtime_refresh_within(cfs_b, min_bandwidth_expiration)) {
6024                 raw_spin_unlock_irqrestore(&cfs_b->lock, flags);
6025                 return;
6026         }
6027
6028         if (cfs_b->quota != RUNTIME_INF && cfs_b->runtime > slice)
6029                 runtime = cfs_b->runtime;
6030
6031         raw_spin_unlock_irqrestore(&cfs_b->lock, flags);
6032
6033         if (!runtime)
6034                 return;
6035
6036         distribute_cfs_runtime(cfs_b);
6037 }
6038
6039 /*
6040  * When a group wakes up we want to make sure that its quota is not already
6041  * expired/exceeded, otherwise it may be allowed to steal additional ticks of
6042  * runtime as update_curr() throttling can not trigger until it's on-rq.
6043  */
6044 static void check_enqueue_throttle(struct cfs_rq *cfs_rq)
6045 {
6046         if (!cfs_bandwidth_used())
6047                 return;
6048
6049         /* an active group must be handled by the update_curr()->put() path */
6050         if (!cfs_rq->runtime_enabled || cfs_rq->curr)
6051                 return;
6052
6053         /* ensure the group is not already throttled */
6054         if (cfs_rq_throttled(cfs_rq))
6055                 return;
6056
6057         /* update runtime allocation */
6058         account_cfs_rq_runtime(cfs_rq, 0);
6059         if (cfs_rq->runtime_remaining <= 0)
6060                 throttle_cfs_rq(cfs_rq);
6061 }
6062
6063 static void sync_throttle(struct task_group *tg, int cpu)
6064 {
6065         struct cfs_rq *pcfs_rq, *cfs_rq;
6066
6067         if (!cfs_bandwidth_used())
6068                 return;
6069
6070         if (!tg->parent)
6071                 return;
6072
6073         cfs_rq = tg->cfs_rq[cpu];
6074         pcfs_rq = tg->parent->cfs_rq[cpu];
6075
6076         cfs_rq->throttle_count = pcfs_rq->throttle_count;
6077         cfs_rq->throttled_clock_pelt = rq_clock_pelt(cpu_rq(cpu));
6078 }
6079
6080 /* conditionally throttle active cfs_rq's from put_prev_entity() */
6081 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq)
6082 {
6083         if (!cfs_bandwidth_used())
6084                 return false;
6085
6086         if (likely(!cfs_rq->runtime_enabled || cfs_rq->runtime_remaining > 0))
6087                 return false;
6088
6089         /*
6090          * it's possible for a throttled entity to be forced into a running
6091          * state (e.g. set_curr_task), in this case we're finished.
6092          */
6093         if (cfs_rq_throttled(cfs_rq))
6094                 return true;
6095
6096         return throttle_cfs_rq(cfs_rq);
6097 }
6098
6099 static enum hrtimer_restart sched_cfs_slack_timer(struct hrtimer *timer)
6100 {
6101         struct cfs_bandwidth *cfs_b =
6102                 container_of(timer, struct cfs_bandwidth, slack_timer);
6103
6104         do_sched_cfs_slack_timer(cfs_b);
6105
6106         return HRTIMER_NORESTART;
6107 }
6108
6109 extern const u64 max_cfs_quota_period;
6110
6111 static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer)
6112 {
6113         struct cfs_bandwidth *cfs_b =
6114                 container_of(timer, struct cfs_bandwidth, period_timer);
6115         unsigned long flags;
6116         int overrun;
6117         int idle = 0;
6118         int count = 0;
6119
6120         raw_spin_lock_irqsave(&cfs_b->lock, flags);
6121         for (;;) {
6122                 overrun = hrtimer_forward_now(timer, cfs_b->period);
6123                 if (!overrun)
6124                         break;
6125
6126                 idle = do_sched_cfs_period_timer(cfs_b, overrun, flags);
6127
6128                 if (++count > 3) {
6129                         u64 new, old = ktime_to_ns(cfs_b->period);
6130
6131                         /*
6132                          * Grow period by a factor of 2 to avoid losing precision.
6133                          * Precision loss in the quota/period ratio can cause __cfs_schedulable
6134                          * to fail.
6135                          */
6136                         new = old * 2;
6137                         if (new < max_cfs_quota_period) {
6138                                 cfs_b->period = ns_to_ktime(new);
6139                                 cfs_b->quota *= 2;
6140                                 cfs_b->burst *= 2;
6141
6142                                 pr_warn_ratelimited(
6143         "cfs_period_timer[cpu%d]: period too short, scaling up (new cfs_period_us = %lld, cfs_quota_us = %lld)\n",
6144                                         smp_processor_id(),
6145                                         div_u64(new, NSEC_PER_USEC),
6146                                         div_u64(cfs_b->quota, NSEC_PER_USEC));
6147                         } else {
6148                                 pr_warn_ratelimited(
6149         "cfs_period_timer[cpu%d]: period too short, but cannot scale up without losing precision (cfs_period_us = %lld, cfs_quota_us = %lld)\n",
6150                                         smp_processor_id(),
6151                                         div_u64(old, NSEC_PER_USEC),
6152                                         div_u64(cfs_b->quota, NSEC_PER_USEC));
6153                         }
6154
6155                         /* reset count so we don't come right back in here */
6156                         count = 0;
6157                 }
6158         }
6159         if (idle)
6160                 cfs_b->period_active = 0;
6161         raw_spin_unlock_irqrestore(&cfs_b->lock, flags);
6162
6163         return idle ? HRTIMER_NORESTART : HRTIMER_RESTART;
6164 }
6165
6166 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b, struct cfs_bandwidth *parent)
6167 {
6168         raw_spin_lock_init(&cfs_b->lock);
6169         cfs_b->runtime = 0;
6170         cfs_b->quota = RUNTIME_INF;
6171         cfs_b->period = ns_to_ktime(default_cfs_period());
6172         cfs_b->burst = 0;
6173         cfs_b->hierarchical_quota = parent ? parent->hierarchical_quota : RUNTIME_INF;
6174
6175         INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq);
6176         hrtimer_init(&cfs_b->period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED);
6177         cfs_b->period_timer.function = sched_cfs_period_timer;
6178
6179         /* Add a random offset so that timers interleave */
6180         hrtimer_set_expires(&cfs_b->period_timer,
6181                             get_random_u32_below(cfs_b->period));
6182         hrtimer_init(&cfs_b->slack_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
6183         cfs_b->slack_timer.function = sched_cfs_slack_timer;
6184         cfs_b->slack_started = false;
6185 }
6186
6187 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq)
6188 {
6189         cfs_rq->runtime_enabled = 0;
6190         INIT_LIST_HEAD(&cfs_rq->throttled_list);
6191 #ifdef CONFIG_SMP
6192         INIT_LIST_HEAD(&cfs_rq->throttled_csd_list);
6193 #endif
6194 }
6195
6196 void start_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
6197 {
6198         lockdep_assert_held(&cfs_b->lock);
6199
6200         if (cfs_b->period_active)
6201                 return;
6202
6203         cfs_b->period_active = 1;
6204         hrtimer_forward_now(&cfs_b->period_timer, cfs_b->period);
6205         hrtimer_start_expires(&cfs_b->period_timer, HRTIMER_MODE_ABS_PINNED);
6206 }
6207
6208 static void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
6209 {
6210         int __maybe_unused i;
6211
6212         /* init_cfs_bandwidth() was not called */
6213         if (!cfs_b->throttled_cfs_rq.next)
6214                 return;
6215
6216         hrtimer_cancel(&cfs_b->period_timer);
6217         hrtimer_cancel(&cfs_b->slack_timer);
6218
6219         /*
6220          * It is possible that we still have some cfs_rq's pending on a CSD
6221          * list, though this race is very rare. In order for this to occur, we
6222          * must have raced with the last task leaving the group while there
6223          * exist throttled cfs_rq(s), and the period_timer must have queued the
6224          * CSD item but the remote cpu has not yet processed it. To handle this,
6225          * we can simply flush all pending CSD work inline here. We're
6226          * guaranteed at this point that no additional cfs_rq of this group can
6227          * join a CSD list.
6228          */
6229 #ifdef CONFIG_SMP
6230         for_each_possible_cpu(i) {
6231                 struct rq *rq = cpu_rq(i);
6232                 unsigned long flags;
6233
6234                 if (list_empty(&rq->cfsb_csd_list))
6235                         continue;
6236
6237                 local_irq_save(flags);
6238                 __cfsb_csd_unthrottle(rq);
6239                 local_irq_restore(flags);
6240         }
6241 #endif
6242 }
6243
6244 /*
6245  * Both these CPU hotplug callbacks race against unregister_fair_sched_group()
6246  *
6247  * The race is harmless, since modifying bandwidth settings of unhooked group
6248  * bits doesn't do much.
6249  */
6250
6251 /* cpu online callback */
6252 static void __maybe_unused update_runtime_enabled(struct rq *rq)
6253 {
6254         struct task_group *tg;
6255
6256         lockdep_assert_rq_held(rq);
6257
6258         rcu_read_lock();
6259         list_for_each_entry_rcu(tg, &task_groups, list) {
6260                 struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
6261                 struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
6262
6263                 raw_spin_lock(&cfs_b->lock);
6264                 cfs_rq->runtime_enabled = cfs_b->quota != RUNTIME_INF;
6265                 raw_spin_unlock(&cfs_b->lock);
6266         }
6267         rcu_read_unlock();
6268 }
6269
6270 /* cpu offline callback */
6271 static void __maybe_unused unthrottle_offline_cfs_rqs(struct rq *rq)
6272 {
6273         struct task_group *tg;
6274
6275         lockdep_assert_rq_held(rq);
6276
6277         /*
6278          * The rq clock has already been updated in the
6279          * set_rq_offline(), so we should skip updating
6280          * the rq clock again in unthrottle_cfs_rq().
6281          */
6282         rq_clock_start_loop_update(rq);
6283
6284         rcu_read_lock();
6285         list_for_each_entry_rcu(tg, &task_groups, list) {
6286                 struct cfs_rq *cfs_rq = tg->cfs_rq[cpu_of(rq)];
6287
6288                 if (!cfs_rq->runtime_enabled)
6289                         continue;
6290
6291                 /*
6292                  * clock_task is not advancing so we just need to make sure
6293                  * there's some valid quota amount
6294                  */
6295                 cfs_rq->runtime_remaining = 1;
6296                 /*
6297                  * Offline rq is schedulable till CPU is completely disabled
6298                  * in take_cpu_down(), so we prevent new cfs throttling here.
6299                  */
6300                 cfs_rq->runtime_enabled = 0;
6301
6302                 if (cfs_rq_throttled(cfs_rq))
6303                         unthrottle_cfs_rq(cfs_rq);
6304         }
6305         rcu_read_unlock();
6306
6307         rq_clock_stop_loop_update(rq);
6308 }
6309
6310 bool cfs_task_bw_constrained(struct task_struct *p)
6311 {
6312         struct cfs_rq *cfs_rq = task_cfs_rq(p);
6313
6314         if (!cfs_bandwidth_used())
6315                 return false;
6316
6317         if (cfs_rq->runtime_enabled ||
6318             tg_cfs_bandwidth(cfs_rq->tg)->hierarchical_quota != RUNTIME_INF)
6319                 return true;
6320
6321         return false;
6322 }
6323
6324 #ifdef CONFIG_NO_HZ_FULL
6325 /* called from pick_next_task_fair() */
6326 static void sched_fair_update_stop_tick(struct rq *rq, struct task_struct *p)
6327 {
6328         int cpu = cpu_of(rq);
6329
6330         if (!sched_feat(HZ_BW) || !cfs_bandwidth_used())
6331                 return;
6332
6333         if (!tick_nohz_full_cpu(cpu))
6334                 return;
6335
6336         if (rq->nr_running != 1)
6337                 return;
6338
6339         /*
6340          *  We know there is only one task runnable and we've just picked it. The
6341          *  normal enqueue path will have cleared TICK_DEP_BIT_SCHED if we will
6342          *  be otherwise able to stop the tick. Just need to check if we are using
6343          *  bandwidth control.
6344          */
6345         if (cfs_task_bw_constrained(p))
6346                 tick_nohz_dep_set_cpu(cpu, TICK_DEP_BIT_SCHED);
6347 }
6348 #endif
6349
6350 #else /* CONFIG_CFS_BANDWIDTH */
6351
6352 static inline bool cfs_bandwidth_used(void)
6353 {
6354         return false;
6355 }
6356
6357 static void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) {}
6358 static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq) { return false; }
6359 static void check_enqueue_throttle(struct cfs_rq *cfs_rq) {}
6360 static inline void sync_throttle(struct task_group *tg, int cpu) {}
6361 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
6362
6363 static inline int cfs_rq_throttled(struct cfs_rq *cfs_rq)
6364 {
6365         return 0;
6366 }
6367
6368 static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
6369 {
6370         return 0;
6371 }
6372
6373 static inline int throttled_lb_pair(struct task_group *tg,
6374                                     int src_cpu, int dest_cpu)
6375 {
6376         return 0;
6377 }
6378
6379 #ifdef CONFIG_FAIR_GROUP_SCHED
6380 void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b, struct cfs_bandwidth *parent) {}
6381 static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
6382 #endif
6383
6384 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
6385 {
6386         return NULL;
6387 }
6388 static inline void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
6389 static inline void update_runtime_enabled(struct rq *rq) {}
6390 static inline void unthrottle_offline_cfs_rqs(struct rq *rq) {}
6391 #ifdef CONFIG_CGROUP_SCHED
6392 bool cfs_task_bw_constrained(struct task_struct *p)
6393 {
6394         return false;
6395 }
6396 #endif
6397 #endif /* CONFIG_CFS_BANDWIDTH */
6398
6399 #if !defined(CONFIG_CFS_BANDWIDTH) || !defined(CONFIG_NO_HZ_FULL)
6400 static inline void sched_fair_update_stop_tick(struct rq *rq, struct task_struct *p) {}
6401 #endif
6402
6403 /**************************************************
6404  * CFS operations on tasks:
6405  */
6406
6407 #ifdef CONFIG_SCHED_HRTICK
6408 static void hrtick_start_fair(struct rq *rq, struct task_struct *p)
6409 {
6410         struct sched_entity *se = &p->se;
6411
6412         SCHED_WARN_ON(task_rq(p) != rq);
6413
6414         if (rq->cfs.h_nr_running > 1) {
6415                 u64 ran = se->sum_exec_runtime - se->prev_sum_exec_runtime;
6416                 u64 slice = se->slice;
6417                 s64 delta = slice - ran;
6418
6419                 if (delta < 0) {
6420                         if (task_current(rq, p))
6421                                 resched_curr(rq);
6422                         return;
6423                 }
6424                 hrtick_start(rq, delta);
6425         }
6426 }
6427
6428 /*
6429  * called from enqueue/dequeue and updates the hrtick when the
6430  * current task is from our class and nr_running is low enough
6431  * to matter.
6432  */
6433 static void hrtick_update(struct rq *rq)
6434 {
6435         struct task_struct *curr = rq->curr;
6436
6437         if (!hrtick_enabled_fair(rq) || curr->sched_class != &fair_sched_class)
6438                 return;
6439
6440         hrtick_start_fair(rq, curr);
6441 }
6442 #else /* !CONFIG_SCHED_HRTICK */
6443 static inline void
6444 hrtick_start_fair(struct rq *rq, struct task_struct *p)
6445 {
6446 }
6447
6448 static inline void hrtick_update(struct rq *rq)
6449 {
6450 }
6451 #endif
6452
6453 #ifdef CONFIG_SMP
6454 static inline bool cpu_overutilized(int cpu)
6455 {
6456         unsigned long rq_util_min = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MIN);
6457         unsigned long rq_util_max = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MAX);
6458
6459         /* Return true only if the utilization doesn't fit CPU's capacity */
6460         return !util_fits_cpu(cpu_util_cfs(cpu), rq_util_min, rq_util_max, cpu);
6461 }
6462
6463 static inline void update_overutilized_status(struct rq *rq)
6464 {
6465         if (!READ_ONCE(rq->rd->overutilized) && cpu_overutilized(rq->cpu)) {
6466                 WRITE_ONCE(rq->rd->overutilized, SG_OVERUTILIZED);
6467                 trace_sched_overutilized_tp(rq->rd, SG_OVERUTILIZED);
6468         }
6469 }
6470 #else
6471 static inline void update_overutilized_status(struct rq *rq) { }
6472 #endif
6473
6474 /* Runqueue only has SCHED_IDLE tasks enqueued */
6475 static int sched_idle_rq(struct rq *rq)
6476 {
6477         return unlikely(rq->nr_running == rq->cfs.idle_h_nr_running &&
6478                         rq->nr_running);
6479 }
6480
6481 #ifdef CONFIG_SMP
6482 static int sched_idle_cpu(int cpu)
6483 {
6484         return sched_idle_rq(cpu_rq(cpu));
6485 }
6486 #endif
6487
6488 /*
6489  * The enqueue_task method is called before nr_running is
6490  * increased. Here we update the fair scheduling stats and
6491  * then put the task into the rbtree:
6492  */
6493 static void
6494 enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
6495 {
6496         struct cfs_rq *cfs_rq;
6497         struct sched_entity *se = &p->se;
6498         int idle_h_nr_running = task_has_idle_policy(p);
6499         int task_new = !(flags & ENQUEUE_WAKEUP);
6500
6501         /*
6502          * The code below (indirectly) updates schedutil which looks at
6503          * the cfs_rq utilization to select a frequency.
6504          * Let's add the task's estimated utilization to the cfs_rq's
6505          * estimated utilization, before we update schedutil.
6506          */
6507         util_est_enqueue(&rq->cfs, p);
6508
6509         /*
6510          * If in_iowait is set, the code below may not trigger any cpufreq
6511          * utilization updates, so do it here explicitly with the IOWAIT flag
6512          * passed.
6513          */
6514         if (p->in_iowait)
6515                 cpufreq_update_util(rq, SCHED_CPUFREQ_IOWAIT);
6516
6517         for_each_sched_entity(se) {
6518                 if (se->on_rq)
6519                         break;
6520                 cfs_rq = cfs_rq_of(se);
6521                 enqueue_entity(cfs_rq, se, flags);
6522
6523                 cfs_rq->h_nr_running++;
6524                 cfs_rq->idle_h_nr_running += idle_h_nr_running;
6525
6526                 if (cfs_rq_is_idle(cfs_rq))
6527                         idle_h_nr_running = 1;
6528
6529                 /* end evaluation on encountering a throttled cfs_rq */
6530                 if (cfs_rq_throttled(cfs_rq))
6531                         goto enqueue_throttle;
6532
6533                 flags = ENQUEUE_WAKEUP;
6534         }
6535
6536         for_each_sched_entity(se) {
6537                 cfs_rq = cfs_rq_of(se);
6538
6539                 update_load_avg(cfs_rq, se, UPDATE_TG);
6540                 se_update_runnable(se);
6541                 update_cfs_group(se);
6542
6543                 cfs_rq->h_nr_running++;
6544                 cfs_rq->idle_h_nr_running += idle_h_nr_running;
6545
6546                 if (cfs_rq_is_idle(cfs_rq))
6547                         idle_h_nr_running = 1;
6548
6549                 /* end evaluation on encountering a throttled cfs_rq */
6550                 if (cfs_rq_throttled(cfs_rq))
6551                         goto enqueue_throttle;
6552         }
6553
6554         /* At this point se is NULL and we are at root level*/
6555         add_nr_running(rq, 1);
6556
6557         /*
6558          * Since new tasks are assigned an initial util_avg equal to
6559          * half of the spare capacity of their CPU, tiny tasks have the
6560          * ability to cross the overutilized threshold, which will
6561          * result in the load balancer ruining all the task placement
6562          * done by EAS. As a way to mitigate that effect, do not account
6563          * for the first enqueue operation of new tasks during the
6564          * overutilized flag detection.
6565          *
6566          * A better way of solving this problem would be to wait for
6567          * the PELT signals of tasks to converge before taking them
6568          * into account, but that is not straightforward to implement,
6569          * and the following generally works well enough in practice.
6570          */
6571         if (!task_new)
6572                 update_overutilized_status(rq);
6573
6574 enqueue_throttle:
6575         assert_list_leaf_cfs_rq(rq);
6576
6577         hrtick_update(rq);
6578 }
6579
6580 static void set_next_buddy(struct sched_entity *se);
6581
6582 /*
6583  * The dequeue_task method is called before nr_running is
6584  * decreased. We remove the task from the rbtree and
6585  * update the fair scheduling stats:
6586  */
6587 static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
6588 {
6589         struct cfs_rq *cfs_rq;
6590         struct sched_entity *se = &p->se;
6591         int task_sleep = flags & DEQUEUE_SLEEP;
6592         int idle_h_nr_running = task_has_idle_policy(p);
6593         bool was_sched_idle = sched_idle_rq(rq);
6594
6595         util_est_dequeue(&rq->cfs, p);
6596
6597         for_each_sched_entity(se) {
6598                 cfs_rq = cfs_rq_of(se);
6599                 dequeue_entity(cfs_rq, se, flags);
6600
6601                 cfs_rq->h_nr_running--;
6602                 cfs_rq->idle_h_nr_running -= idle_h_nr_running;
6603
6604                 if (cfs_rq_is_idle(cfs_rq))
6605                         idle_h_nr_running = 1;
6606
6607                 /* end evaluation on encountering a throttled cfs_rq */
6608                 if (cfs_rq_throttled(cfs_rq))
6609                         goto dequeue_throttle;
6610
6611                 /* Don't dequeue parent if it has other entities besides us */
6612                 if (cfs_rq->load.weight) {
6613                         /* Avoid re-evaluating load for this entity: */
6614                         se = parent_entity(se);
6615                         /*
6616                          * Bias pick_next to pick a task from this cfs_rq, as
6617                          * p is sleeping when it is within its sched_slice.
6618                          */
6619                         if (task_sleep && se && !throttled_hierarchy(cfs_rq))
6620                                 set_next_buddy(se);
6621                         break;
6622                 }
6623                 flags |= DEQUEUE_SLEEP;
6624         }
6625
6626         for_each_sched_entity(se) {
6627                 cfs_rq = cfs_rq_of(se);
6628
6629                 update_load_avg(cfs_rq, se, UPDATE_TG);
6630                 se_update_runnable(se);
6631                 update_cfs_group(se);
6632
6633                 cfs_rq->h_nr_running--;
6634                 cfs_rq->idle_h_nr_running -= idle_h_nr_running;
6635
6636                 if (cfs_rq_is_idle(cfs_rq))
6637                         idle_h_nr_running = 1;
6638
6639                 /* end evaluation on encountering a throttled cfs_rq */
6640                 if (cfs_rq_throttled(cfs_rq))
6641                         goto dequeue_throttle;
6642
6643         }
6644
6645         /* At this point se is NULL and we are at root level*/
6646         sub_nr_running(rq, 1);
6647
6648         /* balance early to pull high priority tasks */
6649         if (unlikely(!was_sched_idle && sched_idle_rq(rq)))
6650                 rq->next_balance = jiffies;
6651
6652 dequeue_throttle:
6653         util_est_update(&rq->cfs, p, task_sleep);
6654         hrtick_update(rq);
6655 }
6656
6657 #ifdef CONFIG_SMP
6658
6659 /* Working cpumask for: load_balance, load_balance_newidle. */
6660 static DEFINE_PER_CPU(cpumask_var_t, load_balance_mask);
6661 static DEFINE_PER_CPU(cpumask_var_t, select_rq_mask);
6662 static DEFINE_PER_CPU(cpumask_var_t, should_we_balance_tmpmask);
6663
6664 #ifdef CONFIG_NO_HZ_COMMON
6665
6666 static struct {
6667         cpumask_var_t idle_cpus_mask;
6668         atomic_t nr_cpus;
6669         int has_blocked;                /* Idle CPUS has blocked load */
6670         int needs_update;               /* Newly idle CPUs need their next_balance collated */
6671         unsigned long next_balance;     /* in jiffy units */
6672         unsigned long next_blocked;     /* Next update of blocked load in jiffies */
6673 } nohz ____cacheline_aligned;
6674
6675 #endif /* CONFIG_NO_HZ_COMMON */
6676
6677 static unsigned long cpu_load(struct rq *rq)
6678 {
6679         return cfs_rq_load_avg(&rq->cfs);
6680 }
6681
6682 /*
6683  * cpu_load_without - compute CPU load without any contributions from *p
6684  * @cpu: the CPU which load is requested
6685  * @p: the task which load should be discounted
6686  *
6687  * The load of a CPU is defined by the load of tasks currently enqueued on that
6688  * CPU as well as tasks which are currently sleeping after an execution on that
6689  * CPU.
6690  *
6691  * This method returns the load of the specified CPU by discounting the load of
6692  * the specified task, whenever the task is currently contributing to the CPU
6693  * load.
6694  */
6695 static unsigned long cpu_load_without(struct rq *rq, struct task_struct *p)
6696 {
6697         struct cfs_rq *cfs_rq;
6698         unsigned int load;
6699
6700         /* Task has no contribution or is new */
6701         if (cpu_of(rq) != task_cpu(p) || !READ_ONCE(p->se.avg.last_update_time))
6702                 return cpu_load(rq);
6703
6704         cfs_rq = &rq->cfs;
6705         load = READ_ONCE(cfs_rq->avg.load_avg);
6706
6707         /* Discount task's util from CPU's util */
6708         lsub_positive(&load, task_h_load(p));
6709
6710         return load;
6711 }
6712
6713 static unsigned long cpu_runnable(struct rq *rq)
6714 {
6715         return cfs_rq_runnable_avg(&rq->cfs);
6716 }
6717
6718 static unsigned long cpu_runnable_without(struct rq *rq, struct task_struct *p)
6719 {
6720         struct cfs_rq *cfs_rq;
6721         unsigned int runnable;
6722
6723         /* Task has no contribution or is new */
6724         if (cpu_of(rq) != task_cpu(p) || !READ_ONCE(p->se.avg.last_update_time))
6725                 return cpu_runnable(rq);
6726
6727         cfs_rq = &rq->cfs;
6728         runnable = READ_ONCE(cfs_rq->avg.runnable_avg);
6729
6730         /* Discount task's runnable from CPU's runnable */
6731         lsub_positive(&runnable, p->se.avg.runnable_avg);
6732
6733         return runnable;
6734 }
6735
6736 static unsigned long capacity_of(int cpu)
6737 {
6738         return cpu_rq(cpu)->cpu_capacity;
6739 }
6740
6741 static void record_wakee(struct task_struct *p)
6742 {
6743         /*
6744          * Only decay a single time; tasks that have less then 1 wakeup per
6745          * jiffy will not have built up many flips.
6746          */
6747         if (time_after(jiffies, current->wakee_flip_decay_ts + HZ)) {
6748                 current->wakee_flips >>= 1;
6749                 current->wakee_flip_decay_ts = jiffies;
6750         }
6751
6752         if (current->last_wakee != p) {
6753                 current->last_wakee = p;
6754                 current->wakee_flips++;
6755         }
6756 }
6757
6758 /*
6759  * Detect M:N waker/wakee relationships via a switching-frequency heuristic.
6760  *
6761  * A waker of many should wake a different task than the one last awakened
6762  * at a frequency roughly N times higher than one of its wakees.
6763  *
6764  * In order to determine whether we should let the load spread vs consolidating
6765  * to shared cache, we look for a minimum 'flip' frequency of llc_size in one
6766  * partner, and a factor of lls_size higher frequency in the other.
6767  *
6768  * With both conditions met, we can be relatively sure that the relationship is
6769  * non-monogamous, with partner count exceeding socket size.
6770  *
6771  * Waker/wakee being client/server, worker/dispatcher, interrupt source or
6772  * whatever is irrelevant, spread criteria is apparent partner count exceeds
6773  * socket size.
6774  */
6775 static int wake_wide(struct task_struct *p)
6776 {
6777         unsigned int master = current->wakee_flips;
6778         unsigned int slave = p->wakee_flips;
6779         int factor = __this_cpu_read(sd_llc_size);
6780
6781         if (master < slave)
6782                 swap(master, slave);
6783         if (slave < factor || master < slave * factor)
6784                 return 0;
6785         return 1;
6786 }
6787
6788 /*
6789  * The purpose of wake_affine() is to quickly determine on which CPU we can run
6790  * soonest. For the purpose of speed we only consider the waking and previous
6791  * CPU.
6792  *
6793  * wake_affine_idle() - only considers 'now', it check if the waking CPU is
6794  *                      cache-affine and is (or will be) idle.
6795  *
6796  * wake_affine_weight() - considers the weight to reflect the average
6797  *                        scheduling latency of the CPUs. This seems to work
6798  *                        for the overloaded case.
6799  */
6800 static int
6801 wake_affine_idle(int this_cpu, int prev_cpu, int sync)
6802 {
6803         /*
6804          * If this_cpu is idle, it implies the wakeup is from interrupt
6805          * context. Only allow the move if cache is shared. Otherwise an
6806          * interrupt intensive workload could force all tasks onto one
6807          * node depending on the IO topology or IRQ affinity settings.
6808          *
6809          * If the prev_cpu is idle and cache affine then avoid a migration.
6810          * There is no guarantee that the cache hot data from an interrupt
6811          * is more important than cache hot data on the prev_cpu and from
6812          * a cpufreq perspective, it's better to have higher utilisation
6813          * on one CPU.
6814          */
6815         if (available_idle_cpu(this_cpu) && cpus_share_cache(this_cpu, prev_cpu))
6816                 return available_idle_cpu(prev_cpu) ? prev_cpu : this_cpu;
6817
6818         if (sync && cpu_rq(this_cpu)->nr_running == 1)
6819                 return this_cpu;
6820
6821         if (available_idle_cpu(prev_cpu))
6822                 return prev_cpu;
6823
6824         return nr_cpumask_bits;
6825 }
6826
6827 static int
6828 wake_affine_weight(struct sched_domain *sd, struct task_struct *p,
6829                    int this_cpu, int prev_cpu, int sync)
6830 {
6831         s64 this_eff_load, prev_eff_load;
6832         unsigned long task_load;
6833
6834         this_eff_load = cpu_load(cpu_rq(this_cpu));
6835
6836         if (sync) {
6837                 unsigned long current_load = task_h_load(current);
6838
6839                 if (current_load > this_eff_load)
6840                         return this_cpu;
6841
6842                 this_eff_load -= current_load;
6843         }
6844
6845         task_load = task_h_load(p);
6846
6847         this_eff_load += task_load;
6848         if (sched_feat(WA_BIAS))
6849                 this_eff_load *= 100;
6850         this_eff_load *= capacity_of(prev_cpu);
6851
6852         prev_eff_load = cpu_load(cpu_rq(prev_cpu));
6853         prev_eff_load -= task_load;
6854         if (sched_feat(WA_BIAS))
6855                 prev_eff_load *= 100 + (sd->imbalance_pct - 100) / 2;
6856         prev_eff_load *= capacity_of(this_cpu);
6857
6858         /*
6859          * If sync, adjust the weight of prev_eff_load such that if
6860          * prev_eff == this_eff that select_idle_sibling() will consider
6861          * stacking the wakee on top of the waker if no other CPU is
6862          * idle.
6863          */
6864         if (sync)
6865                 prev_eff_load += 1;
6866
6867         return this_eff_load < prev_eff_load ? this_cpu : nr_cpumask_bits;
6868 }
6869
6870 static int wake_affine(struct sched_domain *sd, struct task_struct *p,
6871                        int this_cpu, int prev_cpu, int sync)
6872 {
6873         int target = nr_cpumask_bits;
6874
6875         if (sched_feat(WA_IDLE))
6876                 target = wake_affine_idle(this_cpu, prev_cpu, sync);
6877
6878         if (sched_feat(WA_WEIGHT) && target == nr_cpumask_bits)
6879                 target = wake_affine_weight(sd, p, this_cpu, prev_cpu, sync);
6880
6881         schedstat_inc(p->stats.nr_wakeups_affine_attempts);
6882         if (target != this_cpu)
6883                 return prev_cpu;
6884
6885         schedstat_inc(sd->ttwu_move_affine);
6886         schedstat_inc(p->stats.nr_wakeups_affine);
6887         return target;
6888 }
6889
6890 static struct sched_group *
6891 find_idlest_group(struct sched_domain *sd, struct task_struct *p, int this_cpu);
6892
6893 /*
6894  * find_idlest_group_cpu - find the idlest CPU among the CPUs in the group.
6895  */
6896 static int
6897 find_idlest_group_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
6898 {
6899         unsigned long load, min_load = ULONG_MAX;
6900         unsigned int min_exit_latency = UINT_MAX;
6901         u64 latest_idle_timestamp = 0;
6902         int least_loaded_cpu = this_cpu;
6903         int shallowest_idle_cpu = -1;
6904         int i;
6905
6906         /* Check if we have any choice: */
6907         if (group->group_weight == 1)
6908                 return cpumask_first(sched_group_span(group));
6909
6910         /* Traverse only the allowed CPUs */
6911         for_each_cpu_and(i, sched_group_span(group), p->cpus_ptr) {
6912                 struct rq *rq = cpu_rq(i);
6913
6914                 if (!sched_core_cookie_match(rq, p))
6915                         continue;
6916
6917                 if (sched_idle_cpu(i))
6918                         return i;
6919
6920                 if (available_idle_cpu(i)) {
6921                         struct cpuidle_state *idle = idle_get_state(rq);
6922                         if (idle && idle->exit_latency < min_exit_latency) {
6923                                 /*
6924                                  * We give priority to a CPU whose idle state
6925                                  * has the smallest exit latency irrespective
6926                                  * of any idle timestamp.
6927                                  */
6928                                 min_exit_latency = idle->exit_latency;
6929                                 latest_idle_timestamp = rq->idle_stamp;
6930                                 shallowest_idle_cpu = i;
6931                         } else if ((!idle || idle->exit_latency == min_exit_latency) &&
6932                                    rq->idle_stamp > latest_idle_timestamp) {
6933                                 /*
6934                                  * If equal or no active idle state, then
6935                                  * the most recently idled CPU might have
6936                                  * a warmer cache.
6937                                  */
6938                                 latest_idle_timestamp = rq->idle_stamp;
6939                                 shallowest_idle_cpu = i;
6940                         }
6941                 } else if (shallowest_idle_cpu == -1) {
6942                         load = cpu_load(cpu_rq(i));
6943                         if (load < min_load) {
6944                                 min_load = load;
6945                                 least_loaded_cpu = i;
6946                         }
6947                 }
6948         }
6949
6950         return shallowest_idle_cpu != -1 ? shallowest_idle_cpu : least_loaded_cpu;
6951 }
6952
6953 static inline int find_idlest_cpu(struct sched_domain *sd, struct task_struct *p,
6954                                   int cpu, int prev_cpu, int sd_flag)
6955 {
6956         int new_cpu = cpu;
6957
6958         if (!cpumask_intersects(sched_domain_span(sd), p->cpus_ptr))
6959                 return prev_cpu;
6960
6961         /*
6962          * We need task's util for cpu_util_without, sync it up to
6963          * prev_cpu's last_update_time.
6964          */
6965         if (!(sd_flag & SD_BALANCE_FORK))
6966                 sync_entity_load_avg(&p->se);
6967
6968         while (sd) {
6969                 struct sched_group *group;
6970                 struct sched_domain *tmp;
6971                 int weight;
6972
6973                 if (!(sd->flags & sd_flag)) {
6974                         sd = sd->child;
6975                         continue;
6976                 }
6977
6978                 group = find_idlest_group(sd, p, cpu);
6979                 if (!group) {
6980                         sd = sd->child;
6981                         continue;
6982                 }
6983
6984                 new_cpu = find_idlest_group_cpu(group, p, cpu);
6985                 if (new_cpu == cpu) {
6986                         /* Now try balancing at a lower domain level of 'cpu': */
6987                         sd = sd->child;
6988                         continue;
6989                 }
6990
6991                 /* Now try balancing at a lower domain level of 'new_cpu': */
6992                 cpu = new_cpu;
6993                 weight = sd->span_weight;
6994                 sd = NULL;
6995                 for_each_domain(cpu, tmp) {
6996                         if (weight <= tmp->span_weight)
6997                                 break;
6998                         if (tmp->flags & sd_flag)
6999                                 sd = tmp;
7000                 }
7001         }
7002
7003         return new_cpu;
7004 }
7005
7006 static inline int __select_idle_cpu(int cpu, struct task_struct *p)
7007 {
7008         if ((available_idle_cpu(cpu) || sched_idle_cpu(cpu)) &&
7009             sched_cpu_cookie_match(cpu_rq(cpu), p))
7010                 return cpu;
7011
7012         return -1;
7013 }
7014
7015 #ifdef CONFIG_SCHED_SMT
7016 DEFINE_STATIC_KEY_FALSE(sched_smt_present);
7017 EXPORT_SYMBOL_GPL(sched_smt_present);
7018
7019 static inline void set_idle_cores(int cpu, int val)
7020 {
7021         struct sched_domain_shared *sds;
7022
7023         sds = rcu_dereference(per_cpu(sd_llc_shared, cpu));
7024         if (sds)
7025                 WRITE_ONCE(sds->has_idle_cores, val);
7026 }
7027
7028 static inline bool test_idle_cores(int cpu)
7029 {
7030         struct sched_domain_shared *sds;
7031
7032         sds = rcu_dereference(per_cpu(sd_llc_shared, cpu));
7033         if (sds)
7034                 return READ_ONCE(sds->has_idle_cores);
7035
7036         return false;
7037 }
7038
7039 /*
7040  * Scans the local SMT mask to see if the entire core is idle, and records this
7041  * information in sd_llc_shared->has_idle_cores.
7042  *
7043  * Since SMT siblings share all cache levels, inspecting this limited remote
7044  * state should be fairly cheap.
7045  */
7046 void __update_idle_core(struct rq *rq)
7047 {
7048         int core = cpu_of(rq);
7049         int cpu;
7050
7051         rcu_read_lock();
7052         if (test_idle_cores(core))
7053                 goto unlock;
7054
7055         for_each_cpu(cpu, cpu_smt_mask(core)) {
7056                 if (cpu == core)
7057                         continue;
7058
7059                 if (!available_idle_cpu(cpu))
7060                         goto unlock;
7061         }
7062
7063         set_idle_cores(core, 1);
7064 unlock:
7065         rcu_read_unlock();
7066 }
7067
7068 /*
7069  * Scan the entire LLC domain for idle cores; this dynamically switches off if
7070  * there are no idle cores left in the system; tracked through
7071  * sd_llc->shared->has_idle_cores and enabled through update_idle_core() above.
7072  */
7073 static int select_idle_core(struct task_struct *p, int core, struct cpumask *cpus, int *idle_cpu)
7074 {
7075         bool idle = true;
7076         int cpu;
7077
7078         for_each_cpu(cpu, cpu_smt_mask(core)) {
7079                 if (!available_idle_cpu(cpu)) {
7080                         idle = false;
7081                         if (*idle_cpu == -1) {
7082                                 if (sched_idle_cpu(cpu) && cpumask_test_cpu(cpu, p->cpus_ptr)) {
7083                                         *idle_cpu = cpu;
7084                                         break;
7085                                 }
7086                                 continue;
7087                         }
7088                         break;
7089                 }
7090                 if (*idle_cpu == -1 && cpumask_test_cpu(cpu, p->cpus_ptr))
7091                         *idle_cpu = cpu;
7092         }
7093
7094         if (idle)
7095                 return core;
7096
7097         cpumask_andnot(cpus, cpus, cpu_smt_mask(core));
7098         return -1;
7099 }
7100
7101 /*
7102  * Scan the local SMT mask for idle CPUs.
7103  */
7104 static int select_idle_smt(struct task_struct *p, int target)
7105 {
7106         int cpu;
7107
7108         for_each_cpu_and(cpu, cpu_smt_mask(target), p->cpus_ptr) {
7109                 if (cpu == target)
7110                         continue;
7111                 if (available_idle_cpu(cpu) || sched_idle_cpu(cpu))
7112                         return cpu;
7113         }
7114
7115         return -1;
7116 }
7117
7118 #else /* CONFIG_SCHED_SMT */
7119
7120 static inline void set_idle_cores(int cpu, int val)
7121 {
7122 }
7123
7124 static inline bool test_idle_cores(int cpu)
7125 {
7126         return false;
7127 }
7128
7129 static inline int select_idle_core(struct task_struct *p, int core, struct cpumask *cpus, int *idle_cpu)
7130 {
7131         return __select_idle_cpu(core, p);
7132 }
7133
7134 static inline int select_idle_smt(struct task_struct *p, int target)
7135 {
7136         return -1;
7137 }
7138
7139 #endif /* CONFIG_SCHED_SMT */
7140
7141 /*
7142  * Scan the LLC domain for idle CPUs; this is dynamically regulated by
7143  * comparing the average scan cost (tracked in sd->avg_scan_cost) against the
7144  * average idle time for this rq (as found in rq->avg_idle).
7145  */
7146 static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool has_idle_core, int target)
7147 {
7148         struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
7149         int i, cpu, idle_cpu = -1, nr = INT_MAX;
7150         struct sched_domain_shared *sd_share;
7151         struct rq *this_rq = this_rq();
7152         int this = smp_processor_id();
7153         struct sched_domain *this_sd = NULL;
7154         u64 time = 0;
7155
7156         cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
7157
7158         if (sched_feat(SIS_PROP) && !has_idle_core) {
7159                 u64 avg_cost, avg_idle, span_avg;
7160                 unsigned long now = jiffies;
7161
7162                 this_sd = rcu_dereference(*this_cpu_ptr(&sd_llc));
7163                 if (!this_sd)
7164                         return -1;
7165
7166                 /*
7167                  * If we're busy, the assumption that the last idle period
7168                  * predicts the future is flawed; age away the remaining
7169                  * predicted idle time.
7170                  */
7171                 if (unlikely(this_rq->wake_stamp < now)) {
7172                         while (this_rq->wake_stamp < now && this_rq->wake_avg_idle) {
7173                                 this_rq->wake_stamp++;
7174                                 this_rq->wake_avg_idle >>= 1;
7175                         }
7176                 }
7177
7178                 avg_idle = this_rq->wake_avg_idle;
7179                 avg_cost = this_sd->avg_scan_cost + 1;
7180
7181                 span_avg = sd->span_weight * avg_idle;
7182                 if (span_avg > 4*avg_cost)
7183                         nr = div_u64(span_avg, avg_cost);
7184                 else
7185                         nr = 4;
7186
7187                 time = cpu_clock(this);
7188         }
7189
7190         if (sched_feat(SIS_UTIL)) {
7191                 sd_share = rcu_dereference(per_cpu(sd_llc_shared, target));
7192                 if (sd_share) {
7193                         /* because !--nr is the condition to stop scan */
7194                         nr = READ_ONCE(sd_share->nr_idle_scan) + 1;
7195                         /* overloaded LLC is unlikely to have idle cpu/core */
7196                         if (nr == 1)
7197                                 return -1;
7198                 }
7199         }
7200
7201         for_each_cpu_wrap(cpu, cpus, target + 1) {
7202                 if (has_idle_core) {
7203                         i = select_idle_core(p, cpu, cpus, &idle_cpu);
7204                         if ((unsigned int)i < nr_cpumask_bits)
7205                                 return i;
7206
7207                 } else {
7208                         if (!--nr)
7209                                 return -1;
7210                         idle_cpu = __select_idle_cpu(cpu, p);
7211                         if ((unsigned int)idle_cpu < nr_cpumask_bits)
7212                                 break;
7213                 }
7214         }
7215
7216         if (has_idle_core)
7217                 set_idle_cores(target, false);
7218
7219         if (sched_feat(SIS_PROP) && this_sd && !has_idle_core) {
7220                 time = cpu_clock(this) - time;
7221
7222                 /*
7223                  * Account for the scan cost of wakeups against the average
7224                  * idle time.
7225                  */
7226                 this_rq->wake_avg_idle -= min(this_rq->wake_avg_idle, time);
7227
7228                 update_avg(&this_sd->avg_scan_cost, time);
7229         }
7230
7231         return idle_cpu;
7232 }
7233
7234 /*
7235  * Scan the asym_capacity domain for idle CPUs; pick the first idle one on which
7236  * the task fits. If no CPU is big enough, but there are idle ones, try to
7237  * maximize capacity.
7238  */
7239 static int
7240 select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target)
7241 {
7242         unsigned long task_util, util_min, util_max, best_cap = 0;
7243         int fits, best_fits = 0;
7244         int cpu, best_cpu = -1;
7245         struct cpumask *cpus;
7246
7247         cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
7248         cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
7249
7250         task_util = task_util_est(p);
7251         util_min = uclamp_eff_value(p, UCLAMP_MIN);
7252         util_max = uclamp_eff_value(p, UCLAMP_MAX);
7253
7254         for_each_cpu_wrap(cpu, cpus, target) {
7255                 unsigned long cpu_cap = capacity_of(cpu);
7256
7257                 if (!available_idle_cpu(cpu) && !sched_idle_cpu(cpu))
7258                         continue;
7259
7260                 fits = util_fits_cpu(task_util, util_min, util_max, cpu);
7261
7262                 /* This CPU fits with all requirements */
7263                 if (fits > 0)
7264                         return cpu;
7265                 /*
7266                  * Only the min performance hint (i.e. uclamp_min) doesn't fit.
7267                  * Look for the CPU with best capacity.
7268                  */
7269                 else if (fits < 0)
7270                         cpu_cap = capacity_orig_of(cpu) - thermal_load_avg(cpu_rq(cpu));
7271
7272                 /*
7273                  * First, select CPU which fits better (-1 being better than 0).
7274                  * Then, select the one with best capacity at same level.
7275                  */
7276                 if ((fits < best_fits) ||
7277                     ((fits == best_fits) && (cpu_cap > best_cap))) {
7278                         best_cap = cpu_cap;
7279                         best_cpu = cpu;
7280                         best_fits = fits;
7281                 }
7282         }
7283
7284         return best_cpu;
7285 }
7286
7287 static inline bool asym_fits_cpu(unsigned long util,
7288                                  unsigned long util_min,
7289                                  unsigned long util_max,
7290                                  int cpu)
7291 {
7292         if (sched_asym_cpucap_active())
7293                 /*
7294                  * Return true only if the cpu fully fits the task requirements
7295                  * which include the utilization and the performance hints.
7296                  */
7297                 return (util_fits_cpu(util, util_min, util_max, cpu) > 0);
7298
7299         return true;
7300 }
7301
7302 /*
7303  * Try and locate an idle core/thread in the LLC cache domain.
7304  */
7305 static int select_idle_sibling(struct task_struct *p, int prev, int target)
7306 {
7307         bool has_idle_core = false;
7308         struct sched_domain *sd;
7309         unsigned long task_util, util_min, util_max;
7310         int i, recent_used_cpu;
7311
7312         /*
7313          * On asymmetric system, update task utilization because we will check
7314          * that the task fits with cpu's capacity.
7315          */
7316         if (sched_asym_cpucap_active()) {
7317                 sync_entity_load_avg(&p->se);
7318                 task_util = task_util_est(p);
7319                 util_min = uclamp_eff_value(p, UCLAMP_MIN);
7320                 util_max = uclamp_eff_value(p, UCLAMP_MAX);
7321         }
7322
7323         /*
7324          * per-cpu select_rq_mask usage
7325          */
7326         lockdep_assert_irqs_disabled();
7327
7328         if ((available_idle_cpu(target) || sched_idle_cpu(target)) &&
7329             asym_fits_cpu(task_util, util_min, util_max, target))
7330                 return target;
7331
7332         /*
7333          * If the previous CPU is cache affine and idle, don't be stupid:
7334          */
7335         if (prev != target && cpus_share_cache(prev, target) &&
7336             (available_idle_cpu(prev) || sched_idle_cpu(prev)) &&
7337             asym_fits_cpu(task_util, util_min, util_max, prev))
7338                 return prev;
7339
7340         /*
7341          * Allow a per-cpu kthread to stack with the wakee if the
7342          * kworker thread and the tasks previous CPUs are the same.
7343          * The assumption is that the wakee queued work for the
7344          * per-cpu kthread that is now complete and the wakeup is
7345          * essentially a sync wakeup. An obvious example of this
7346          * pattern is IO completions.
7347          */
7348         if (is_per_cpu_kthread(current) &&
7349             in_task() &&
7350             prev == smp_processor_id() &&
7351             this_rq()->nr_running <= 1 &&
7352             asym_fits_cpu(task_util, util_min, util_max, prev)) {
7353                 return prev;
7354         }
7355
7356         /* Check a recently used CPU as a potential idle candidate: */
7357         recent_used_cpu = p->recent_used_cpu;
7358         p->recent_used_cpu = prev;
7359         if (recent_used_cpu != prev &&
7360             recent_used_cpu != target &&
7361             cpus_share_cache(recent_used_cpu, target) &&
7362             (available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
7363             cpumask_test_cpu(recent_used_cpu, p->cpus_ptr) &&
7364             asym_fits_cpu(task_util, util_min, util_max, recent_used_cpu)) {
7365                 return recent_used_cpu;
7366         }
7367
7368         /*
7369          * For asymmetric CPU capacity systems, our domain of interest is
7370          * sd_asym_cpucapacity rather than sd_llc.
7371          */
7372         if (sched_asym_cpucap_active()) {
7373                 sd = rcu_dereference(per_cpu(sd_asym_cpucapacity, target));
7374                 /*
7375                  * On an asymmetric CPU capacity system where an exclusive
7376                  * cpuset defines a symmetric island (i.e. one unique
7377                  * capacity_orig value through the cpuset), the key will be set
7378                  * but the CPUs within that cpuset will not have a domain with
7379                  * SD_ASYM_CPUCAPACITY. These should follow the usual symmetric
7380                  * capacity path.
7381                  */
7382                 if (sd) {
7383                         i = select_idle_capacity(p, sd, target);
7384                         return ((unsigned)i < nr_cpumask_bits) ? i : target;
7385                 }
7386         }
7387
7388         sd = rcu_dereference(per_cpu(sd_llc, target));
7389         if (!sd)
7390                 return target;
7391
7392         if (sched_smt_active()) {
7393                 has_idle_core = test_idle_cores(target);
7394
7395                 if (!has_idle_core && cpus_share_cache(prev, target)) {
7396                         i = select_idle_smt(p, prev);
7397                         if ((unsigned int)i < nr_cpumask_bits)
7398                                 return i;
7399                 }
7400         }
7401
7402         i = select_idle_cpu(p, sd, has_idle_core, target);
7403         if ((unsigned)i < nr_cpumask_bits)
7404                 return i;
7405
7406         return target;
7407 }
7408
7409 /**
7410  * cpu_util() - Estimates the amount of CPU capacity used by CFS tasks.
7411  * @cpu: the CPU to get the utilization for
7412  * @p: task for which the CPU utilization should be predicted or NULL
7413  * @dst_cpu: CPU @p migrates to, -1 if @p moves from @cpu or @p == NULL
7414  * @boost: 1 to enable boosting, otherwise 0
7415  *
7416  * The unit of the return value must be the same as the one of CPU capacity
7417  * so that CPU utilization can be compared with CPU capacity.
7418  *
7419  * CPU utilization is the sum of running time of runnable tasks plus the
7420  * recent utilization of currently non-runnable tasks on that CPU.
7421  * It represents the amount of CPU capacity currently used by CFS tasks in
7422  * the range [0..max CPU capacity] with max CPU capacity being the CPU
7423  * capacity at f_max.
7424  *
7425  * The estimated CPU utilization is defined as the maximum between CPU
7426  * utilization and sum of the estimated utilization of the currently
7427  * runnable tasks on that CPU. It preserves a utilization "snapshot" of
7428  * previously-executed tasks, which helps better deduce how busy a CPU will
7429  * be when a long-sleeping task wakes up. The contribution to CPU utilization
7430  * of such a task would be significantly decayed at this point of time.
7431  *
7432  * Boosted CPU utilization is defined as max(CPU runnable, CPU utilization).
7433  * CPU contention for CFS tasks can be detected by CPU runnable > CPU
7434  * utilization. Boosting is implemented in cpu_util() so that internal
7435  * users (e.g. EAS) can use it next to external users (e.g. schedutil),
7436  * latter via cpu_util_cfs_boost().
7437  *
7438  * CPU utilization can be higher than the current CPU capacity
7439  * (f_curr/f_max * max CPU capacity) or even the max CPU capacity because
7440  * of rounding errors as well as task migrations or wakeups of new tasks.
7441  * CPU utilization has to be capped to fit into the [0..max CPU capacity]
7442  * range. Otherwise a group of CPUs (CPU0 util = 121% + CPU1 util = 80%)
7443  * could be seen as over-utilized even though CPU1 has 20% of spare CPU
7444  * capacity. CPU utilization is allowed to overshoot current CPU capacity
7445  * though since this is useful for predicting the CPU capacity required
7446  * after task migrations (scheduler-driven DVFS).
7447  *
7448  * Return: (Boosted) (estimated) utilization for the specified CPU.
7449  */
7450 static unsigned long
7451 cpu_util(int cpu, struct task_struct *p, int dst_cpu, int boost)
7452 {
7453         struct cfs_rq *cfs_rq = &cpu_rq(cpu)->cfs;
7454         unsigned long util = READ_ONCE(cfs_rq->avg.util_avg);
7455         unsigned long runnable;
7456
7457         if (boost) {
7458                 runnable = READ_ONCE(cfs_rq->avg.runnable_avg);
7459                 util = max(util, runnable);
7460         }
7461
7462         /*
7463          * If @dst_cpu is -1 or @p migrates from @cpu to @dst_cpu remove its
7464          * contribution. If @p migrates from another CPU to @cpu add its
7465          * contribution. In all the other cases @cpu is not impacted by the
7466          * migration so its util_avg is already correct.
7467          */
7468         if (p && task_cpu(p) == cpu && dst_cpu != cpu)
7469                 lsub_positive(&util, task_util(p));
7470         else if (p && task_cpu(p) != cpu && dst_cpu == cpu)
7471                 util += task_util(p);
7472
7473         if (sched_feat(UTIL_EST)) {
7474                 unsigned long util_est;
7475
7476                 util_est = READ_ONCE(cfs_rq->avg.util_est.enqueued);
7477
7478                 /*
7479                  * During wake-up @p isn't enqueued yet and doesn't contribute
7480                  * to any cpu_rq(cpu)->cfs.avg.util_est.enqueued.
7481                  * If @dst_cpu == @cpu add it to "simulate" cpu_util after @p
7482                  * has been enqueued.
7483                  *
7484                  * During exec (@dst_cpu = -1) @p is enqueued and does
7485                  * contribute to cpu_rq(cpu)->cfs.util_est.enqueued.
7486                  * Remove it to "simulate" cpu_util without @p's contribution.
7487                  *
7488                  * Despite the task_on_rq_queued(@p) check there is still a
7489                  * small window for a possible race when an exec
7490                  * select_task_rq_fair() races with LB's detach_task().
7491                  *
7492                  *   detach_task()
7493                  *     deactivate_task()
7494                  *       p->on_rq = TASK_ON_RQ_MIGRATING;
7495                  *       -------------------------------- A
7496                  *       dequeue_task()                    \
7497                  *         dequeue_task_fair()              + Race Time
7498                  *           util_est_dequeue()            /
7499                  *       -------------------------------- B
7500                  *
7501                  * The additional check "current == p" is required to further
7502                  * reduce the race window.
7503                  */
7504                 if (dst_cpu == cpu)
7505                         util_est += _task_util_est(p);
7506                 else if (p && unlikely(task_on_rq_queued(p) || current == p))
7507                         lsub_positive(&util_est, _task_util_est(p));
7508
7509                 util = max(util, util_est);
7510         }
7511
7512         return min(util, capacity_orig_of(cpu));
7513 }
7514
7515 unsigned long cpu_util_cfs(int cpu)
7516 {
7517         return cpu_util(cpu, NULL, -1, 0);
7518 }
7519
7520 unsigned long cpu_util_cfs_boost(int cpu)
7521 {
7522         return cpu_util(cpu, NULL, -1, 1);
7523 }
7524
7525 /*
7526  * cpu_util_without: compute cpu utilization without any contributions from *p
7527  * @cpu: the CPU which utilization is requested
7528  * @p: the task which utilization should be discounted
7529  *
7530  * The utilization of a CPU is defined by the utilization of tasks currently
7531  * enqueued on that CPU as well as tasks which are currently sleeping after an
7532  * execution on that CPU.
7533  *
7534  * This method returns the utilization of the specified CPU by discounting the
7535  * utilization of the specified task, whenever the task is currently
7536  * contributing to the CPU utilization.
7537  */
7538 static unsigned long cpu_util_without(int cpu, struct task_struct *p)
7539 {
7540         /* Task has no contribution or is new */
7541         if (cpu != task_cpu(p) || !READ_ONCE(p->se.avg.last_update_time))
7542                 p = NULL;
7543
7544         return cpu_util(cpu, p, -1, 0);
7545 }
7546
7547 /*
7548  * energy_env - Utilization landscape for energy estimation.
7549  * @task_busy_time: Utilization contribution by the task for which we test the
7550  *                  placement. Given by eenv_task_busy_time().
7551  * @pd_busy_time:   Utilization of the whole perf domain without the task
7552  *                  contribution. Given by eenv_pd_busy_time().
7553  * @cpu_cap:        Maximum CPU capacity for the perf domain.
7554  * @pd_cap:         Entire perf domain capacity. (pd->nr_cpus * cpu_cap).
7555  */
7556 struct energy_env {
7557         unsigned long task_busy_time;
7558         unsigned long pd_busy_time;
7559         unsigned long cpu_cap;
7560         unsigned long pd_cap;
7561 };
7562
7563 /*
7564  * Compute the task busy time for compute_energy(). This time cannot be
7565  * injected directly into effective_cpu_util() because of the IRQ scaling.
7566  * The latter only makes sense with the most recent CPUs where the task has
7567  * run.
7568  */
7569 static inline void eenv_task_busy_time(struct energy_env *eenv,
7570                                        struct task_struct *p, int prev_cpu)
7571 {
7572         unsigned long busy_time, max_cap = arch_scale_cpu_capacity(prev_cpu);
7573         unsigned long irq = cpu_util_irq(cpu_rq(prev_cpu));
7574
7575         if (unlikely(irq >= max_cap))
7576                 busy_time = max_cap;
7577         else
7578                 busy_time = scale_irq_capacity(task_util_est(p), irq, max_cap);
7579
7580         eenv->task_busy_time = busy_time;
7581 }
7582
7583 /*
7584  * Compute the perf_domain (PD) busy time for compute_energy(). Based on the
7585  * utilization for each @pd_cpus, it however doesn't take into account
7586  * clamping since the ratio (utilization / cpu_capacity) is already enough to
7587  * scale the EM reported power consumption at the (eventually clamped)
7588  * cpu_capacity.
7589  *
7590  * The contribution of the task @p for which we want to estimate the
7591  * energy cost is removed (by cpu_util()) and must be calculated
7592  * separately (see eenv_task_busy_time). This ensures:
7593  *
7594  *   - A stable PD utilization, no matter which CPU of that PD we want to place
7595  *     the task on.
7596  *
7597  *   - A fair comparison between CPUs as the task contribution (task_util())
7598  *     will always be the same no matter which CPU utilization we rely on
7599  *     (util_avg or util_est).
7600  *
7601  * Set @eenv busy time for the PD that spans @pd_cpus. This busy time can't
7602  * exceed @eenv->pd_cap.
7603  */
7604 static inline void eenv_pd_busy_time(struct energy_env *eenv,
7605                                      struct cpumask *pd_cpus,
7606                                      struct task_struct *p)
7607 {
7608         unsigned long busy_time = 0;
7609         int cpu;
7610
7611         for_each_cpu(cpu, pd_cpus) {
7612                 unsigned long util = cpu_util(cpu, p, -1, 0);
7613
7614                 busy_time += effective_cpu_util(cpu, util, ENERGY_UTIL, NULL);
7615         }
7616
7617         eenv->pd_busy_time = min(eenv->pd_cap, busy_time);
7618 }
7619
7620 /*
7621  * Compute the maximum utilization for compute_energy() when the task @p
7622  * is placed on the cpu @dst_cpu.
7623  *
7624  * Returns the maximum utilization among @eenv->cpus. This utilization can't
7625  * exceed @eenv->cpu_cap.
7626  */
7627 static inline unsigned long
7628 eenv_pd_max_util(struct energy_env *eenv, struct cpumask *pd_cpus,
7629                  struct task_struct *p, int dst_cpu)
7630 {
7631         unsigned long max_util = 0;
7632         int cpu;
7633
7634         for_each_cpu(cpu, pd_cpus) {
7635                 struct task_struct *tsk = (cpu == dst_cpu) ? p : NULL;
7636                 unsigned long util = cpu_util(cpu, p, dst_cpu, 1);
7637                 unsigned long eff_util;
7638
7639                 /*
7640                  * Performance domain frequency: utilization clamping
7641                  * must be considered since it affects the selection
7642                  * of the performance domain frequency.
7643                  * NOTE: in case RT tasks are running, by default the
7644                  * FREQUENCY_UTIL's utilization can be max OPP.
7645                  */
7646                 eff_util = effective_cpu_util(cpu, util, FREQUENCY_UTIL, tsk);
7647                 max_util = max(max_util, eff_util);
7648         }
7649
7650         return min(max_util, eenv->cpu_cap);
7651 }
7652
7653 /*
7654  * compute_energy(): Use the Energy Model to estimate the energy that @pd would
7655  * consume for a given utilization landscape @eenv. When @dst_cpu < 0, the task
7656  * contribution is ignored.
7657  */
7658 static inline unsigned long
7659 compute_energy(struct energy_env *eenv, struct perf_domain *pd,
7660                struct cpumask *pd_cpus, struct task_struct *p, int dst_cpu)
7661 {
7662         unsigned long max_util = eenv_pd_max_util(eenv, pd_cpus, p, dst_cpu);
7663         unsigned long busy_time = eenv->pd_busy_time;
7664
7665         if (dst_cpu >= 0)
7666                 busy_time = min(eenv->pd_cap, busy_time + eenv->task_busy_time);
7667
7668         return em_cpu_energy(pd->em_pd, max_util, busy_time, eenv->cpu_cap);
7669 }
7670
7671 /*
7672  * find_energy_efficient_cpu(): Find most energy-efficient target CPU for the
7673  * waking task. find_energy_efficient_cpu() looks for the CPU with maximum
7674  * spare capacity in each performance domain and uses it as a potential
7675  * candidate to execute the task. Then, it uses the Energy Model to figure
7676  * out which of the CPU candidates is the most energy-efficient.
7677  *
7678  * The rationale for this heuristic is as follows. In a performance domain,
7679  * all the most energy efficient CPU candidates (according to the Energy
7680  * Model) are those for which we'll request a low frequency. When there are
7681  * several CPUs for which the frequency request will be the same, we don't
7682  * have enough data to break the tie between them, because the Energy Model
7683  * only includes active power costs. With this model, if we assume that
7684  * frequency requests follow utilization (e.g. using schedutil), the CPU with
7685  * the maximum spare capacity in a performance domain is guaranteed to be among
7686  * the best candidates of the performance domain.
7687  *
7688  * In practice, it could be preferable from an energy standpoint to pack
7689  * small tasks on a CPU in order to let other CPUs go in deeper idle states,
7690  * but that could also hurt our chances to go cluster idle, and we have no
7691  * ways to tell with the current Energy Model if this is actually a good
7692  * idea or not. So, find_energy_efficient_cpu() basically favors
7693  * cluster-packing, and spreading inside a cluster. That should at least be
7694  * a good thing for latency, and this is consistent with the idea that most
7695  * of the energy savings of EAS come from the asymmetry of the system, and
7696  * not so much from breaking the tie between identical CPUs. That's also the
7697  * reason why EAS is enabled in the topology code only for systems where
7698  * SD_ASYM_CPUCAPACITY is set.
7699  *
7700  * NOTE: Forkees are not accepted in the energy-aware wake-up path because
7701  * they don't have any useful utilization data yet and it's not possible to
7702  * forecast their impact on energy consumption. Consequently, they will be
7703  * placed by find_idlest_cpu() on the least loaded CPU, which might turn out
7704  * to be energy-inefficient in some use-cases. The alternative would be to
7705  * bias new tasks towards specific types of CPUs first, or to try to infer
7706  * their util_avg from the parent task, but those heuristics could hurt
7707  * other use-cases too. So, until someone finds a better way to solve this,
7708  * let's keep things simple by re-using the existing slow path.
7709  */
7710 static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
7711 {
7712         struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
7713         unsigned long prev_delta = ULONG_MAX, best_delta = ULONG_MAX;
7714         unsigned long p_util_min = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MIN) : 0;
7715         unsigned long p_util_max = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MAX) : 1024;
7716         struct root_domain *rd = this_rq()->rd;
7717         int cpu, best_energy_cpu, target = -1;
7718         int prev_fits = -1, best_fits = -1;
7719         unsigned long best_thermal_cap = 0;
7720         unsigned long prev_thermal_cap = 0;
7721         struct sched_domain *sd;
7722         struct perf_domain *pd;
7723         struct energy_env eenv;
7724
7725         rcu_read_lock();
7726         pd = rcu_dereference(rd->pd);
7727         if (!pd || READ_ONCE(rd->overutilized))
7728                 goto unlock;
7729
7730         /*
7731          * Energy-aware wake-up happens on the lowest sched_domain starting
7732          * from sd_asym_cpucapacity spanning over this_cpu and prev_cpu.
7733          */
7734         sd = rcu_dereference(*this_cpu_ptr(&sd_asym_cpucapacity));
7735         while (sd && !cpumask_test_cpu(prev_cpu, sched_domain_span(sd)))
7736                 sd = sd->parent;
7737         if (!sd)
7738                 goto unlock;
7739
7740         target = prev_cpu;
7741
7742         sync_entity_load_avg(&p->se);
7743         if (!task_util_est(p) && p_util_min == 0)
7744                 goto unlock;
7745
7746         eenv_task_busy_time(&eenv, p, prev_cpu);
7747
7748         for (; pd; pd = pd->next) {
7749                 unsigned long util_min = p_util_min, util_max = p_util_max;
7750                 unsigned long cpu_cap, cpu_thermal_cap, util;
7751                 long prev_spare_cap = -1, max_spare_cap = -1;
7752                 unsigned long rq_util_min, rq_util_max;
7753                 unsigned long cur_delta, base_energy;
7754                 int max_spare_cap_cpu = -1;
7755                 int fits, max_fits = -1;
7756
7757                 cpumask_and(cpus, perf_domain_span(pd), cpu_online_mask);
7758
7759                 if (cpumask_empty(cpus))
7760                         continue;
7761
7762                 /* Account thermal pressure for the energy estimation */
7763                 cpu = cpumask_first(cpus);
7764                 cpu_thermal_cap = arch_scale_cpu_capacity(cpu);
7765                 cpu_thermal_cap -= arch_scale_thermal_pressure(cpu);
7766
7767                 eenv.cpu_cap = cpu_thermal_cap;
7768                 eenv.pd_cap = 0;
7769
7770                 for_each_cpu(cpu, cpus) {
7771                         struct rq *rq = cpu_rq(cpu);
7772
7773                         eenv.pd_cap += cpu_thermal_cap;
7774
7775                         if (!cpumask_test_cpu(cpu, sched_domain_span(sd)))
7776                                 continue;
7777
7778                         if (!cpumask_test_cpu(cpu, p->cpus_ptr))
7779                                 continue;
7780
7781                         util = cpu_util(cpu, p, cpu, 0);
7782                         cpu_cap = capacity_of(cpu);
7783
7784                         /*
7785                          * Skip CPUs that cannot satisfy the capacity request.
7786                          * IOW, placing the task there would make the CPU
7787                          * overutilized. Take uclamp into account to see how
7788                          * much capacity we can get out of the CPU; this is
7789                          * aligned with sched_cpu_util().
7790                          */
7791                         if (uclamp_is_used() && !uclamp_rq_is_idle(rq)) {
7792                                 /*
7793                                  * Open code uclamp_rq_util_with() except for
7794                                  * the clamp() part. Ie: apply max aggregation
7795                                  * only. util_fits_cpu() logic requires to
7796                                  * operate on non clamped util but must use the
7797                                  * max-aggregated uclamp_{min, max}.
7798                                  */
7799                                 rq_util_min = uclamp_rq_get(rq, UCLAMP_MIN);
7800                                 rq_util_max = uclamp_rq_get(rq, UCLAMP_MAX);
7801
7802                                 util_min = max(rq_util_min, p_util_min);
7803                                 util_max = max(rq_util_max, p_util_max);
7804                         }
7805
7806                         fits = util_fits_cpu(util, util_min, util_max, cpu);
7807                         if (!fits)
7808                                 continue;
7809
7810                         lsub_positive(&cpu_cap, util);
7811
7812                         if (cpu == prev_cpu) {
7813                                 /* Always use prev_cpu as a candidate. */
7814                                 prev_spare_cap = cpu_cap;
7815                                 prev_fits = fits;
7816                         } else if ((fits > max_fits) ||
7817                                    ((fits == max_fits) && ((long)cpu_cap > max_spare_cap))) {
7818                                 /*
7819                                  * Find the CPU with the maximum spare capacity
7820                                  * among the remaining CPUs in the performance
7821                                  * domain.
7822                                  */
7823                                 max_spare_cap = cpu_cap;
7824                                 max_spare_cap_cpu = cpu;
7825                                 max_fits = fits;
7826                         }
7827                 }
7828
7829                 if (max_spare_cap_cpu < 0 && prev_spare_cap < 0)
7830                         continue;
7831
7832                 eenv_pd_busy_time(&eenv, cpus, p);
7833                 /* Compute the 'base' energy of the pd, without @p */
7834                 base_energy = compute_energy(&eenv, pd, cpus, p, -1);
7835
7836                 /* Evaluate the energy impact of using prev_cpu. */
7837                 if (prev_spare_cap > -1) {
7838                         prev_delta = compute_energy(&eenv, pd, cpus, p,
7839                                                     prev_cpu);
7840                         /* CPU utilization has changed */
7841                         if (prev_delta < base_energy)
7842                                 goto unlock;
7843                         prev_delta -= base_energy;
7844                         prev_thermal_cap = cpu_thermal_cap;
7845                         best_delta = min(best_delta, prev_delta);
7846                 }
7847
7848                 /* Evaluate the energy impact of using max_spare_cap_cpu. */
7849                 if (max_spare_cap_cpu >= 0 && max_spare_cap > prev_spare_cap) {
7850                         /* Current best energy cpu fits better */
7851                         if (max_fits < best_fits)
7852                                 continue;
7853
7854                         /*
7855                          * Both don't fit performance hint (i.e. uclamp_min)
7856                          * but best energy cpu has better capacity.
7857                          */
7858                         if ((max_fits < 0) &&
7859                             (cpu_thermal_cap <= best_thermal_cap))
7860                                 continue;
7861
7862                         cur_delta = compute_energy(&eenv, pd, cpus, p,
7863                                                    max_spare_cap_cpu);
7864                         /* CPU utilization has changed */
7865                         if (cur_delta < base_energy)
7866                                 goto unlock;
7867                         cur_delta -= base_energy;
7868
7869                         /*
7870                          * Both fit for the task but best energy cpu has lower
7871                          * energy impact.
7872                          */
7873                         if ((max_fits > 0) && (best_fits > 0) &&
7874                             (cur_delta >= best_delta))
7875                                 continue;
7876
7877                         best_delta = cur_delta;
7878                         best_energy_cpu = max_spare_cap_cpu;
7879                         best_fits = max_fits;
7880                         best_thermal_cap = cpu_thermal_cap;
7881                 }
7882         }
7883         rcu_read_unlock();
7884
7885         if ((best_fits > prev_fits) ||
7886             ((best_fits > 0) && (best_delta < prev_delta)) ||
7887             ((best_fits < 0) && (best_thermal_cap > prev_thermal_cap)))
7888                 target = best_energy_cpu;
7889
7890         return target;
7891
7892 unlock:
7893         rcu_read_unlock();
7894
7895         return target;
7896 }
7897
7898 /*
7899  * select_task_rq_fair: Select target runqueue for the waking task in domains
7900  * that have the relevant SD flag set. In practice, this is SD_BALANCE_WAKE,
7901  * SD_BALANCE_FORK, or SD_BALANCE_EXEC.
7902  *
7903  * Balances load by selecting the idlest CPU in the idlest group, or under
7904  * certain conditions an idle sibling CPU if the domain has SD_WAKE_AFFINE set.
7905  *
7906  * Returns the target CPU number.
7907  */
7908 static int
7909 select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
7910 {
7911         int sync = (wake_flags & WF_SYNC) && !(current->flags & PF_EXITING);
7912         struct sched_domain *tmp, *sd = NULL;
7913         int cpu = smp_processor_id();
7914         int new_cpu = prev_cpu;
7915         int want_affine = 0;
7916         /* SD_flags and WF_flags share the first nibble */
7917         int sd_flag = wake_flags & 0xF;
7918
7919         /*
7920          * required for stable ->cpus_allowed
7921          */
7922         lockdep_assert_held(&p->pi_lock);
7923         if (wake_flags & WF_TTWU) {
7924                 record_wakee(p);
7925
7926                 if ((wake_flags & WF_CURRENT_CPU) &&
7927                     cpumask_test_cpu(cpu, p->cpus_ptr))
7928                         return cpu;
7929
7930                 if (sched_energy_enabled()) {
7931                         new_cpu = find_energy_efficient_cpu(p, prev_cpu);
7932                         if (new_cpu >= 0)
7933                                 return new_cpu;
7934                         new_cpu = prev_cpu;
7935                 }
7936
7937                 want_affine = !wake_wide(p) && cpumask_test_cpu(cpu, p->cpus_ptr);
7938         }
7939
7940         rcu_read_lock();
7941         for_each_domain(cpu, tmp) {
7942                 /*
7943                  * If both 'cpu' and 'prev_cpu' are part of this domain,
7944                  * cpu is a valid SD_WAKE_AFFINE target.
7945                  */
7946                 if (want_affine && (tmp->flags & SD_WAKE_AFFINE) &&
7947                     cpumask_test_cpu(prev_cpu, sched_domain_span(tmp))) {
7948                         if (cpu != prev_cpu)
7949                                 new_cpu = wake_affine(tmp, p, cpu, prev_cpu, sync);
7950
7951                         sd = NULL; /* Prefer wake_affine over balance flags */
7952                         break;
7953                 }
7954
7955                 /*
7956                  * Usually only true for WF_EXEC and WF_FORK, as sched_domains
7957                  * usually do not have SD_BALANCE_WAKE set. That means wakeup
7958                  * will usually go to the fast path.
7959                  */
7960                 if (tmp->flags & sd_flag)
7961                         sd = tmp;
7962                 else if (!want_affine)
7963                         break;
7964         }
7965
7966         if (unlikely(sd)) {
7967                 /* Slow path */
7968                 new_cpu = find_idlest_cpu(sd, p, cpu, prev_cpu, sd_flag);
7969         } else if (wake_flags & WF_TTWU) { /* XXX always ? */
7970                 /* Fast path */
7971                 new_cpu = select_idle_sibling(p, prev_cpu, new_cpu);
7972         }
7973         rcu_read_unlock();
7974
7975         return new_cpu;
7976 }
7977
7978 /*
7979  * Called immediately before a task is migrated to a new CPU; task_cpu(p) and
7980  * cfs_rq_of(p) references at time of call are still valid and identify the
7981  * previous CPU. The caller guarantees p->pi_lock or task_rq(p)->lock is held.
7982  */
7983 static void migrate_task_rq_fair(struct task_struct *p, int new_cpu)
7984 {
7985         struct sched_entity *se = &p->se;
7986
7987         if (!task_on_rq_migrating(p)) {
7988                 remove_entity_load_avg(se);
7989
7990                 /*
7991                  * Here, the task's PELT values have been updated according to
7992                  * the current rq's clock. But if that clock hasn't been
7993                  * updated in a while, a substantial idle time will be missed,
7994                  * leading to an inflation after wake-up on the new rq.
7995                  *
7996                  * Estimate the missing time from the cfs_rq last_update_time
7997                  * and update sched_avg to improve the PELT continuity after
7998                  * migration.
7999                  */
8000                 migrate_se_pelt_lag(se);
8001         }
8002
8003         /* Tell new CPU we are migrated */
8004         se->avg.last_update_time = 0;
8005
8006         update_scan_period(p, new_cpu);
8007 }
8008
8009 static void task_dead_fair(struct task_struct *p)
8010 {
8011         remove_entity_load_avg(&p->se);
8012 }
8013
8014 static int
8015 balance_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
8016 {
8017         if (rq->nr_running)
8018                 return 1;
8019
8020         return newidle_balance(rq, rf) != 0;
8021 }
8022 #endif /* CONFIG_SMP */
8023
8024 static void set_next_buddy(struct sched_entity *se)
8025 {
8026         for_each_sched_entity(se) {
8027                 if (SCHED_WARN_ON(!se->on_rq))
8028                         return;
8029                 if (se_is_idle(se))
8030                         return;
8031                 cfs_rq_of(se)->next = se;
8032         }
8033 }
8034
8035 /*
8036  * Preempt the current task with a newly woken task if needed:
8037  */
8038 static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_flags)
8039 {
8040         struct task_struct *curr = rq->curr;
8041         struct sched_entity *se = &curr->se, *pse = &p->se;
8042         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
8043         int next_buddy_marked = 0;
8044         int cse_is_idle, pse_is_idle;
8045
8046         if (unlikely(se == pse))
8047                 return;
8048
8049         /*
8050          * This is possible from callers such as attach_tasks(), in which we
8051          * unconditionally check_preempt_curr() after an enqueue (which may have
8052          * lead to a throttle).  This both saves work and prevents false
8053          * next-buddy nomination below.
8054          */
8055         if (unlikely(throttled_hierarchy(cfs_rq_of(pse))))
8056                 return;
8057
8058         if (sched_feat(NEXT_BUDDY) && !(wake_flags & WF_FORK)) {
8059                 set_next_buddy(pse);
8060                 next_buddy_marked = 1;
8061         }
8062
8063         /*
8064          * We can come here with TIF_NEED_RESCHED already set from new task
8065          * wake up path.
8066          *
8067          * Note: this also catches the edge-case of curr being in a throttled
8068          * group (e.g. via set_curr_task), since update_curr() (in the
8069          * enqueue of curr) will have resulted in resched being set.  This
8070          * prevents us from potentially nominating it as a false LAST_BUDDY
8071          * below.
8072          */
8073         if (test_tsk_need_resched(curr))
8074                 return;
8075
8076         /* Idle tasks are by definition preempted by non-idle tasks. */
8077         if (unlikely(task_has_idle_policy(curr)) &&
8078             likely(!task_has_idle_policy(p)))
8079                 goto preempt;
8080
8081         /*
8082          * Batch and idle tasks do not preempt non-idle tasks (their preemption
8083          * is driven by the tick):
8084          */
8085         if (unlikely(p->policy != SCHED_NORMAL) || !sched_feat(WAKEUP_PREEMPTION))
8086                 return;
8087
8088         find_matching_se(&se, &pse);
8089         WARN_ON_ONCE(!pse);
8090
8091         cse_is_idle = se_is_idle(se);
8092         pse_is_idle = se_is_idle(pse);
8093
8094         /*
8095          * Preempt an idle group in favor of a non-idle group (and don't preempt
8096          * in the inverse case).
8097          */
8098         if (cse_is_idle && !pse_is_idle)
8099                 goto preempt;
8100         if (cse_is_idle != pse_is_idle)
8101                 return;
8102
8103         cfs_rq = cfs_rq_of(se);
8104         update_curr(cfs_rq);
8105
8106         /*
8107          * XXX pick_eevdf(cfs_rq) != se ?
8108          */
8109         if (pick_eevdf(cfs_rq) == pse)
8110                 goto preempt;
8111
8112         return;
8113
8114 preempt:
8115         resched_curr(rq);
8116 }
8117
8118 #ifdef CONFIG_SMP
8119 static struct task_struct *pick_task_fair(struct rq *rq)
8120 {
8121         struct sched_entity *se;
8122         struct cfs_rq *cfs_rq;
8123
8124 again:
8125         cfs_rq = &rq->cfs;
8126         if (!cfs_rq->nr_running)
8127                 return NULL;
8128
8129         do {
8130                 struct sched_entity *curr = cfs_rq->curr;
8131
8132                 /* When we pick for a remote RQ, we'll not have done put_prev_entity() */
8133                 if (curr) {
8134                         if (curr->on_rq)
8135                                 update_curr(cfs_rq);
8136                         else
8137                                 curr = NULL;
8138
8139                         if (unlikely(check_cfs_rq_runtime(cfs_rq)))
8140                                 goto again;
8141                 }
8142
8143                 se = pick_next_entity(cfs_rq, curr);
8144                 cfs_rq = group_cfs_rq(se);
8145         } while (cfs_rq);
8146
8147         return task_of(se);
8148 }
8149 #endif
8150
8151 struct task_struct *
8152 pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
8153 {
8154         struct cfs_rq *cfs_rq = &rq->cfs;
8155         struct sched_entity *se;
8156         struct task_struct *p;
8157         int new_tasks;
8158
8159 again:
8160         if (!sched_fair_runnable(rq))
8161                 goto idle;
8162
8163 #ifdef CONFIG_FAIR_GROUP_SCHED
8164         if (!prev || prev->sched_class != &fair_sched_class)
8165                 goto simple;
8166
8167         /*
8168          * Because of the set_next_buddy() in dequeue_task_fair() it is rather
8169          * likely that a next task is from the same cgroup as the current.
8170          *
8171          * Therefore attempt to avoid putting and setting the entire cgroup
8172          * hierarchy, only change the part that actually changes.
8173          */
8174
8175         do {
8176                 struct sched_entity *curr = cfs_rq->curr;
8177
8178                 /*
8179                  * Since we got here without doing put_prev_entity() we also
8180                  * have to consider cfs_rq->curr. If it is still a runnable
8181                  * entity, update_curr() will update its vruntime, otherwise
8182                  * forget we've ever seen it.
8183                  */
8184                 if (curr) {
8185                         if (curr->on_rq)
8186                                 update_curr(cfs_rq);
8187                         else
8188                                 curr = NULL;
8189
8190                         /*
8191                          * This call to check_cfs_rq_runtime() will do the
8192                          * throttle and dequeue its entity in the parent(s).
8193                          * Therefore the nr_running test will indeed
8194                          * be correct.
8195                          */
8196                         if (unlikely(check_cfs_rq_runtime(cfs_rq))) {
8197                                 cfs_rq = &rq->cfs;
8198
8199                                 if (!cfs_rq->nr_running)
8200                                         goto idle;
8201
8202                                 goto simple;
8203                         }
8204                 }
8205
8206                 se = pick_next_entity(cfs_rq, curr);
8207                 cfs_rq = group_cfs_rq(se);
8208         } while (cfs_rq);
8209
8210         p = task_of(se);
8211
8212         /*
8213          * Since we haven't yet done put_prev_entity and if the selected task
8214          * is a different task than we started out with, try and touch the
8215          * least amount of cfs_rqs.
8216          */
8217         if (prev != p) {
8218                 struct sched_entity *pse = &prev->se;
8219
8220                 while (!(cfs_rq = is_same_group(se, pse))) {
8221                         int se_depth = se->depth;
8222                         int pse_depth = pse->depth;
8223
8224                         if (se_depth <= pse_depth) {
8225                                 put_prev_entity(cfs_rq_of(pse), pse);
8226                                 pse = parent_entity(pse);
8227                         }
8228                         if (se_depth >= pse_depth) {
8229                                 set_next_entity(cfs_rq_of(se), se);
8230                                 se = parent_entity(se);
8231                         }
8232                 }
8233
8234                 put_prev_entity(cfs_rq, pse);
8235                 set_next_entity(cfs_rq, se);
8236         }
8237
8238         goto done;
8239 simple:
8240 #endif
8241         if (prev)
8242                 put_prev_task(rq, prev);
8243
8244         do {
8245                 se = pick_next_entity(cfs_rq, NULL);
8246                 set_next_entity(cfs_rq, se);
8247                 cfs_rq = group_cfs_rq(se);
8248         } while (cfs_rq);
8249
8250         p = task_of(se);
8251
8252 done: __maybe_unused;
8253 #ifdef CONFIG_SMP
8254         /*
8255          * Move the next running task to the front of
8256          * the list, so our cfs_tasks list becomes MRU
8257          * one.
8258          */
8259         list_move(&p->se.group_node, &rq->cfs_tasks);
8260 #endif
8261
8262         if (hrtick_enabled_fair(rq))
8263                 hrtick_start_fair(rq, p);
8264
8265         update_misfit_status(p, rq);
8266         sched_fair_update_stop_tick(rq, p);
8267
8268         return p;
8269
8270 idle:
8271         if (!rf)
8272                 return NULL;
8273
8274         new_tasks = newidle_balance(rq, rf);
8275
8276         /*
8277          * Because newidle_balance() releases (and re-acquires) rq->lock, it is
8278          * possible for any higher priority task to appear. In that case we
8279          * must re-start the pick_next_entity() loop.
8280          */
8281         if (new_tasks < 0)
8282                 return RETRY_TASK;
8283
8284         if (new_tasks > 0)
8285                 goto again;
8286
8287         /*
8288          * rq is about to be idle, check if we need to update the
8289          * lost_idle_time of clock_pelt
8290          */
8291         update_idle_rq_clock_pelt(rq);
8292
8293         return NULL;
8294 }
8295
8296 static struct task_struct *__pick_next_task_fair(struct rq *rq)
8297 {
8298         return pick_next_task_fair(rq, NULL, NULL);
8299 }
8300
8301 /*
8302  * Account for a descheduled task:
8303  */
8304 static void put_prev_task_fair(struct rq *rq, struct task_struct *prev)
8305 {
8306         struct sched_entity *se = &prev->se;
8307         struct cfs_rq *cfs_rq;
8308
8309         for_each_sched_entity(se) {
8310                 cfs_rq = cfs_rq_of(se);
8311                 put_prev_entity(cfs_rq, se);
8312         }
8313 }
8314
8315 /*
8316  * sched_yield() is very simple
8317  */
8318 static void yield_task_fair(struct rq *rq)
8319 {
8320         struct task_struct *curr = rq->curr;
8321         struct cfs_rq *cfs_rq = task_cfs_rq(curr);
8322         struct sched_entity *se = &curr->se;
8323
8324         /*
8325          * Are we the only task in the tree?
8326          */
8327         if (unlikely(rq->nr_running == 1))
8328                 return;
8329
8330         clear_buddies(cfs_rq, se);
8331
8332         update_rq_clock(rq);
8333         /*
8334          * Update run-time statistics of the 'current'.
8335          */
8336         update_curr(cfs_rq);
8337         /*
8338          * Tell update_rq_clock() that we've just updated,
8339          * so we don't do microscopic update in schedule()
8340          * and double the fastpath cost.
8341          */
8342         rq_clock_skip_update(rq);
8343
8344         se->deadline += calc_delta_fair(se->slice, se);
8345 }
8346
8347 static bool yield_to_task_fair(struct rq *rq, struct task_struct *p)
8348 {
8349         struct sched_entity *se = &p->se;
8350
8351         /* throttled hierarchies are not runnable */
8352         if (!se->on_rq || throttled_hierarchy(cfs_rq_of(se)))
8353                 return false;
8354
8355         /* Tell the scheduler that we'd really like pse to run next. */
8356         set_next_buddy(se);
8357
8358         yield_task_fair(rq);
8359
8360         return true;
8361 }
8362
8363 #ifdef CONFIG_SMP
8364 /**************************************************
8365  * Fair scheduling class load-balancing methods.
8366  *
8367  * BASICS
8368  *
8369  * The purpose of load-balancing is to achieve the same basic fairness the
8370  * per-CPU scheduler provides, namely provide a proportional amount of compute
8371  * time to each task. This is expressed in the following equation:
8372  *
8373  *   W_i,n/P_i == W_j,n/P_j for all i,j                               (1)
8374  *
8375  * Where W_i,n is the n-th weight average for CPU i. The instantaneous weight
8376  * W_i,0 is defined as:
8377  *
8378  *   W_i,0 = \Sum_j w_i,j                                             (2)
8379  *
8380  * Where w_i,j is the weight of the j-th runnable task on CPU i. This weight
8381  * is derived from the nice value as per sched_prio_to_weight[].
8382  *
8383  * The weight average is an exponential decay average of the instantaneous
8384  * weight:
8385  *
8386  *   W'_i,n = (2^n - 1) / 2^n * W_i,n + 1 / 2^n * W_i,0               (3)
8387  *
8388  * C_i is the compute capacity of CPU i, typically it is the
8389  * fraction of 'recent' time available for SCHED_OTHER task execution. But it
8390  * can also include other factors [XXX].
8391  *
8392  * To achieve this balance we define a measure of imbalance which follows
8393  * directly from (1):
8394  *
8395  *   imb_i,j = max{ avg(W/C), W_i/C_i } - min{ avg(W/C), W_j/C_j }    (4)
8396  *
8397  * We them move tasks around to minimize the imbalance. In the continuous
8398  * function space it is obvious this converges, in the discrete case we get
8399  * a few fun cases generally called infeasible weight scenarios.
8400  *
8401  * [XXX expand on:
8402  *     - infeasible weights;
8403  *     - local vs global optima in the discrete case. ]
8404  *
8405  *
8406  * SCHED DOMAINS
8407  *
8408  * In order to solve the imbalance equation (4), and avoid the obvious O(n^2)
8409  * for all i,j solution, we create a tree of CPUs that follows the hardware
8410  * topology where each level pairs two lower groups (or better). This results
8411  * in O(log n) layers. Furthermore we reduce the number of CPUs going up the
8412  * tree to only the first of the previous level and we decrease the frequency
8413  * of load-balance at each level inv. proportional to the number of CPUs in
8414  * the groups.
8415  *
8416  * This yields:
8417  *
8418  *     log_2 n     1     n
8419  *   \Sum       { --- * --- * 2^i } = O(n)                            (5)
8420  *     i = 0      2^i   2^i
8421  *                               `- size of each group
8422  *         |         |     `- number of CPUs doing load-balance
8423  *         |         `- freq
8424  *         `- sum over all levels
8425  *
8426  * Coupled with a limit on how many tasks we can migrate every balance pass,
8427  * this makes (5) the runtime complexity of the balancer.
8428  *
8429  * An important property here is that each CPU is still (indirectly) connected
8430  * to every other CPU in at most O(log n) steps:
8431  *
8432  * The adjacency matrix of the resulting graph is given by:
8433  *
8434  *             log_2 n
8435  *   A_i,j = \Union     (i % 2^k == 0) && i / 2^(k+1) == j / 2^(k+1)  (6)
8436  *             k = 0
8437  *
8438  * And you'll find that:
8439  *
8440  *   A^(log_2 n)_i,j != 0  for all i,j                                (7)
8441  *
8442  * Showing there's indeed a path between every CPU in at most O(log n) steps.
8443  * The task movement gives a factor of O(m), giving a convergence complexity
8444  * of:
8445  *
8446  *   O(nm log n),  n := nr_cpus, m := nr_tasks                        (8)
8447  *
8448  *
8449  * WORK CONSERVING
8450  *
8451  * In order to avoid CPUs going idle while there's still work to do, new idle
8452  * balancing is more aggressive and has the newly idle CPU iterate up the domain
8453  * tree itself instead of relying on other CPUs to bring it work.
8454  *
8455  * This adds some complexity to both (5) and (8) but it reduces the total idle
8456  * time.
8457  *
8458  * [XXX more?]
8459  *
8460  *
8461  * CGROUPS
8462  *
8463  * Cgroups make a horror show out of (2), instead of a simple sum we get:
8464  *
8465  *                                s_k,i
8466  *   W_i,0 = \Sum_j \Prod_k w_k * -----                               (9)
8467  *                                 S_k
8468  *
8469  * Where
8470  *
8471  *   s_k,i = \Sum_j w_i,j,k  and  S_k = \Sum_i s_k,i                 (10)
8472  *
8473  * w_i,j,k is the weight of the j-th runnable task in the k-th cgroup on CPU i.
8474  *
8475  * The big problem is S_k, its a global sum needed to compute a local (W_i)
8476  * property.
8477  *
8478  * [XXX write more on how we solve this.. _after_ merging pjt's patches that
8479  *      rewrite all of this once again.]
8480  */
8481
8482 static unsigned long __read_mostly max_load_balance_interval = HZ/10;
8483
8484 enum fbq_type { regular, remote, all };
8485
8486 /*
8487  * 'group_type' describes the group of CPUs at the moment of load balancing.
8488  *
8489  * The enum is ordered by pulling priority, with the group with lowest priority
8490  * first so the group_type can simply be compared when selecting the busiest
8491  * group. See update_sd_pick_busiest().
8492  */
8493 enum group_type {
8494         /* The group has spare capacity that can be used to run more tasks.  */
8495         group_has_spare = 0,
8496         /*
8497          * The group is fully used and the tasks don't compete for more CPU
8498          * cycles. Nevertheless, some tasks might wait before running.
8499          */
8500         group_fully_busy,
8501         /*
8502          * One task doesn't fit with CPU's capacity and must be migrated to a
8503          * more powerful CPU.
8504          */
8505         group_misfit_task,
8506         /*
8507          * Balance SMT group that's fully busy. Can benefit from migration
8508          * a task on SMT with busy sibling to another CPU on idle core.
8509          */
8510         group_smt_balance,
8511         /*
8512          * SD_ASYM_PACKING only: One local CPU with higher capacity is available,
8513          * and the task should be migrated to it instead of running on the
8514          * current CPU.
8515          */
8516         group_asym_packing,
8517         /*
8518          * The tasks' affinity constraints previously prevented the scheduler
8519          * from balancing the load across the system.
8520          */
8521         group_imbalanced,
8522         /*
8523          * The CPU is overloaded and can't provide expected CPU cycles to all
8524          * tasks.
8525          */
8526         group_overloaded
8527 };
8528
8529 enum migration_type {
8530         migrate_load = 0,
8531         migrate_util,
8532         migrate_task,
8533         migrate_misfit
8534 };
8535
8536 #define LBF_ALL_PINNED  0x01
8537 #define LBF_NEED_BREAK  0x02
8538 #define LBF_DST_PINNED  0x04
8539 #define LBF_SOME_PINNED 0x08
8540 #define LBF_ACTIVE_LB   0x10
8541
8542 struct lb_env {
8543         struct sched_domain     *sd;
8544
8545         struct rq               *src_rq;
8546         int                     src_cpu;
8547
8548         int                     dst_cpu;
8549         struct rq               *dst_rq;
8550
8551         struct cpumask          *dst_grpmask;
8552         int                     new_dst_cpu;
8553         enum cpu_idle_type      idle;
8554         long                    imbalance;
8555         /* The set of CPUs under consideration for load-balancing */
8556         struct cpumask          *cpus;
8557
8558         unsigned int            flags;
8559
8560         unsigned int            loop;
8561         unsigned int            loop_break;
8562         unsigned int            loop_max;
8563
8564         enum fbq_type           fbq_type;
8565         enum migration_type     migration_type;
8566         struct list_head        tasks;
8567 };
8568
8569 /*
8570  * Is this task likely cache-hot:
8571  */
8572 static int task_hot(struct task_struct *p, struct lb_env *env)
8573 {
8574         s64 delta;
8575
8576         lockdep_assert_rq_held(env->src_rq);
8577
8578         if (p->sched_class != &fair_sched_class)
8579                 return 0;
8580
8581         if (unlikely(task_has_idle_policy(p)))
8582                 return 0;
8583
8584         /* SMT siblings share cache */
8585         if (env->sd->flags & SD_SHARE_CPUCAPACITY)
8586                 return 0;
8587
8588         /*
8589          * Buddy candidates are cache hot:
8590          */
8591         if (sched_feat(CACHE_HOT_BUDDY) && env->dst_rq->nr_running &&
8592             (&p->se == cfs_rq_of(&p->se)->next))
8593                 return 1;
8594
8595         if (sysctl_sched_migration_cost == -1)
8596                 return 1;
8597
8598         /*
8599          * Don't migrate task if the task's cookie does not match
8600          * with the destination CPU's core cookie.
8601          */
8602         if (!sched_core_cookie_match(cpu_rq(env->dst_cpu), p))
8603                 return 1;
8604
8605         if (sysctl_sched_migration_cost == 0)
8606                 return 0;
8607
8608         delta = rq_clock_task(env->src_rq) - p->se.exec_start;
8609
8610         return delta < (s64)sysctl_sched_migration_cost;
8611 }
8612
8613 #ifdef CONFIG_NUMA_BALANCING
8614 /*
8615  * Returns 1, if task migration degrades locality
8616  * Returns 0, if task migration improves locality i.e migration preferred.
8617  * Returns -1, if task migration is not affected by locality.
8618  */
8619 static int migrate_degrades_locality(struct task_struct *p, struct lb_env *env)
8620 {
8621         struct numa_group *numa_group = rcu_dereference(p->numa_group);
8622         unsigned long src_weight, dst_weight;
8623         int src_nid, dst_nid, dist;
8624
8625         if (!static_branch_likely(&sched_numa_balancing))
8626                 return -1;
8627
8628         if (!p->numa_faults || !(env->sd->flags & SD_NUMA))
8629                 return -1;
8630
8631         src_nid = cpu_to_node(env->src_cpu);
8632         dst_nid = cpu_to_node(env->dst_cpu);
8633
8634         if (src_nid == dst_nid)
8635                 return -1;
8636
8637         /* Migrating away from the preferred node is always bad. */
8638         if (src_nid == p->numa_preferred_nid) {
8639                 if (env->src_rq->nr_running > env->src_rq->nr_preferred_running)
8640                         return 1;
8641                 else
8642                         return -1;
8643         }
8644
8645         /* Encourage migration to the preferred node. */
8646         if (dst_nid == p->numa_preferred_nid)
8647                 return 0;
8648
8649         /* Leaving a core idle is often worse than degrading locality. */
8650         if (env->idle == CPU_IDLE)
8651                 return -1;
8652
8653         dist = node_distance(src_nid, dst_nid);
8654         if (numa_group) {
8655                 src_weight = group_weight(p, src_nid, dist);
8656                 dst_weight = group_weight(p, dst_nid, dist);
8657         } else {
8658                 src_weight = task_weight(p, src_nid, dist);
8659                 dst_weight = task_weight(p, dst_nid, dist);
8660         }
8661
8662         return dst_weight < src_weight;
8663 }
8664
8665 #else
8666 static inline int migrate_degrades_locality(struct task_struct *p,
8667                                              struct lb_env *env)
8668 {
8669         return -1;
8670 }
8671 #endif
8672
8673 /*
8674  * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
8675  */
8676 static
8677 int can_migrate_task(struct task_struct *p, struct lb_env *env)
8678 {
8679         int tsk_cache_hot;
8680
8681         lockdep_assert_rq_held(env->src_rq);
8682
8683         /*
8684          * We do not migrate tasks that are:
8685          * 1) throttled_lb_pair, or
8686          * 2) cannot be migrated to this CPU due to cpus_ptr, or
8687          * 3) running (obviously), or
8688          * 4) are cache-hot on their current CPU.
8689          */
8690         if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu))
8691                 return 0;
8692
8693         /* Disregard pcpu kthreads; they are where they need to be. */
8694         if (kthread_is_per_cpu(p))
8695                 return 0;
8696
8697         if (!cpumask_test_cpu(env->dst_cpu, p->cpus_ptr)) {
8698                 int cpu;
8699
8700                 schedstat_inc(p->stats.nr_failed_migrations_affine);
8701
8702                 env->flags |= LBF_SOME_PINNED;
8703
8704                 /*
8705                  * Remember if this task can be migrated to any other CPU in
8706                  * our sched_group. We may want to revisit it if we couldn't
8707                  * meet load balance goals by pulling other tasks on src_cpu.
8708                  *
8709                  * Avoid computing new_dst_cpu
8710                  * - for NEWLY_IDLE
8711                  * - if we have already computed one in current iteration
8712                  * - if it's an active balance
8713                  */
8714                 if (env->idle == CPU_NEWLY_IDLE ||
8715                     env->flags & (LBF_DST_PINNED | LBF_ACTIVE_LB))
8716                         return 0;
8717
8718                 /* Prevent to re-select dst_cpu via env's CPUs: */
8719                 for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) {
8720                         if (cpumask_test_cpu(cpu, p->cpus_ptr)) {
8721                                 env->flags |= LBF_DST_PINNED;
8722                                 env->new_dst_cpu = cpu;
8723                                 break;
8724                         }
8725                 }
8726
8727                 return 0;
8728         }
8729
8730         /* Record that we found at least one task that could run on dst_cpu */
8731         env->flags &= ~LBF_ALL_PINNED;
8732
8733         if (task_on_cpu(env->src_rq, p)) {
8734                 schedstat_inc(p->stats.nr_failed_migrations_running);
8735                 return 0;
8736         }
8737
8738         /*
8739          * Aggressive migration if:
8740          * 1) active balance
8741          * 2) destination numa is preferred
8742          * 3) task is cache cold, or
8743          * 4) too many balance attempts have failed.
8744          */
8745         if (env->flags & LBF_ACTIVE_LB)
8746                 return 1;
8747
8748         tsk_cache_hot = migrate_degrades_locality(p, env);
8749         if (tsk_cache_hot == -1)
8750                 tsk_cache_hot = task_hot(p, env);
8751
8752         if (tsk_cache_hot <= 0 ||
8753             env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
8754                 if (tsk_cache_hot == 1) {
8755                         schedstat_inc(env->sd->lb_hot_gained[env->idle]);
8756                         schedstat_inc(p->stats.nr_forced_migrations);
8757                 }
8758                 return 1;
8759         }
8760
8761         schedstat_inc(p->stats.nr_failed_migrations_hot);
8762         return 0;
8763 }
8764
8765 /*
8766  * detach_task() -- detach the task for the migration specified in env
8767  */
8768 static void detach_task(struct task_struct *p, struct lb_env *env)
8769 {
8770         lockdep_assert_rq_held(env->src_rq);
8771
8772         deactivate_task(env->src_rq, p, DEQUEUE_NOCLOCK);
8773         set_task_cpu(p, env->dst_cpu);
8774 }
8775
8776 /*
8777  * detach_one_task() -- tries to dequeue exactly one task from env->src_rq, as
8778  * part of active balancing operations within "domain".
8779  *
8780  * Returns a task if successful and NULL otherwise.
8781  */
8782 static struct task_struct *detach_one_task(struct lb_env *env)
8783 {
8784         struct task_struct *p;
8785
8786         lockdep_assert_rq_held(env->src_rq);
8787
8788         list_for_each_entry_reverse(p,
8789                         &env->src_rq->cfs_tasks, se.group_node) {
8790                 if (!can_migrate_task(p, env))
8791                         continue;
8792
8793                 detach_task(p, env);
8794
8795                 /*
8796                  * Right now, this is only the second place where
8797                  * lb_gained[env->idle] is updated (other is detach_tasks)
8798                  * so we can safely collect stats here rather than
8799                  * inside detach_tasks().
8800                  */
8801                 schedstat_inc(env->sd->lb_gained[env->idle]);
8802                 return p;
8803         }
8804         return NULL;
8805 }
8806
8807 /*
8808  * detach_tasks() -- tries to detach up to imbalance load/util/tasks from
8809  * busiest_rq, as part of a balancing operation within domain "sd".
8810  *
8811  * Returns number of detached tasks if successful and 0 otherwise.
8812  */
8813 static int detach_tasks(struct lb_env *env)
8814 {
8815         struct list_head *tasks = &env->src_rq->cfs_tasks;
8816         unsigned long util, load;
8817         struct task_struct *p;
8818         int detached = 0;
8819
8820         lockdep_assert_rq_held(env->src_rq);
8821
8822         /*
8823          * Source run queue has been emptied by another CPU, clear
8824          * LBF_ALL_PINNED flag as we will not test any task.
8825          */
8826         if (env->src_rq->nr_running <= 1) {
8827                 env->flags &= ~LBF_ALL_PINNED;
8828                 return 0;
8829         }
8830
8831         if (env->imbalance <= 0)
8832                 return 0;
8833
8834         while (!list_empty(tasks)) {
8835                 /*
8836                  * We don't want to steal all, otherwise we may be treated likewise,
8837                  * which could at worst lead to a livelock crash.
8838                  */
8839                 if (env->idle != CPU_NOT_IDLE && env->src_rq->nr_running <= 1)
8840                         break;
8841
8842                 env->loop++;
8843                 /*
8844                  * We've more or less seen every task there is, call it quits
8845                  * unless we haven't found any movable task yet.
8846                  */
8847                 if (env->loop > env->loop_max &&
8848                     !(env->flags & LBF_ALL_PINNED))
8849                         break;
8850
8851                 /* take a breather every nr_migrate tasks */
8852                 if (env->loop > env->loop_break) {
8853                         env->loop_break += SCHED_NR_MIGRATE_BREAK;
8854                         env->flags |= LBF_NEED_BREAK;
8855                         break;
8856                 }
8857
8858                 p = list_last_entry(tasks, struct task_struct, se.group_node);
8859
8860                 if (!can_migrate_task(p, env))
8861                         goto next;
8862
8863                 switch (env->migration_type) {
8864                 case migrate_load:
8865                         /*
8866                          * Depending of the number of CPUs and tasks and the
8867                          * cgroup hierarchy, task_h_load() can return a null
8868                          * value. Make sure that env->imbalance decreases
8869                          * otherwise detach_tasks() will stop only after
8870                          * detaching up to loop_max tasks.
8871                          */
8872                         load = max_t(unsigned long, task_h_load(p), 1);
8873
8874                         if (sched_feat(LB_MIN) &&
8875                             load < 16 && !env->sd->nr_balance_failed)
8876                                 goto next;
8877
8878                         /*
8879                          * Make sure that we don't migrate too much load.
8880                          * Nevertheless, let relax the constraint if
8881                          * scheduler fails to find a good waiting task to
8882                          * migrate.
8883                          */
8884                         if (shr_bound(load, env->sd->nr_balance_failed) > env->imbalance)
8885                                 goto next;
8886
8887                         env->imbalance -= load;
8888                         break;
8889
8890                 case migrate_util:
8891                         util = task_util_est(p);
8892
8893                         if (util > env->imbalance)
8894                                 goto next;
8895
8896                         env->imbalance -= util;
8897                         break;
8898
8899                 case migrate_task:
8900                         env->imbalance--;
8901                         break;
8902
8903                 case migrate_misfit:
8904                         /* This is not a misfit task */
8905                         if (task_fits_cpu(p, env->src_cpu))
8906                                 goto next;
8907
8908                         env->imbalance = 0;
8909                         break;
8910                 }
8911
8912                 detach_task(p, env);
8913                 list_add(&p->se.group_node, &env->tasks);
8914
8915                 detached++;
8916
8917 #ifdef CONFIG_PREEMPTION
8918                 /*
8919                  * NEWIDLE balancing is a source of latency, so preemptible
8920                  * kernels will stop after the first task is detached to minimize
8921                  * the critical section.
8922                  */
8923                 if (env->idle == CPU_NEWLY_IDLE)
8924                         break;
8925 #endif
8926
8927                 /*
8928                  * We only want to steal up to the prescribed amount of
8929                  * load/util/tasks.
8930                  */
8931                 if (env->imbalance <= 0)
8932                         break;
8933
8934                 continue;
8935 next:
8936                 list_move(&p->se.group_node, tasks);
8937         }
8938
8939         /*
8940          * Right now, this is one of only two places we collect this stat
8941          * so we can safely collect detach_one_task() stats here rather
8942          * than inside detach_one_task().
8943          */
8944         schedstat_add(env->sd->lb_gained[env->idle], detached);
8945
8946         return detached;
8947 }
8948
8949 /*
8950  * attach_task() -- attach the task detached by detach_task() to its new rq.
8951  */
8952 static void attach_task(struct rq *rq, struct task_struct *p)
8953 {
8954         lockdep_assert_rq_held(rq);
8955
8956         WARN_ON_ONCE(task_rq(p) != rq);
8957         activate_task(rq, p, ENQUEUE_NOCLOCK);
8958         check_preempt_curr(rq, p, 0);
8959 }
8960
8961 /*
8962  * attach_one_task() -- attaches the task returned from detach_one_task() to
8963  * its new rq.
8964  */
8965 static void attach_one_task(struct rq *rq, struct task_struct *p)
8966 {
8967         struct rq_flags rf;
8968
8969         rq_lock(rq, &rf);
8970         update_rq_clock(rq);
8971         attach_task(rq, p);
8972         rq_unlock(rq, &rf);
8973 }
8974
8975 /*
8976  * attach_tasks() -- attaches all tasks detached by detach_tasks() to their
8977  * new rq.
8978  */
8979 static void attach_tasks(struct lb_env *env)
8980 {
8981         struct list_head *tasks = &env->tasks;
8982         struct task_struct *p;
8983         struct rq_flags rf;
8984
8985         rq_lock(env->dst_rq, &rf);
8986         update_rq_clock(env->dst_rq);
8987
8988         while (!list_empty(tasks)) {
8989                 p = list_first_entry(tasks, struct task_struct, se.group_node);
8990                 list_del_init(&p->se.group_node);
8991
8992                 attach_task(env->dst_rq, p);
8993         }
8994
8995         rq_unlock(env->dst_rq, &rf);
8996 }
8997
8998 #ifdef CONFIG_NO_HZ_COMMON
8999 static inline bool cfs_rq_has_blocked(struct cfs_rq *cfs_rq)
9000 {
9001         if (cfs_rq->avg.load_avg)
9002                 return true;
9003
9004         if (cfs_rq->avg.util_avg)
9005                 return true;
9006
9007         return false;
9008 }
9009
9010 static inline bool others_have_blocked(struct rq *rq)
9011 {
9012         if (READ_ONCE(rq->avg_rt.util_avg))
9013                 return true;
9014
9015         if (READ_ONCE(rq->avg_dl.util_avg))
9016                 return true;
9017
9018         if (thermal_load_avg(rq))
9019                 return true;
9020
9021 #ifdef CONFIG_HAVE_SCHED_AVG_IRQ
9022         if (READ_ONCE(rq->avg_irq.util_avg))
9023                 return true;
9024 #endif
9025
9026         return false;
9027 }
9028
9029 static inline void update_blocked_load_tick(struct rq *rq)
9030 {
9031         WRITE_ONCE(rq->last_blocked_load_update_tick, jiffies);
9032 }
9033
9034 static inline void update_blocked_load_status(struct rq *rq, bool has_blocked)
9035 {
9036         if (!has_blocked)
9037                 rq->has_blocked_load = 0;
9038 }
9039 #else
9040 static inline bool cfs_rq_has_blocked(struct cfs_rq *cfs_rq) { return false; }
9041 static inline bool others_have_blocked(struct rq *rq) { return false; }
9042 static inline void update_blocked_load_tick(struct rq *rq) {}
9043 static inline void update_blocked_load_status(struct rq *rq, bool has_blocked) {}
9044 #endif
9045
9046 static bool __update_blocked_others(struct rq *rq, bool *done)
9047 {
9048         const struct sched_class *curr_class;
9049         u64 now = rq_clock_pelt(rq);
9050         unsigned long thermal_pressure;
9051         bool decayed;
9052
9053         /*
9054          * update_load_avg() can call cpufreq_update_util(). Make sure that RT,
9055          * DL and IRQ signals have been updated before updating CFS.
9056          */
9057         curr_class = rq->curr->sched_class;
9058
9059         thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq));
9060
9061         decayed = update_rt_rq_load_avg(now, rq, curr_class == &rt_sched_class) |
9062                   update_dl_rq_load_avg(now, rq, curr_class == &dl_sched_class) |
9063                   update_thermal_load_avg(rq_clock_thermal(rq), rq, thermal_pressure) |
9064                   update_irq_load_avg(rq, 0);
9065
9066         if (others_have_blocked(rq))
9067                 *done = false;
9068
9069         return decayed;
9070 }
9071
9072 #ifdef CONFIG_FAIR_GROUP_SCHED
9073
9074 static bool __update_blocked_fair(struct rq *rq, bool *done)
9075 {
9076         struct cfs_rq *cfs_rq, *pos;
9077         bool decayed = false;
9078         int cpu = cpu_of(rq);
9079
9080         /*
9081          * Iterates the task_group tree in a bottom up fashion, see
9082          * list_add_leaf_cfs_rq() for details.
9083          */
9084         for_each_leaf_cfs_rq_safe(rq, cfs_rq, pos) {
9085                 struct sched_entity *se;
9086
9087                 if (update_cfs_rq_load_avg(cfs_rq_clock_pelt(cfs_rq), cfs_rq)) {
9088                         update_tg_load_avg(cfs_rq);
9089
9090                         if (cfs_rq->nr_running == 0)
9091                                 update_idle_cfs_rq_clock_pelt(cfs_rq);
9092
9093                         if (cfs_rq == &rq->cfs)
9094                                 decayed = true;
9095                 }
9096
9097                 /* Propagate pending load changes to the parent, if any: */
9098                 se = cfs_rq->tg->se[cpu];
9099                 if (se && !skip_blocked_update(se))
9100                         update_load_avg(cfs_rq_of(se), se, UPDATE_TG);
9101
9102                 /*
9103                  * There can be a lot of idle CPU cgroups.  Don't let fully
9104                  * decayed cfs_rqs linger on the list.
9105                  */
9106                 if (cfs_rq_is_decayed(cfs_rq))
9107                         list_del_leaf_cfs_rq(cfs_rq);
9108
9109                 /* Don't need periodic decay once load/util_avg are null */
9110                 if (cfs_rq_has_blocked(cfs_rq))
9111                         *done = false;
9112         }
9113
9114         return decayed;
9115 }
9116
9117 /*
9118  * Compute the hierarchical load factor for cfs_rq and all its ascendants.
9119  * This needs to be done in a top-down fashion because the load of a child
9120  * group is a fraction of its parents load.
9121  */
9122 static void update_cfs_rq_h_load(struct cfs_rq *cfs_rq)
9123 {
9124         struct rq *rq = rq_of(cfs_rq);
9125         struct sched_entity *se = cfs_rq->tg->se[cpu_of(rq)];
9126         unsigned long now = jiffies;
9127         unsigned long load;
9128
9129         if (cfs_rq->last_h_load_update == now)
9130                 return;
9131
9132         WRITE_ONCE(cfs_rq->h_load_next, NULL);
9133         for_each_sched_entity(se) {
9134                 cfs_rq = cfs_rq_of(se);
9135                 WRITE_ONCE(cfs_rq->h_load_next, se);
9136                 if (cfs_rq->last_h_load_update == now)
9137                         break;
9138         }
9139
9140         if (!se) {
9141                 cfs_rq->h_load = cfs_rq_load_avg(cfs_rq);
9142                 cfs_rq->last_h_load_update = now;
9143         }
9144
9145         while ((se = READ_ONCE(cfs_rq->h_load_next)) != NULL) {
9146                 load = cfs_rq->h_load;
9147                 load = div64_ul(load * se->avg.load_avg,
9148                         cfs_rq_load_avg(cfs_rq) + 1);
9149                 cfs_rq = group_cfs_rq(se);
9150                 cfs_rq->h_load = load;
9151                 cfs_rq->last_h_load_update = now;
9152         }
9153 }
9154
9155 static unsigned long task_h_load(struct task_struct *p)
9156 {
9157         struct cfs_rq *cfs_rq = task_cfs_rq(p);
9158
9159         update_cfs_rq_h_load(cfs_rq);
9160         return div64_ul(p->se.avg.load_avg * cfs_rq->h_load,
9161                         cfs_rq_load_avg(cfs_rq) + 1);
9162 }
9163 #else
9164 static bool __update_blocked_fair(struct rq *rq, bool *done)
9165 {
9166         struct cfs_rq *cfs_rq = &rq->cfs;
9167         bool decayed;
9168
9169         decayed = update_cfs_rq_load_avg(cfs_rq_clock_pelt(cfs_rq), cfs_rq);
9170         if (cfs_rq_has_blocked(cfs_rq))
9171                 *done = false;
9172
9173         return decayed;
9174 }
9175
9176 static unsigned long task_h_load(struct task_struct *p)
9177 {
9178         return p->se.avg.load_avg;
9179 }
9180 #endif
9181
9182 static void update_blocked_averages(int cpu)
9183 {
9184         bool decayed = false, done = true;
9185         struct rq *rq = cpu_rq(cpu);
9186         struct rq_flags rf;
9187
9188         rq_lock_irqsave(rq, &rf);
9189         update_blocked_load_tick(rq);
9190         update_rq_clock(rq);
9191
9192         decayed |= __update_blocked_others(rq, &done);
9193         decayed |= __update_blocked_fair(rq, &done);
9194
9195         update_blocked_load_status(rq, !done);
9196         if (decayed)
9197                 cpufreq_update_util(rq, 0);
9198         rq_unlock_irqrestore(rq, &rf);
9199 }
9200
9201 /********** Helpers for find_busiest_group ************************/
9202
9203 /*
9204  * sg_lb_stats - stats of a sched_group required for load_balancing
9205  */
9206 struct sg_lb_stats {
9207         unsigned long avg_load; /*Avg load across the CPUs of the group */
9208         unsigned long group_load; /* Total load over the CPUs of the group */
9209         unsigned long group_capacity;
9210         unsigned long group_util; /* Total utilization over the CPUs of the group */
9211         unsigned long group_runnable; /* Total runnable time over the CPUs of the group */
9212         unsigned int sum_nr_running; /* Nr of tasks running in the group */
9213         unsigned int sum_h_nr_running; /* Nr of CFS tasks running in the group */
9214         unsigned int idle_cpus;
9215         unsigned int group_weight;
9216         enum group_type group_type;
9217         unsigned int group_asym_packing; /* Tasks should be moved to preferred CPU */
9218         unsigned int group_smt_balance;  /* Task on busy SMT be moved */
9219         unsigned long group_misfit_task_load; /* A CPU has a task too big for its capacity */
9220 #ifdef CONFIG_NUMA_BALANCING
9221         unsigned int nr_numa_running;
9222         unsigned int nr_preferred_running;
9223 #endif
9224 };
9225
9226 /*
9227  * sd_lb_stats - Structure to store the statistics of a sched_domain
9228  *               during load balancing.
9229  */
9230 struct sd_lb_stats {
9231         struct sched_group *busiest;    /* Busiest group in this sd */
9232         struct sched_group *local;      /* Local group in this sd */
9233         unsigned long total_load;       /* Total load of all groups in sd */
9234         unsigned long total_capacity;   /* Total capacity of all groups in sd */
9235         unsigned long avg_load; /* Average load across all groups in sd */
9236         unsigned int prefer_sibling; /* tasks should go to sibling first */
9237
9238         struct sg_lb_stats busiest_stat;/* Statistics of the busiest group */
9239         struct sg_lb_stats local_stat;  /* Statistics of the local group */
9240 };
9241
9242 static inline void init_sd_lb_stats(struct sd_lb_stats *sds)
9243 {
9244         /*
9245          * Skimp on the clearing to avoid duplicate work. We can avoid clearing
9246          * local_stat because update_sg_lb_stats() does a full clear/assignment.
9247          * We must however set busiest_stat::group_type and
9248          * busiest_stat::idle_cpus to the worst busiest group because
9249          * update_sd_pick_busiest() reads these before assignment.
9250          */
9251         *sds = (struct sd_lb_stats){
9252                 .busiest = NULL,
9253                 .local = NULL,
9254                 .total_load = 0UL,
9255                 .total_capacity = 0UL,
9256                 .busiest_stat = {
9257                         .idle_cpus = UINT_MAX,
9258                         .group_type = group_has_spare,
9259                 },
9260         };
9261 }
9262
9263 static unsigned long scale_rt_capacity(int cpu)
9264 {
9265         struct rq *rq = cpu_rq(cpu);
9266         unsigned long max = arch_scale_cpu_capacity(cpu);
9267         unsigned long used, free;
9268         unsigned long irq;
9269
9270         irq = cpu_util_irq(rq);
9271
9272         if (unlikely(irq >= max))
9273                 return 1;
9274
9275         /*
9276          * avg_rt.util_avg and avg_dl.util_avg track binary signals
9277          * (running and not running) with weights 0 and 1024 respectively.
9278          * avg_thermal.load_avg tracks thermal pressure and the weighted
9279          * average uses the actual delta max capacity(load).
9280          */
9281         used = READ_ONCE(rq->avg_rt.util_avg);
9282         used += READ_ONCE(rq->avg_dl.util_avg);
9283         used += thermal_load_avg(rq);
9284
9285         if (unlikely(used >= max))
9286                 return 1;
9287
9288         free = max - used;
9289
9290         return scale_irq_capacity(free, irq, max);
9291 }
9292
9293 static void update_cpu_capacity(struct sched_domain *sd, int cpu)
9294 {
9295         unsigned long capacity = scale_rt_capacity(cpu);
9296         struct sched_group *sdg = sd->groups;
9297
9298         cpu_rq(cpu)->cpu_capacity_orig = arch_scale_cpu_capacity(cpu);
9299
9300         if (!capacity)
9301                 capacity = 1;
9302
9303         cpu_rq(cpu)->cpu_capacity = capacity;
9304         trace_sched_cpu_capacity_tp(cpu_rq(cpu));
9305
9306         sdg->sgc->capacity = capacity;
9307         sdg->sgc->min_capacity = capacity;
9308         sdg->sgc->max_capacity = capacity;
9309 }
9310
9311 void update_group_capacity(struct sched_domain *sd, int cpu)
9312 {
9313         struct sched_domain *child = sd->child;
9314         struct sched_group *group, *sdg = sd->groups;
9315         unsigned long capacity, min_capacity, max_capacity;
9316         unsigned long interval;
9317
9318         interval = msecs_to_jiffies(sd->balance_interval);
9319         interval = clamp(interval, 1UL, max_load_balance_interval);
9320         sdg->sgc->next_update = jiffies + interval;
9321
9322         if (!child) {
9323                 update_cpu_capacity(sd, cpu);
9324                 return;
9325         }
9326
9327         capacity = 0;
9328         min_capacity = ULONG_MAX;
9329         max_capacity = 0;
9330
9331         if (child->flags & SD_OVERLAP) {
9332                 /*
9333                  * SD_OVERLAP domains cannot assume that child groups
9334                  * span the current group.
9335                  */
9336
9337                 for_each_cpu(cpu, sched_group_span(sdg)) {
9338                         unsigned long cpu_cap = capacity_of(cpu);
9339
9340                         capacity += cpu_cap;
9341                         min_capacity = min(cpu_cap, min_capacity);
9342                         max_capacity = max(cpu_cap, max_capacity);
9343                 }
9344         } else  {
9345                 /*
9346                  * !SD_OVERLAP domains can assume that child groups
9347                  * span the current group.
9348                  */
9349
9350                 group = child->groups;
9351                 do {
9352                         struct sched_group_capacity *sgc = group->sgc;
9353
9354                         capacity += sgc->capacity;
9355                         min_capacity = min(sgc->min_capacity, min_capacity);
9356                         max_capacity = max(sgc->max_capacity, max_capacity);
9357                         group = group->next;
9358                 } while (group != child->groups);
9359         }
9360
9361         sdg->sgc->capacity = capacity;
9362         sdg->sgc->min_capacity = min_capacity;
9363         sdg->sgc->max_capacity = max_capacity;
9364 }
9365
9366 /*
9367  * Check whether the capacity of the rq has been noticeably reduced by side
9368  * activity. The imbalance_pct is used for the threshold.
9369  * Return true is the capacity is reduced
9370  */
9371 static inline int
9372 check_cpu_capacity(struct rq *rq, struct sched_domain *sd)
9373 {
9374         return ((rq->cpu_capacity * sd->imbalance_pct) <
9375                                 (rq->cpu_capacity_orig * 100));
9376 }
9377
9378 /*
9379  * Check whether a rq has a misfit task and if it looks like we can actually
9380  * help that task: we can migrate the task to a CPU of higher capacity, or
9381  * the task's current CPU is heavily pressured.
9382  */
9383 static inline int check_misfit_status(struct rq *rq, struct sched_domain *sd)
9384 {
9385         return rq->misfit_task_load &&
9386                 (rq->cpu_capacity_orig < rq->rd->max_cpu_capacity ||
9387                  check_cpu_capacity(rq, sd));
9388 }
9389
9390 /*
9391  * Group imbalance indicates (and tries to solve) the problem where balancing
9392  * groups is inadequate due to ->cpus_ptr constraints.
9393  *
9394  * Imagine a situation of two groups of 4 CPUs each and 4 tasks each with a
9395  * cpumask covering 1 CPU of the first group and 3 CPUs of the second group.
9396  * Something like:
9397  *
9398  *      { 0 1 2 3 } { 4 5 6 7 }
9399  *              *     * * *
9400  *
9401  * If we were to balance group-wise we'd place two tasks in the first group and
9402  * two tasks in the second group. Clearly this is undesired as it will overload
9403  * cpu 3 and leave one of the CPUs in the second group unused.
9404  *
9405  * The current solution to this issue is detecting the skew in the first group
9406  * by noticing the lower domain failed to reach balance and had difficulty
9407  * moving tasks due to affinity constraints.
9408  *
9409  * When this is so detected; this group becomes a candidate for busiest; see
9410  * update_sd_pick_busiest(). And calculate_imbalance() and
9411  * find_busiest_group() avoid some of the usual balance conditions to allow it
9412  * to create an effective group imbalance.
9413  *
9414  * This is a somewhat tricky proposition since the next run might not find the
9415  * group imbalance and decide the groups need to be balanced again. A most
9416  * subtle and fragile situation.
9417  */
9418
9419 static inline int sg_imbalanced(struct sched_group *group)
9420 {
9421         return group->sgc->imbalance;
9422 }
9423
9424 /*
9425  * group_has_capacity returns true if the group has spare capacity that could
9426  * be used by some tasks.
9427  * We consider that a group has spare capacity if the number of task is
9428  * smaller than the number of CPUs or if the utilization is lower than the
9429  * available capacity for CFS tasks.
9430  * For the latter, we use a threshold to stabilize the state, to take into
9431  * account the variance of the tasks' load and to return true if the available
9432  * capacity in meaningful for the load balancer.
9433  * As an example, an available capacity of 1% can appear but it doesn't make
9434  * any benefit for the load balance.
9435  */
9436 static inline bool
9437 group_has_capacity(unsigned int imbalance_pct, struct sg_lb_stats *sgs)
9438 {
9439         if (sgs->sum_nr_running < sgs->group_weight)
9440                 return true;
9441
9442         if ((sgs->group_capacity * imbalance_pct) <
9443                         (sgs->group_runnable * 100))
9444                 return false;
9445
9446         if ((sgs->group_capacity * 100) >
9447                         (sgs->group_util * imbalance_pct))
9448                 return true;
9449
9450         return false;
9451 }
9452
9453 /*
9454  *  group_is_overloaded returns true if the group has more tasks than it can
9455  *  handle.
9456  *  group_is_overloaded is not equals to !group_has_capacity because a group
9457  *  with the exact right number of tasks, has no more spare capacity but is not
9458  *  overloaded so both group_has_capacity and group_is_overloaded return
9459  *  false.
9460  */
9461 static inline bool
9462 group_is_overloaded(unsigned int imbalance_pct, struct sg_lb_stats *sgs)
9463 {
9464         if (sgs->sum_nr_running <= sgs->group_weight)
9465                 return false;
9466
9467         if ((sgs->group_capacity * 100) <
9468                         (sgs->group_util * imbalance_pct))
9469                 return true;
9470
9471         if ((sgs->group_capacity * imbalance_pct) <
9472                         (sgs->group_runnable * 100))
9473                 return true;
9474
9475         return false;
9476 }
9477
9478 static inline enum
9479 group_type group_classify(unsigned int imbalance_pct,
9480                           struct sched_group *group,
9481                           struct sg_lb_stats *sgs)
9482 {
9483         if (group_is_overloaded(imbalance_pct, sgs))
9484                 return group_overloaded;
9485
9486         if (sg_imbalanced(group))
9487                 return group_imbalanced;
9488
9489         if (sgs->group_asym_packing)
9490                 return group_asym_packing;
9491
9492         if (sgs->group_smt_balance)
9493                 return group_smt_balance;
9494
9495         if (sgs->group_misfit_task_load)
9496                 return group_misfit_task;
9497
9498         if (!group_has_capacity(imbalance_pct, sgs))
9499                 return group_fully_busy;
9500
9501         return group_has_spare;
9502 }
9503
9504 /**
9505  * sched_use_asym_prio - Check whether asym_packing priority must be used
9506  * @sd:         The scheduling domain of the load balancing
9507  * @cpu:        A CPU
9508  *
9509  * Always use CPU priority when balancing load between SMT siblings. When
9510  * balancing load between cores, it is not sufficient that @cpu is idle. Only
9511  * use CPU priority if the whole core is idle.
9512  *
9513  * Returns: True if the priority of @cpu must be followed. False otherwise.
9514  */
9515 static bool sched_use_asym_prio(struct sched_domain *sd, int cpu)
9516 {
9517         if (!sched_smt_active())
9518                 return true;
9519
9520         return sd->flags & SD_SHARE_CPUCAPACITY || is_core_idle(cpu);
9521 }
9522
9523 /**
9524  * sched_asym - Check if the destination CPU can do asym_packing load balance
9525  * @env:        The load balancing environment
9526  * @sds:        Load-balancing data with statistics of the local group
9527  * @sgs:        Load-balancing statistics of the candidate busiest group
9528  * @group:      The candidate busiest group
9529  *
9530  * @env::dst_cpu can do asym_packing if it has higher priority than the
9531  * preferred CPU of @group.
9532  *
9533  * SMT is a special case. If we are balancing load between cores, @env::dst_cpu
9534  * can do asym_packing balance only if all its SMT siblings are idle. Also, it
9535  * can only do it if @group is an SMT group and has exactly on busy CPU. Larger
9536  * imbalances in the number of CPUS are dealt with in find_busiest_group().
9537  *
9538  * If we are balancing load within an SMT core, or at DIE domain level, always
9539  * proceed.
9540  *
9541  * Return: true if @env::dst_cpu can do with asym_packing load balance. False
9542  * otherwise.
9543  */
9544 static inline bool
9545 sched_asym(struct lb_env *env, struct sd_lb_stats *sds,  struct sg_lb_stats *sgs,
9546            struct sched_group *group)
9547 {
9548         /* Ensure that the whole local core is idle, if applicable. */
9549         if (!sched_use_asym_prio(env->sd, env->dst_cpu))
9550                 return false;
9551
9552         /*
9553          * CPU priorities does not make sense for SMT cores with more than one
9554          * busy sibling.
9555          */
9556         if (group->flags & SD_SHARE_CPUCAPACITY) {
9557                 if (sgs->group_weight - sgs->idle_cpus != 1)
9558                         return false;
9559         }
9560
9561         return sched_asym_prefer(env->dst_cpu, group->asym_prefer_cpu);
9562 }
9563
9564 /* One group has more than one SMT CPU while the other group does not */
9565 static inline bool smt_vs_nonsmt_groups(struct sched_group *sg1,
9566                                     struct sched_group *sg2)
9567 {
9568         if (!sg1 || !sg2)
9569                 return false;
9570
9571         return (sg1->flags & SD_SHARE_CPUCAPACITY) !=
9572                 (sg2->flags & SD_SHARE_CPUCAPACITY);
9573 }
9574
9575 static inline bool smt_balance(struct lb_env *env, struct sg_lb_stats *sgs,
9576                                struct sched_group *group)
9577 {
9578         if (env->idle == CPU_NOT_IDLE)
9579                 return false;
9580
9581         /*
9582          * For SMT source group, it is better to move a task
9583          * to a CPU that doesn't have multiple tasks sharing its CPU capacity.
9584          * Note that if a group has a single SMT, SD_SHARE_CPUCAPACITY
9585          * will not be on.
9586          */
9587         if (group->flags & SD_SHARE_CPUCAPACITY &&
9588             sgs->sum_h_nr_running > 1)
9589                 return true;
9590
9591         return false;
9592 }
9593
9594 static inline long sibling_imbalance(struct lb_env *env,
9595                                     struct sd_lb_stats *sds,
9596                                     struct sg_lb_stats *busiest,
9597                                     struct sg_lb_stats *local)
9598 {
9599         int ncores_busiest, ncores_local;
9600         long imbalance;
9601
9602         if (env->idle == CPU_NOT_IDLE || !busiest->sum_nr_running)
9603                 return 0;
9604
9605         ncores_busiest = sds->busiest->cores;
9606         ncores_local = sds->local->cores;
9607
9608         if (ncores_busiest == ncores_local) {
9609                 imbalance = busiest->sum_nr_running;
9610                 lsub_positive(&imbalance, local->sum_nr_running);
9611                 return imbalance;
9612         }
9613
9614         /* Balance such that nr_running/ncores ratio are same on both groups */
9615         imbalance = ncores_local * busiest->sum_nr_running;
9616         lsub_positive(&imbalance, ncores_busiest * local->sum_nr_running);
9617         /* Normalize imbalance and do rounding on normalization */
9618         imbalance = 2 * imbalance + ncores_local + ncores_busiest;
9619         imbalance /= ncores_local + ncores_busiest;
9620
9621         /* Take advantage of resource in an empty sched group */
9622         if (imbalance <= 1 && local->sum_nr_running == 0 &&
9623             busiest->sum_nr_running > 1)
9624                 imbalance = 2;
9625
9626         return imbalance;
9627 }
9628
9629 static inline bool
9630 sched_reduced_capacity(struct rq *rq, struct sched_domain *sd)
9631 {
9632         /*
9633          * When there is more than 1 task, the group_overloaded case already
9634          * takes care of cpu with reduced capacity
9635          */
9636         if (rq->cfs.h_nr_running != 1)
9637                 return false;
9638
9639         return check_cpu_capacity(rq, sd);
9640 }
9641
9642 /**
9643  * update_sg_lb_stats - Update sched_group's statistics for load balancing.
9644  * @env: The load balancing environment.
9645  * @sds: Load-balancing data with statistics of the local group.
9646  * @group: sched_group whose statistics are to be updated.
9647  * @sgs: variable to hold the statistics for this group.
9648  * @sg_status: Holds flag indicating the status of the sched_group
9649  */
9650 static inline void update_sg_lb_stats(struct lb_env *env,
9651                                       struct sd_lb_stats *sds,
9652                                       struct sched_group *group,
9653                                       struct sg_lb_stats *sgs,
9654                                       int *sg_status)
9655 {
9656         int i, nr_running, local_group;
9657
9658         memset(sgs, 0, sizeof(*sgs));
9659
9660         local_group = group == sds->local;
9661
9662         for_each_cpu_and(i, sched_group_span(group), env->cpus) {
9663                 struct rq *rq = cpu_rq(i);
9664                 unsigned long load = cpu_load(rq);
9665
9666                 sgs->group_load += load;
9667                 sgs->group_util += cpu_util_cfs(i);
9668                 sgs->group_runnable += cpu_runnable(rq);
9669                 sgs->sum_h_nr_running += rq->cfs.h_nr_running;
9670
9671                 nr_running = rq->nr_running;
9672                 sgs->sum_nr_running += nr_running;
9673
9674                 if (nr_running > 1)
9675                         *sg_status |= SG_OVERLOAD;
9676
9677                 if (cpu_overutilized(i))
9678                         *sg_status |= SG_OVERUTILIZED;
9679
9680 #ifdef CONFIG_NUMA_BALANCING
9681                 sgs->nr_numa_running += rq->nr_numa_running;
9682                 sgs->nr_preferred_running += rq->nr_preferred_running;
9683 #endif
9684                 /*
9685                  * No need to call idle_cpu() if nr_running is not 0
9686                  */
9687                 if (!nr_running && idle_cpu(i)) {
9688                         sgs->idle_cpus++;
9689                         /* Idle cpu can't have misfit task */
9690                         continue;
9691                 }
9692
9693                 if (local_group)
9694                         continue;
9695
9696                 if (env->sd->flags & SD_ASYM_CPUCAPACITY) {
9697                         /* Check for a misfit task on the cpu */
9698                         if (sgs->group_misfit_task_load < rq->misfit_task_load) {
9699                                 sgs->group_misfit_task_load = rq->misfit_task_load;
9700                                 *sg_status |= SG_OVERLOAD;
9701                         }
9702                 } else if ((env->idle != CPU_NOT_IDLE) &&
9703                            sched_reduced_capacity(rq, env->sd)) {
9704                         /* Check for a task running on a CPU with reduced capacity */
9705                         if (sgs->group_misfit_task_load < load)
9706                                 sgs->group_misfit_task_load = load;
9707                 }
9708         }
9709
9710         sgs->group_capacity = group->sgc->capacity;
9711
9712         sgs->group_weight = group->group_weight;
9713
9714         /* Check if dst CPU is idle and preferred to this group */
9715         if (!local_group && env->sd->flags & SD_ASYM_PACKING &&
9716             env->idle != CPU_NOT_IDLE && sgs->sum_h_nr_running &&
9717             sched_asym(env, sds, sgs, group)) {
9718                 sgs->group_asym_packing = 1;
9719         }
9720
9721         /* Check for loaded SMT group to be balanced to dst CPU */
9722         if (!local_group && smt_balance(env, sgs, group))
9723                 sgs->group_smt_balance = 1;
9724
9725         sgs->group_type = group_classify(env->sd->imbalance_pct, group, sgs);
9726
9727         /* Computing avg_load makes sense only when group is overloaded */
9728         if (sgs->group_type == group_overloaded)
9729                 sgs->avg_load = (sgs->group_load * SCHED_CAPACITY_SCALE) /
9730                                 sgs->group_capacity;
9731 }
9732
9733 /**
9734  * update_sd_pick_busiest - return 1 on busiest group
9735  * @env: The load balancing environment.
9736  * @sds: sched_domain statistics
9737  * @sg: sched_group candidate to be checked for being the busiest
9738  * @sgs: sched_group statistics
9739  *
9740  * Determine if @sg is a busier group than the previously selected
9741  * busiest group.
9742  *
9743  * Return: %true if @sg is a busier group than the previously selected
9744  * busiest group. %false otherwise.
9745  */
9746 static bool update_sd_pick_busiest(struct lb_env *env,
9747                                    struct sd_lb_stats *sds,
9748                                    struct sched_group *sg,
9749                                    struct sg_lb_stats *sgs)
9750 {
9751         struct sg_lb_stats *busiest = &sds->busiest_stat;
9752
9753         /* Make sure that there is at least one task to pull */
9754         if (!sgs->sum_h_nr_running)
9755                 return false;
9756
9757         /*
9758          * Don't try to pull misfit tasks we can't help.
9759          * We can use max_capacity here as reduction in capacity on some
9760          * CPUs in the group should either be possible to resolve
9761          * internally or be covered by avg_load imbalance (eventually).
9762          */
9763         if ((env->sd->flags & SD_ASYM_CPUCAPACITY) &&
9764             (sgs->group_type == group_misfit_task) &&
9765             (!capacity_greater(capacity_of(env->dst_cpu), sg->sgc->max_capacity) ||
9766              sds->local_stat.group_type != group_has_spare))
9767                 return false;
9768
9769         if (sgs->group_type > busiest->group_type)
9770                 return true;
9771
9772         if (sgs->group_type < busiest->group_type)
9773                 return false;
9774
9775         /*
9776          * The candidate and the current busiest group are the same type of
9777          * group. Let check which one is the busiest according to the type.
9778          */
9779
9780         switch (sgs->group_type) {
9781         case group_overloaded:
9782                 /* Select the overloaded group with highest avg_load. */
9783                 if (sgs->avg_load <= busiest->avg_load)
9784                         return false;
9785                 break;
9786
9787         case group_imbalanced:
9788                 /*
9789                  * Select the 1st imbalanced group as we don't have any way to
9790                  * choose one more than another.
9791                  */
9792                 return false;
9793
9794         case group_asym_packing:
9795                 /* Prefer to move from lowest priority CPU's work */
9796                 if (sched_asym_prefer(sg->asym_prefer_cpu, sds->busiest->asym_prefer_cpu))
9797                         return false;
9798                 break;
9799
9800         case group_misfit_task:
9801                 /*
9802                  * If we have more than one misfit sg go with the biggest
9803                  * misfit.
9804                  */
9805                 if (sgs->group_misfit_task_load < busiest->group_misfit_task_load)
9806                         return false;
9807                 break;
9808
9809         case group_smt_balance:
9810                 /*
9811                  * Check if we have spare CPUs on either SMT group to
9812                  * choose has spare or fully busy handling.
9813                  */
9814                 if (sgs->idle_cpus != 0 || busiest->idle_cpus != 0)
9815                         goto has_spare;
9816
9817                 fallthrough;
9818
9819         case group_fully_busy:
9820                 /*
9821                  * Select the fully busy group with highest avg_load. In
9822                  * theory, there is no need to pull task from such kind of
9823                  * group because tasks have all compute capacity that they need
9824                  * but we can still improve the overall throughput by reducing
9825                  * contention when accessing shared HW resources.
9826                  *
9827                  * XXX for now avg_load is not computed and always 0 so we
9828                  * select the 1st one, except if @sg is composed of SMT
9829                  * siblings.
9830                  */
9831
9832                 if (sgs->avg_load < busiest->avg_load)
9833                         return false;
9834
9835                 if (sgs->avg_load == busiest->avg_load) {
9836                         /*
9837                          * SMT sched groups need more help than non-SMT groups.
9838                          * If @sg happens to also be SMT, either choice is good.
9839                          */
9840                         if (sds->busiest->flags & SD_SHARE_CPUCAPACITY)
9841                                 return false;
9842                 }
9843
9844                 break;
9845
9846         case group_has_spare:
9847                 /*
9848                  * Do not pick sg with SMT CPUs over sg with pure CPUs,
9849                  * as we do not want to pull task off SMT core with one task
9850                  * and make the core idle.
9851                  */
9852                 if (smt_vs_nonsmt_groups(sds->busiest, sg)) {
9853                         if (sg->flags & SD_SHARE_CPUCAPACITY && sgs->sum_h_nr_running <= 1)
9854                                 return false;
9855                         else
9856                                 return true;
9857                 }
9858 has_spare:
9859
9860                 /*
9861                  * Select not overloaded group with lowest number of idle cpus
9862                  * and highest number of running tasks. We could also compare
9863                  * the spare capacity which is more stable but it can end up
9864                  * that the group has less spare capacity but finally more idle
9865                  * CPUs which means less opportunity to pull tasks.
9866                  */
9867                 if (sgs->idle_cpus > busiest->idle_cpus)
9868                         return false;
9869                 else if ((sgs->idle_cpus == busiest->idle_cpus) &&
9870                          (sgs->sum_nr_running <= busiest->sum_nr_running))
9871                         return false;
9872
9873                 break;
9874         }
9875
9876         /*
9877          * Candidate sg has no more than one task per CPU and has higher
9878          * per-CPU capacity. Migrating tasks to less capable CPUs may harm
9879          * throughput. Maximize throughput, power/energy consequences are not
9880          * considered.
9881          */
9882         if ((env->sd->flags & SD_ASYM_CPUCAPACITY) &&
9883             (sgs->group_type <= group_fully_busy) &&
9884             (capacity_greater(sg->sgc->min_capacity, capacity_of(env->dst_cpu))))
9885                 return false;
9886
9887         return true;
9888 }
9889
9890 #ifdef CONFIG_NUMA_BALANCING
9891 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs)
9892 {
9893         if (sgs->sum_h_nr_running > sgs->nr_numa_running)
9894                 return regular;
9895         if (sgs->sum_h_nr_running > sgs->nr_preferred_running)
9896                 return remote;
9897         return all;
9898 }
9899
9900 static inline enum fbq_type fbq_classify_rq(struct rq *rq)
9901 {
9902         if (rq->nr_running > rq->nr_numa_running)
9903                 return regular;
9904         if (rq->nr_running > rq->nr_preferred_running)
9905                 return remote;
9906         return all;
9907 }
9908 #else
9909 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs)
9910 {
9911         return all;
9912 }
9913
9914 static inline enum fbq_type fbq_classify_rq(struct rq *rq)
9915 {
9916         return regular;
9917 }
9918 #endif /* CONFIG_NUMA_BALANCING */
9919
9920
9921 struct sg_lb_stats;
9922
9923 /*
9924  * task_running_on_cpu - return 1 if @p is running on @cpu.
9925  */
9926
9927 static unsigned int task_running_on_cpu(int cpu, struct task_struct *p)
9928 {
9929         /* Task has no contribution or is new */
9930         if (cpu != task_cpu(p) || !READ_ONCE(p->se.avg.last_update_time))
9931                 return 0;
9932
9933         if (task_on_rq_queued(p))
9934                 return 1;
9935
9936         return 0;
9937 }
9938
9939 /**
9940  * idle_cpu_without - would a given CPU be idle without p ?
9941  * @cpu: the processor on which idleness is tested.
9942  * @p: task which should be ignored.
9943  *
9944  * Return: 1 if the CPU would be idle. 0 otherwise.
9945  */
9946 static int idle_cpu_without(int cpu, struct task_struct *p)
9947 {
9948         struct rq *rq = cpu_rq(cpu);
9949
9950         if (rq->curr != rq->idle && rq->curr != p)
9951                 return 0;
9952
9953         /*
9954          * rq->nr_running can't be used but an updated version without the
9955          * impact of p on cpu must be used instead. The updated nr_running
9956          * be computed and tested before calling idle_cpu_without().
9957          */
9958
9959 #ifdef CONFIG_SMP
9960         if (rq->ttwu_pending)
9961                 return 0;
9962 #endif
9963
9964         return 1;
9965 }
9966
9967 /*
9968  * update_sg_wakeup_stats - Update sched_group's statistics for wakeup.
9969  * @sd: The sched_domain level to look for idlest group.
9970  * @group: sched_group whose statistics are to be updated.
9971  * @sgs: variable to hold the statistics for this group.
9972  * @p: The task for which we look for the idlest group/CPU.
9973  */
9974 static inline void update_sg_wakeup_stats(struct sched_domain *sd,
9975                                           struct sched_group *group,
9976                                           struct sg_lb_stats *sgs,
9977                                           struct task_struct *p)
9978 {
9979         int i, nr_running;
9980
9981         memset(sgs, 0, sizeof(*sgs));
9982
9983         /* Assume that task can't fit any CPU of the group */
9984         if (sd->flags & SD_ASYM_CPUCAPACITY)
9985                 sgs->group_misfit_task_load = 1;
9986
9987         for_each_cpu(i, sched_group_span(group)) {
9988                 struct rq *rq = cpu_rq(i);
9989                 unsigned int local;
9990
9991                 sgs->group_load += cpu_load_without(rq, p);
9992                 sgs->group_util += cpu_util_without(i, p);
9993                 sgs->group_runnable += cpu_runnable_without(rq, p);
9994                 local = task_running_on_cpu(i, p);
9995                 sgs->sum_h_nr_running += rq->cfs.h_nr_running - local;
9996
9997                 nr_running = rq->nr_running - local;
9998                 sgs->sum_nr_running += nr_running;
9999
10000                 /*
10001                  * No need to call idle_cpu_without() if nr_running is not 0
10002                  */
10003                 if (!nr_running && idle_cpu_without(i, p))
10004                         sgs->idle_cpus++;
10005
10006                 /* Check if task fits in the CPU */
10007                 if (sd->flags & SD_ASYM_CPUCAPACITY &&
10008                     sgs->group_misfit_task_load &&
10009                     task_fits_cpu(p, i))
10010                         sgs->group_misfit_task_load = 0;
10011
10012         }
10013
10014         sgs->group_capacity = group->sgc->capacity;
10015
10016         sgs->group_weight = group->group_weight;
10017
10018         sgs->group_type = group_classify(sd->imbalance_pct, group, sgs);
10019
10020         /*
10021          * Computing avg_load makes sense only when group is fully busy or
10022          * overloaded
10023          */
10024         if (sgs->group_type == group_fully_busy ||
10025                 sgs->group_type == group_overloaded)
10026                 sgs->avg_load = (sgs->group_load * SCHED_CAPACITY_SCALE) /
10027                                 sgs->group_capacity;
10028 }
10029
10030 static bool update_pick_idlest(struct sched_group *idlest,
10031                                struct sg_lb_stats *idlest_sgs,
10032                                struct sched_group *group,
10033                                struct sg_lb_stats *sgs)
10034 {
10035         if (sgs->group_type < idlest_sgs->group_type)
10036                 return true;
10037
10038         if (sgs->group_type > idlest_sgs->group_type)
10039                 return false;
10040
10041         /*
10042          * The candidate and the current idlest group are the same type of
10043          * group. Let check which one is the idlest according to the type.
10044          */
10045
10046         switch (sgs->group_type) {
10047         case group_overloaded:
10048         case group_fully_busy:
10049                 /* Select the group with lowest avg_load. */
10050                 if (idlest_sgs->avg_load <= sgs->avg_load)
10051                         return false;
10052                 break;
10053
10054         case group_imbalanced:
10055         case group_asym_packing:
10056         case group_smt_balance:
10057                 /* Those types are not used in the slow wakeup path */
10058                 return false;
10059
10060         case group_misfit_task:
10061                 /* Select group with the highest max capacity */
10062                 if (idlest->sgc->max_capacity >= group->sgc->max_capacity)
10063                         return false;
10064                 break;
10065
10066         case group_has_spare:
10067                 /* Select group with most idle CPUs */
10068                 if (idlest_sgs->idle_cpus > sgs->idle_cpus)
10069                         return false;
10070
10071                 /* Select group with lowest group_util */
10072                 if (idlest_sgs->idle_cpus == sgs->idle_cpus &&
10073                         idlest_sgs->group_util <= sgs->group_util)
10074                         return false;
10075
10076                 break;
10077         }
10078
10079         return true;
10080 }
10081
10082 /*
10083  * find_idlest_group() finds and returns the least busy CPU group within the
10084  * domain.
10085  *
10086  * Assumes p is allowed on at least one CPU in sd.
10087  */
10088 static struct sched_group *
10089 find_idlest_group(struct sched_domain *sd, struct task_struct *p, int this_cpu)
10090 {
10091         struct sched_group *idlest = NULL, *local = NULL, *group = sd->groups;
10092         struct sg_lb_stats local_sgs, tmp_sgs;
10093         struct sg_lb_stats *sgs;
10094         unsigned long imbalance;
10095         struct sg_lb_stats idlest_sgs = {
10096                         .avg_load = UINT_MAX,
10097                         .group_type = group_overloaded,
10098         };
10099
10100         do {
10101                 int local_group;
10102
10103                 /* Skip over this group if it has no CPUs allowed */
10104                 if (!cpumask_intersects(sched_group_span(group),
10105                                         p->cpus_ptr))
10106                         continue;
10107
10108                 /* Skip over this group if no cookie matched */
10109                 if (!sched_group_cookie_match(cpu_rq(this_cpu), p, group))
10110                         continue;
10111
10112                 local_group = cpumask_test_cpu(this_cpu,
10113                                                sched_group_span(group));
10114
10115                 if (local_group) {
10116                         sgs = &local_sgs;
10117                         local = group;
10118                 } else {
10119                         sgs = &tmp_sgs;
10120                 }
10121
10122                 update_sg_wakeup_stats(sd, group, sgs, p);
10123
10124                 if (!local_group && update_pick_idlest(idlest, &idlest_sgs, group, sgs)) {
10125                         idlest = group;
10126                         idlest_sgs = *sgs;
10127                 }
10128
10129         } while (group = group->next, group != sd->groups);
10130
10131
10132         /* There is no idlest group to push tasks to */
10133         if (!idlest)
10134                 return NULL;
10135
10136         /* The local group has been skipped because of CPU affinity */
10137         if (!local)
10138                 return idlest;
10139
10140         /*
10141          * If the local group is idler than the selected idlest group
10142          * don't try and push the task.
10143          */
10144         if (local_sgs.group_type < idlest_sgs.group_type)
10145                 return NULL;
10146
10147         /*
10148          * If the local group is busier than the selected idlest group
10149          * try and push the task.
10150          */
10151         if (local_sgs.group_type > idlest_sgs.group_type)
10152                 return idlest;
10153
10154         switch (local_sgs.group_type) {
10155         case group_overloaded:
10156         case group_fully_busy:
10157
10158                 /* Calculate allowed imbalance based on load */
10159                 imbalance = scale_load_down(NICE_0_LOAD) *
10160                                 (sd->imbalance_pct-100) / 100;
10161
10162                 /*
10163                  * When comparing groups across NUMA domains, it's possible for
10164                  * the local domain to be very lightly loaded relative to the
10165                  * remote domains but "imbalance" skews the comparison making
10166                  * remote CPUs look much more favourable. When considering
10167                  * cross-domain, add imbalance to the load on the remote node
10168                  * and consider staying local.
10169                  */
10170
10171                 if ((sd->flags & SD_NUMA) &&
10172                     ((idlest_sgs.avg_load + imbalance) >= local_sgs.avg_load))
10173                         return NULL;
10174
10175                 /*
10176                  * If the local group is less loaded than the selected
10177                  * idlest group don't try and push any tasks.
10178                  */
10179                 if (idlest_sgs.avg_load >= (local_sgs.avg_load + imbalance))
10180                         return NULL;
10181
10182                 if (100 * local_sgs.avg_load <= sd->imbalance_pct * idlest_sgs.avg_load)
10183                         return NULL;
10184                 break;
10185
10186         case group_imbalanced:
10187         case group_asym_packing:
10188         case group_smt_balance:
10189                 /* Those type are not used in the slow wakeup path */
10190                 return NULL;
10191
10192         case group_misfit_task:
10193                 /* Select group with the highest max capacity */
10194                 if (local->sgc->max_capacity >= idlest->sgc->max_capacity)
10195                         return NULL;
10196                 break;
10197
10198         case group_has_spare:
10199 #ifdef CONFIG_NUMA
10200                 if (sd->flags & SD_NUMA) {
10201                         int imb_numa_nr = sd->imb_numa_nr;
10202 #ifdef CONFIG_NUMA_BALANCING
10203                         int idlest_cpu;
10204                         /*
10205                          * If there is spare capacity at NUMA, try to select
10206                          * the preferred node
10207                          */
10208                         if (cpu_to_node(this_cpu) == p->numa_preferred_nid)
10209                                 return NULL;
10210
10211                         idlest_cpu = cpumask_first(sched_group_span(idlest));
10212                         if (cpu_to_node(idlest_cpu) == p->numa_preferred_nid)
10213                                 return idlest;
10214 #endif /* CONFIG_NUMA_BALANCING */
10215                         /*
10216                          * Otherwise, keep the task close to the wakeup source
10217                          * and improve locality if the number of running tasks
10218                          * would remain below threshold where an imbalance is
10219                          * allowed while accounting for the possibility the
10220                          * task is pinned to a subset of CPUs. If there is a
10221                          * real need of migration, periodic load balance will
10222                          * take care of it.
10223                          */
10224                         if (p->nr_cpus_allowed != NR_CPUS) {
10225                                 struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
10226
10227                                 cpumask_and(cpus, sched_group_span(local), p->cpus_ptr);
10228                                 imb_numa_nr = min(cpumask_weight(cpus), sd->imb_numa_nr);
10229                         }
10230
10231                         imbalance = abs(local_sgs.idle_cpus - idlest_sgs.idle_cpus);
10232                         if (!adjust_numa_imbalance(imbalance,
10233                                                    local_sgs.sum_nr_running + 1,
10234                                                    imb_numa_nr)) {
10235                                 return NULL;
10236                         }
10237                 }
10238 #endif /* CONFIG_NUMA */
10239
10240                 /*
10241                  * Select group with highest number of idle CPUs. We could also
10242                  * compare the utilization which is more stable but it can end
10243                  * up that the group has less spare capacity but finally more
10244                  * idle CPUs which means more opportunity to run task.
10245                  */
10246                 if (local_sgs.idle_cpus >= idlest_sgs.idle_cpus)
10247                         return NULL;
10248                 break;
10249         }
10250
10251         return idlest;
10252 }
10253
10254 static void update_idle_cpu_scan(struct lb_env *env,
10255                                  unsigned long sum_util)
10256 {
10257         struct sched_domain_shared *sd_share;
10258         int llc_weight, pct;
10259         u64 x, y, tmp;
10260         /*
10261          * Update the number of CPUs to scan in LLC domain, which could
10262          * be used as a hint in select_idle_cpu(). The update of sd_share
10263          * could be expensive because it is within a shared cache line.
10264          * So the write of this hint only occurs during periodic load
10265          * balancing, rather than CPU_NEWLY_IDLE, because the latter
10266          * can fire way more frequently than the former.
10267          */
10268         if (!sched_feat(SIS_UTIL) || env->idle == CPU_NEWLY_IDLE)
10269                 return;
10270
10271         llc_weight = per_cpu(sd_llc_size, env->dst_cpu);
10272         if (env->sd->span_weight != llc_weight)
10273                 return;
10274
10275         sd_share = rcu_dereference(per_cpu(sd_llc_shared, env->dst_cpu));
10276         if (!sd_share)
10277                 return;
10278
10279         /*
10280          * The number of CPUs to search drops as sum_util increases, when
10281          * sum_util hits 85% or above, the scan stops.
10282          * The reason to choose 85% as the threshold is because this is the
10283          * imbalance_pct(117) when a LLC sched group is overloaded.
10284          *
10285          * let y = SCHED_CAPACITY_SCALE - p * x^2                       [1]
10286          * and y'= y / SCHED_CAPACITY_SCALE
10287          *
10288          * x is the ratio of sum_util compared to the CPU capacity:
10289          * x = sum_util / (llc_weight * SCHED_CAPACITY_SCALE)
10290          * y' is the ratio of CPUs to be scanned in the LLC domain,
10291          * and the number of CPUs to scan is calculated by:
10292          *
10293          * nr_scan = llc_weight * y'                                    [2]
10294          *
10295          * When x hits the threshold of overloaded, AKA, when
10296          * x = 100 / pct, y drops to 0. According to [1],
10297          * p should be SCHED_CAPACITY_SCALE * pct^2 / 10000
10298          *
10299          * Scale x by SCHED_CAPACITY_SCALE:
10300          * x' = sum_util / llc_weight;                                  [3]
10301          *
10302          * and finally [1] becomes:
10303          * y = SCHED_CAPACITY_SCALE -
10304          *     x'^2 * pct^2 / (10000 * SCHED_CAPACITY_SCALE)            [4]
10305          *
10306          */
10307         /* equation [3] */
10308         x = sum_util;
10309         do_div(x, llc_weight);
10310
10311         /* equation [4] */
10312         pct = env->sd->imbalance_pct;
10313         tmp = x * x * pct * pct;
10314         do_div(tmp, 10000 * SCHED_CAPACITY_SCALE);
10315         tmp = min_t(long, tmp, SCHED_CAPACITY_SCALE);
10316         y = SCHED_CAPACITY_SCALE - tmp;
10317
10318         /* equation [2] */
10319         y *= llc_weight;
10320         do_div(y, SCHED_CAPACITY_SCALE);
10321         if ((int)y != sd_share->nr_idle_scan)
10322                 WRITE_ONCE(sd_share->nr_idle_scan, (int)y);
10323 }
10324
10325 /**
10326  * update_sd_lb_stats - Update sched_domain's statistics for load balancing.
10327  * @env: The load balancing environment.
10328  * @sds: variable to hold the statistics for this sched_domain.
10329  */
10330
10331 static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sds)
10332 {
10333         struct sched_group *sg = env->sd->groups;
10334         struct sg_lb_stats *local = &sds->local_stat;
10335         struct sg_lb_stats tmp_sgs;
10336         unsigned long sum_util = 0;
10337         int sg_status = 0;
10338
10339         do {
10340                 struct sg_lb_stats *sgs = &tmp_sgs;
10341                 int local_group;
10342
10343                 local_group = cpumask_test_cpu(env->dst_cpu, sched_group_span(sg));
10344                 if (local_group) {
10345                         sds->local = sg;
10346                         sgs = local;
10347
10348                         if (env->idle != CPU_NEWLY_IDLE ||
10349                             time_after_eq(jiffies, sg->sgc->next_update))
10350                                 update_group_capacity(env->sd, env->dst_cpu);
10351                 }
10352
10353                 update_sg_lb_stats(env, sds, sg, sgs, &sg_status);
10354
10355                 if (local_group)
10356                         goto next_group;
10357
10358
10359                 if (update_sd_pick_busiest(env, sds, sg, sgs)) {
10360                         sds->busiest = sg;
10361                         sds->busiest_stat = *sgs;
10362                 }
10363
10364 next_group:
10365                 /* Now, start updating sd_lb_stats */
10366                 sds->total_load += sgs->group_load;
10367                 sds->total_capacity += sgs->group_capacity;
10368
10369                 sum_util += sgs->group_util;
10370                 sg = sg->next;
10371         } while (sg != env->sd->groups);
10372
10373         /*
10374          * Indicate that the child domain of the busiest group prefers tasks
10375          * go to a child's sibling domains first. NB the flags of a sched group
10376          * are those of the child domain.
10377          */
10378         if (sds->busiest)
10379                 sds->prefer_sibling = !!(sds->busiest->flags & SD_PREFER_SIBLING);
10380
10381
10382         if (env->sd->flags & SD_NUMA)
10383                 env->fbq_type = fbq_classify_group(&sds->busiest_stat);
10384
10385         if (!env->sd->parent) {
10386                 struct root_domain *rd = env->dst_rq->rd;
10387
10388                 /* update overload indicator if we are at root domain */
10389                 WRITE_ONCE(rd->overload, sg_status & SG_OVERLOAD);
10390
10391                 /* Update over-utilization (tipping point, U >= 0) indicator */
10392                 WRITE_ONCE(rd->overutilized, sg_status & SG_OVERUTILIZED);
10393                 trace_sched_overutilized_tp(rd, sg_status & SG_OVERUTILIZED);
10394         } else if (sg_status & SG_OVERUTILIZED) {
10395                 struct root_domain *rd = env->dst_rq->rd;
10396
10397                 WRITE_ONCE(rd->overutilized, SG_OVERUTILIZED);
10398                 trace_sched_overutilized_tp(rd, SG_OVERUTILIZED);
10399         }
10400
10401         update_idle_cpu_scan(env, sum_util);
10402 }
10403
10404 /**
10405  * calculate_imbalance - Calculate the amount of imbalance present within the
10406  *                       groups of a given sched_domain during load balance.
10407  * @env: load balance environment
10408  * @sds: statistics of the sched_domain whose imbalance is to be calculated.
10409  */
10410 static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
10411 {
10412         struct sg_lb_stats *local, *busiest;
10413
10414         local = &sds->local_stat;
10415         busiest = &sds->busiest_stat;
10416
10417         if (busiest->group_type == group_misfit_task) {
10418                 if (env->sd->flags & SD_ASYM_CPUCAPACITY) {
10419                         /* Set imbalance to allow misfit tasks to be balanced. */
10420                         env->migration_type = migrate_misfit;
10421                         env->imbalance = 1;
10422                 } else {
10423                         /*
10424                          * Set load imbalance to allow moving task from cpu
10425                          * with reduced capacity.
10426                          */
10427                         env->migration_type = migrate_load;
10428                         env->imbalance = busiest->group_misfit_task_load;
10429                 }
10430                 return;
10431         }
10432
10433         if (busiest->group_type == group_asym_packing) {
10434                 /*
10435                  * In case of asym capacity, we will try to migrate all load to
10436                  * the preferred CPU.
10437                  */
10438                 env->migration_type = migrate_task;
10439                 env->imbalance = busiest->sum_h_nr_running;
10440                 return;
10441         }
10442
10443         if (busiest->group_type == group_smt_balance) {
10444                 /* Reduce number of tasks sharing CPU capacity */
10445                 env->migration_type = migrate_task;
10446                 env->imbalance = 1;
10447                 return;
10448         }
10449
10450         if (busiest->group_type == group_imbalanced) {
10451                 /*
10452                  * In the group_imb case we cannot rely on group-wide averages
10453                  * to ensure CPU-load equilibrium, try to move any task to fix
10454                  * the imbalance. The next load balance will take care of
10455                  * balancing back the system.
10456                  */
10457                 env->migration_type = migrate_task;
10458                 env->imbalance = 1;
10459                 return;
10460         }
10461
10462         /*
10463          * Try to use spare capacity of local group without overloading it or
10464          * emptying busiest.
10465          */
10466         if (local->group_type == group_has_spare) {
10467                 if ((busiest->group_type > group_fully_busy) &&
10468                     !(env->sd->flags & SD_SHARE_PKG_RESOURCES)) {
10469                         /*
10470                          * If busiest is overloaded, try to fill spare
10471                          * capacity. This might end up creating spare capacity
10472                          * in busiest or busiest still being overloaded but
10473                          * there is no simple way to directly compute the
10474                          * amount of load to migrate in order to balance the
10475                          * system.
10476                          */
10477                         env->migration_type = migrate_util;
10478                         env->imbalance = max(local->group_capacity, local->group_util) -
10479                                          local->group_util;
10480
10481                         /*
10482                          * In some cases, the group's utilization is max or even
10483                          * higher than capacity because of migrations but the
10484                          * local CPU is (newly) idle. There is at least one
10485                          * waiting task in this overloaded busiest group. Let's
10486                          * try to pull it.
10487                          */
10488                         if (env->idle != CPU_NOT_IDLE && env->imbalance == 0) {
10489                                 env->migration_type = migrate_task;
10490                                 env->imbalance = 1;
10491                         }
10492
10493                         return;
10494                 }
10495
10496                 if (busiest->group_weight == 1 || sds->prefer_sibling) {
10497                         /*
10498                          * When prefer sibling, evenly spread running tasks on
10499                          * groups.
10500                          */
10501                         env->migration_type = migrate_task;
10502                         env->imbalance = sibling_imbalance(env, sds, busiest, local);
10503                 } else {
10504
10505                         /*
10506                          * If there is no overload, we just want to even the number of
10507                          * idle cpus.
10508                          */
10509                         env->migration_type = migrate_task;
10510                         env->imbalance = max_t(long, 0,
10511                                                (local->idle_cpus - busiest->idle_cpus));
10512                 }
10513
10514 #ifdef CONFIG_NUMA
10515                 /* Consider allowing a small imbalance between NUMA groups */
10516                 if (env->sd->flags & SD_NUMA) {
10517                         env->imbalance = adjust_numa_imbalance(env->imbalance,
10518                                                                local->sum_nr_running + 1,
10519                                                                env->sd->imb_numa_nr);
10520                 }
10521 #endif
10522
10523                 /* Number of tasks to move to restore balance */
10524                 env->imbalance >>= 1;
10525
10526                 return;
10527         }
10528
10529         /*
10530          * Local is fully busy but has to take more load to relieve the
10531          * busiest group
10532          */
10533         if (local->group_type < group_overloaded) {
10534                 /*
10535                  * Local will become overloaded so the avg_load metrics are
10536                  * finally needed.
10537                  */
10538
10539                 local->avg_load = (local->group_load * SCHED_CAPACITY_SCALE) /
10540                                   local->group_capacity;
10541
10542                 /*
10543                  * If the local group is more loaded than the selected
10544                  * busiest group don't try to pull any tasks.
10545                  */
10546                 if (local->avg_load >= busiest->avg_load) {
10547                         env->imbalance = 0;
10548                         return;
10549                 }
10550
10551                 sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) /
10552                                 sds->total_capacity;
10553
10554                 /*
10555                  * If the local group is more loaded than the average system
10556                  * load, don't try to pull any tasks.
10557                  */
10558                 if (local->avg_load >= sds->avg_load) {
10559                         env->imbalance = 0;
10560                         return;
10561                 }
10562
10563         }
10564
10565         /*
10566          * Both group are or will become overloaded and we're trying to get all
10567          * the CPUs to the average_load, so we don't want to push ourselves
10568          * above the average load, nor do we wish to reduce the max loaded CPU
10569          * below the average load. At the same time, we also don't want to
10570          * reduce the group load below the group capacity. Thus we look for
10571          * the minimum possible imbalance.
10572          */
10573         env->migration_type = migrate_load;
10574         env->imbalance = min(
10575                 (busiest->avg_load - sds->avg_load) * busiest->group_capacity,
10576                 (sds->avg_load - local->avg_load) * local->group_capacity
10577         ) / SCHED_CAPACITY_SCALE;
10578 }
10579
10580 /******* find_busiest_group() helpers end here *********************/
10581
10582 /*
10583  * Decision matrix according to the local and busiest group type:
10584  *
10585  * busiest \ local has_spare fully_busy misfit asym imbalanced overloaded
10586  * has_spare        nr_idle   balanced   N/A    N/A  balanced   balanced
10587  * fully_busy       nr_idle   nr_idle    N/A    N/A  balanced   balanced
10588  * misfit_task      force     N/A        N/A    N/A  N/A        N/A
10589  * asym_packing     force     force      N/A    N/A  force      force
10590  * imbalanced       force     force      N/A    N/A  force      force
10591  * overloaded       force     force      N/A    N/A  force      avg_load
10592  *
10593  * N/A :      Not Applicable because already filtered while updating
10594  *            statistics.
10595  * balanced : The system is balanced for these 2 groups.
10596  * force :    Calculate the imbalance as load migration is probably needed.
10597  * avg_load : Only if imbalance is significant enough.
10598  * nr_idle :  dst_cpu is not busy and the number of idle CPUs is quite
10599  *            different in groups.
10600  */
10601
10602 /**
10603  * find_busiest_group - Returns the busiest group within the sched_domain
10604  * if there is an imbalance.
10605  * @env: The load balancing environment.
10606  *
10607  * Also calculates the amount of runnable load which should be moved
10608  * to restore balance.
10609  *
10610  * Return:      - The busiest group if imbalance exists.
10611  */
10612 static struct sched_group *find_busiest_group(struct lb_env *env)
10613 {
10614         struct sg_lb_stats *local, *busiest;
10615         struct sd_lb_stats sds;
10616
10617         init_sd_lb_stats(&sds);
10618
10619         /*
10620          * Compute the various statistics relevant for load balancing at
10621          * this level.
10622          */
10623         update_sd_lb_stats(env, &sds);
10624
10625         /* There is no busy sibling group to pull tasks from */
10626         if (!sds.busiest)
10627                 goto out_balanced;
10628
10629         busiest = &sds.busiest_stat;
10630
10631         /* Misfit tasks should be dealt with regardless of the avg load */
10632         if (busiest->group_type == group_misfit_task)
10633                 goto force_balance;
10634
10635         if (sched_energy_enabled()) {
10636                 struct root_domain *rd = env->dst_rq->rd;
10637
10638                 if (rcu_dereference(rd->pd) && !READ_ONCE(rd->overutilized))
10639                         goto out_balanced;
10640         }
10641
10642         /* ASYM feature bypasses nice load balance check */
10643         if (busiest->group_type == group_asym_packing)
10644                 goto force_balance;
10645
10646         /*
10647          * If the busiest group is imbalanced the below checks don't
10648          * work because they assume all things are equal, which typically
10649          * isn't true due to cpus_ptr constraints and the like.
10650          */
10651         if (busiest->group_type == group_imbalanced)
10652                 goto force_balance;
10653
10654         local = &sds.local_stat;
10655         /*
10656          * If the local group is busier than the selected busiest group
10657          * don't try and pull any tasks.
10658          */
10659         if (local->group_type > busiest->group_type)
10660                 goto out_balanced;
10661
10662         /*
10663          * When groups are overloaded, use the avg_load to ensure fairness
10664          * between tasks.
10665          */
10666         if (local->group_type == group_overloaded) {
10667                 /*
10668                  * If the local group is more loaded than the selected
10669                  * busiest group don't try to pull any tasks.
10670                  */
10671                 if (local->avg_load >= busiest->avg_load)
10672                         goto out_balanced;
10673
10674                 /* XXX broken for overlapping NUMA groups */
10675                 sds.avg_load = (sds.total_load * SCHED_CAPACITY_SCALE) /
10676                                 sds.total_capacity;
10677
10678                 /*
10679                  * Don't pull any tasks if this group is already above the
10680                  * domain average load.
10681                  */
10682                 if (local->avg_load >= sds.avg_load)
10683                         goto out_balanced;
10684
10685                 /*
10686                  * If the busiest group is more loaded, use imbalance_pct to be
10687                  * conservative.
10688                  */
10689                 if (100 * busiest->avg_load <=
10690                                 env->sd->imbalance_pct * local->avg_load)
10691                         goto out_balanced;
10692         }
10693
10694         /*
10695          * Try to move all excess tasks to a sibling domain of the busiest
10696          * group's child domain.
10697          */
10698         if (sds.prefer_sibling && local->group_type == group_has_spare &&
10699             sibling_imbalance(env, &sds, busiest, local) > 1)
10700                 goto force_balance;
10701
10702         if (busiest->group_type != group_overloaded) {
10703                 if (env->idle == CPU_NOT_IDLE) {
10704                         /*
10705                          * If the busiest group is not overloaded (and as a
10706                          * result the local one too) but this CPU is already
10707                          * busy, let another idle CPU try to pull task.
10708                          */
10709                         goto out_balanced;
10710                 }
10711
10712                 if (busiest->group_type == group_smt_balance &&
10713                     smt_vs_nonsmt_groups(sds.local, sds.busiest)) {
10714                         /* Let non SMT CPU pull from SMT CPU sharing with sibling */
10715                         goto force_balance;
10716                 }
10717
10718                 if (busiest->group_weight > 1 &&
10719                     local->idle_cpus <= (busiest->idle_cpus + 1)) {
10720                         /*
10721                          * If the busiest group is not overloaded
10722                          * and there is no imbalance between this and busiest
10723                          * group wrt idle CPUs, it is balanced. The imbalance
10724                          * becomes significant if the diff is greater than 1
10725                          * otherwise we might end up to just move the imbalance
10726                          * on another group. Of course this applies only if
10727                          * there is more than 1 CPU per group.
10728                          */
10729                         goto out_balanced;
10730                 }
10731
10732                 if (busiest->sum_h_nr_running == 1) {
10733                         /*
10734                          * busiest doesn't have any tasks waiting to run
10735                          */
10736                         goto out_balanced;
10737                 }
10738         }
10739
10740 force_balance:
10741         /* Looks like there is an imbalance. Compute it */
10742         calculate_imbalance(env, &sds);
10743         return env->imbalance ? sds.busiest : NULL;
10744
10745 out_balanced:
10746         env->imbalance = 0;
10747         return NULL;
10748 }
10749
10750 /*
10751  * find_busiest_queue - find the busiest runqueue among the CPUs in the group.
10752  */
10753 static struct rq *find_busiest_queue(struct lb_env *env,
10754                                      struct sched_group *group)
10755 {
10756         struct rq *busiest = NULL, *rq;
10757         unsigned long busiest_util = 0, busiest_load = 0, busiest_capacity = 1;
10758         unsigned int busiest_nr = 0;
10759         int i;
10760
10761         for_each_cpu_and(i, sched_group_span(group), env->cpus) {
10762                 unsigned long capacity, load, util;
10763                 unsigned int nr_running;
10764                 enum fbq_type rt;
10765
10766                 rq = cpu_rq(i);
10767                 rt = fbq_classify_rq(rq);
10768
10769                 /*
10770                  * We classify groups/runqueues into three groups:
10771                  *  - regular: there are !numa tasks
10772                  *  - remote:  there are numa tasks that run on the 'wrong' node
10773                  *  - all:     there is no distinction
10774                  *
10775                  * In order to avoid migrating ideally placed numa tasks,
10776                  * ignore those when there's better options.
10777                  *
10778                  * If we ignore the actual busiest queue to migrate another
10779                  * task, the next balance pass can still reduce the busiest
10780                  * queue by moving tasks around inside the node.
10781                  *
10782                  * If we cannot move enough load due to this classification
10783                  * the next pass will adjust the group classification and
10784                  * allow migration of more tasks.
10785                  *
10786                  * Both cases only affect the total convergence complexity.
10787                  */
10788                 if (rt > env->fbq_type)
10789                         continue;
10790
10791                 nr_running = rq->cfs.h_nr_running;
10792                 if (!nr_running)
10793                         continue;
10794
10795                 capacity = capacity_of(i);
10796
10797                 /*
10798                  * For ASYM_CPUCAPACITY domains, don't pick a CPU that could
10799                  * eventually lead to active_balancing high->low capacity.
10800                  * Higher per-CPU capacity is considered better than balancing
10801                  * average load.
10802                  */
10803                 if (env->sd->flags & SD_ASYM_CPUCAPACITY &&
10804                     !capacity_greater(capacity_of(env->dst_cpu), capacity) &&
10805                     nr_running == 1)
10806                         continue;
10807
10808                 /*
10809                  * Make sure we only pull tasks from a CPU of lower priority
10810                  * when balancing between SMT siblings.
10811                  *
10812                  * If balancing between cores, let lower priority CPUs help
10813                  * SMT cores with more than one busy sibling.
10814                  */
10815                 if ((env->sd->flags & SD_ASYM_PACKING) &&
10816                     sched_use_asym_prio(env->sd, i) &&
10817                     sched_asym_prefer(i, env->dst_cpu) &&
10818                     nr_running == 1)
10819                         continue;
10820
10821                 switch (env->migration_type) {
10822                 case migrate_load:
10823                         /*
10824                          * When comparing with load imbalance, use cpu_load()
10825                          * which is not scaled with the CPU capacity.
10826                          */
10827                         load = cpu_load(rq);
10828
10829                         if (nr_running == 1 && load > env->imbalance &&
10830                             !check_cpu_capacity(rq, env->sd))
10831                                 break;
10832
10833                         /*
10834                          * For the load comparisons with the other CPUs,
10835                          * consider the cpu_load() scaled with the CPU
10836                          * capacity, so that the load can be moved away
10837                          * from the CPU that is potentially running at a
10838                          * lower capacity.
10839                          *
10840                          * Thus we're looking for max(load_i / capacity_i),
10841                          * crosswise multiplication to rid ourselves of the
10842                          * division works out to:
10843                          * load_i * capacity_j > load_j * capacity_i;
10844                          * where j is our previous maximum.
10845                          */
10846                         if (load * busiest_capacity > busiest_load * capacity) {
10847                                 busiest_load = load;
10848                                 busiest_capacity = capacity;
10849                                 busiest = rq;
10850                         }
10851                         break;
10852
10853                 case migrate_util:
10854                         util = cpu_util_cfs_boost(i);
10855
10856                         /*
10857                          * Don't try to pull utilization from a CPU with one
10858                          * running task. Whatever its utilization, we will fail
10859                          * detach the task.
10860                          */
10861                         if (nr_running <= 1)
10862                                 continue;
10863
10864                         if (busiest_util < util) {
10865                                 busiest_util = util;
10866                                 busiest = rq;
10867                         }
10868                         break;
10869
10870                 case migrate_task:
10871                         if (busiest_nr < nr_running) {
10872                                 busiest_nr = nr_running;
10873                                 busiest = rq;
10874                         }
10875                         break;
10876
10877                 case migrate_misfit:
10878                         /*
10879                          * For ASYM_CPUCAPACITY domains with misfit tasks we
10880                          * simply seek the "biggest" misfit task.
10881                          */
10882                         if (rq->misfit_task_load > busiest_load) {
10883                                 busiest_load = rq->misfit_task_load;
10884                                 busiest = rq;
10885                         }
10886
10887                         break;
10888
10889                 }
10890         }
10891
10892         return busiest;
10893 }
10894
10895 /*
10896  * Max backoff if we encounter pinned tasks. Pretty arbitrary value, but
10897  * so long as it is large enough.
10898  */
10899 #define MAX_PINNED_INTERVAL     512
10900
10901 static inline bool
10902 asym_active_balance(struct lb_env *env)
10903 {
10904         /*
10905          * ASYM_PACKING needs to force migrate tasks from busy but lower
10906          * priority CPUs in order to pack all tasks in the highest priority
10907          * CPUs. When done between cores, do it only if the whole core if the
10908          * whole core is idle.
10909          *
10910          * If @env::src_cpu is an SMT core with busy siblings, let
10911          * the lower priority @env::dst_cpu help it. Do not follow
10912          * CPU priority.
10913          */
10914         return env->idle != CPU_NOT_IDLE && (env->sd->flags & SD_ASYM_PACKING) &&
10915                sched_use_asym_prio(env->sd, env->dst_cpu) &&
10916                (sched_asym_prefer(env->dst_cpu, env->src_cpu) ||
10917                 !sched_use_asym_prio(env->sd, env->src_cpu));
10918 }
10919
10920 static inline bool
10921 imbalanced_active_balance(struct lb_env *env)
10922 {
10923         struct sched_domain *sd = env->sd;
10924
10925         /*
10926          * The imbalanced case includes the case of pinned tasks preventing a fair
10927          * distribution of the load on the system but also the even distribution of the
10928          * threads on a system with spare capacity
10929          */
10930         if ((env->migration_type == migrate_task) &&
10931             (sd->nr_balance_failed > sd->cache_nice_tries+2))
10932                 return 1;
10933
10934         return 0;
10935 }
10936
10937 static int need_active_balance(struct lb_env *env)
10938 {
10939         struct sched_domain *sd = env->sd;
10940
10941         if (asym_active_balance(env))
10942                 return 1;
10943
10944         if (imbalanced_active_balance(env))
10945                 return 1;
10946
10947         /*
10948          * The dst_cpu is idle and the src_cpu CPU has only 1 CFS task.
10949          * It's worth migrating the task if the src_cpu's capacity is reduced
10950          * because of other sched_class or IRQs if more capacity stays
10951          * available on dst_cpu.
10952          */
10953         if ((env->idle != CPU_NOT_IDLE) &&
10954             (env->src_rq->cfs.h_nr_running == 1)) {
10955                 if ((check_cpu_capacity(env->src_rq, sd)) &&
10956                     (capacity_of(env->src_cpu)*sd->imbalance_pct < capacity_of(env->dst_cpu)*100))
10957                         return 1;
10958         }
10959
10960         if (env->migration_type == migrate_misfit)
10961                 return 1;
10962
10963         return 0;
10964 }
10965
10966 static int active_load_balance_cpu_stop(void *data);
10967
10968 static int should_we_balance(struct lb_env *env)
10969 {
10970         struct cpumask *swb_cpus = this_cpu_cpumask_var_ptr(should_we_balance_tmpmask);
10971         struct sched_group *sg = env->sd->groups;
10972         int cpu, idle_smt = -1;
10973
10974         /*
10975          * Ensure the balancing environment is consistent; can happen
10976          * when the softirq triggers 'during' hotplug.
10977          */
10978         if (!cpumask_test_cpu(env->dst_cpu, env->cpus))
10979                 return 0;
10980
10981         /*
10982          * In the newly idle case, we will allow all the CPUs
10983          * to do the newly idle load balance.
10984          *
10985          * However, we bail out if we already have tasks or a wakeup pending,
10986          * to optimize wakeup latency.
10987          */
10988         if (env->idle == CPU_NEWLY_IDLE) {
10989                 if (env->dst_rq->nr_running > 0 || env->dst_rq->ttwu_pending)
10990                         return 0;
10991                 return 1;
10992         }
10993
10994         cpumask_copy(swb_cpus, group_balance_mask(sg));
10995         /* Try to find first idle CPU */
10996         for_each_cpu_and(cpu, swb_cpus, env->cpus) {
10997                 if (!idle_cpu(cpu))
10998                         continue;
10999
11000                 /*
11001                  * Don't balance to idle SMT in busy core right away when
11002                  * balancing cores, but remember the first idle SMT CPU for
11003                  * later consideration.  Find CPU on an idle core first.
11004                  */
11005                 if (!(env->sd->flags & SD_SHARE_CPUCAPACITY) && !is_core_idle(cpu)) {
11006                         if (idle_smt == -1)
11007                                 idle_smt = cpu;
11008                         /*
11009                          * If the core is not idle, and first SMT sibling which is
11010                          * idle has been found, then its not needed to check other
11011                          * SMT siblings for idleness:
11012                          */
11013 #ifdef CONFIG_SCHED_SMT
11014                         cpumask_andnot(swb_cpus, swb_cpus, cpu_smt_mask(cpu));
11015 #endif
11016                         continue;
11017                 }
11018
11019                 /* Are we the first idle CPU? */
11020                 return cpu == env->dst_cpu;
11021         }
11022
11023         if (idle_smt == env->dst_cpu)
11024                 return true;
11025
11026         /* Are we the first CPU of this group ? */
11027         return group_balance_cpu(sg) == env->dst_cpu;
11028 }
11029
11030 /*
11031  * Check this_cpu to ensure it is balanced within domain. Attempt to move
11032  * tasks if there is an imbalance.
11033  */
11034 static int load_balance(int this_cpu, struct rq *this_rq,
11035                         struct sched_domain *sd, enum cpu_idle_type idle,
11036                         int *continue_balancing)
11037 {
11038         int ld_moved, cur_ld_moved, active_balance = 0;
11039         struct sched_domain *sd_parent = sd->parent;
11040         struct sched_group *group;
11041         struct rq *busiest;
11042         struct rq_flags rf;
11043         struct cpumask *cpus = this_cpu_cpumask_var_ptr(load_balance_mask);
11044         struct lb_env env = {
11045                 .sd             = sd,
11046                 .dst_cpu        = this_cpu,
11047                 .dst_rq         = this_rq,
11048                 .dst_grpmask    = group_balance_mask(sd->groups),
11049                 .idle           = idle,
11050                 .loop_break     = SCHED_NR_MIGRATE_BREAK,
11051                 .cpus           = cpus,
11052                 .fbq_type       = all,
11053                 .tasks          = LIST_HEAD_INIT(env.tasks),
11054         };
11055
11056         cpumask_and(cpus, sched_domain_span(sd), cpu_active_mask);
11057
11058         schedstat_inc(sd->lb_count[idle]);
11059
11060 redo:
11061         if (!should_we_balance(&env)) {
11062                 *continue_balancing = 0;
11063                 goto out_balanced;
11064         }
11065
11066         group = find_busiest_group(&env);
11067         if (!group) {
11068                 schedstat_inc(sd->lb_nobusyg[idle]);
11069                 goto out_balanced;
11070         }
11071
11072         busiest = find_busiest_queue(&env, group);
11073         if (!busiest) {
11074                 schedstat_inc(sd->lb_nobusyq[idle]);
11075                 goto out_balanced;
11076         }
11077
11078         WARN_ON_ONCE(busiest == env.dst_rq);
11079
11080         schedstat_add(sd->lb_imbalance[idle], env.imbalance);
11081
11082         env.src_cpu = busiest->cpu;
11083         env.src_rq = busiest;
11084
11085         ld_moved = 0;
11086         /* Clear this flag as soon as we find a pullable task */
11087         env.flags |= LBF_ALL_PINNED;
11088         if (busiest->nr_running > 1) {
11089                 /*
11090                  * Attempt to move tasks. If find_busiest_group has found
11091                  * an imbalance but busiest->nr_running <= 1, the group is
11092                  * still unbalanced. ld_moved simply stays zero, so it is
11093                  * correctly treated as an imbalance.
11094                  */
11095                 env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
11096
11097 more_balance:
11098                 rq_lock_irqsave(busiest, &rf);
11099                 update_rq_clock(busiest);
11100
11101                 /*
11102                  * cur_ld_moved - load moved in current iteration
11103                  * ld_moved     - cumulative load moved across iterations
11104                  */
11105                 cur_ld_moved = detach_tasks(&env);
11106
11107                 /*
11108                  * We've detached some tasks from busiest_rq. Every
11109                  * task is masked "TASK_ON_RQ_MIGRATING", so we can safely
11110                  * unlock busiest->lock, and we are able to be sure
11111                  * that nobody can manipulate the tasks in parallel.
11112                  * See task_rq_lock() family for the details.
11113                  */
11114
11115                 rq_unlock(busiest, &rf);
11116
11117                 if (cur_ld_moved) {
11118                         attach_tasks(&env);
11119                         ld_moved += cur_ld_moved;
11120                 }
11121
11122                 local_irq_restore(rf.flags);
11123
11124                 if (env.flags & LBF_NEED_BREAK) {
11125                         env.flags &= ~LBF_NEED_BREAK;
11126                         /* Stop if we tried all running tasks */
11127                         if (env.loop < busiest->nr_running)
11128                                 goto more_balance;
11129                 }
11130
11131                 /*
11132                  * Revisit (affine) tasks on src_cpu that couldn't be moved to
11133                  * us and move them to an alternate dst_cpu in our sched_group
11134                  * where they can run. The upper limit on how many times we
11135                  * iterate on same src_cpu is dependent on number of CPUs in our
11136                  * sched_group.
11137                  *
11138                  * This changes load balance semantics a bit on who can move
11139                  * load to a given_cpu. In addition to the given_cpu itself
11140                  * (or a ilb_cpu acting on its behalf where given_cpu is
11141                  * nohz-idle), we now have balance_cpu in a position to move
11142                  * load to given_cpu. In rare situations, this may cause
11143                  * conflicts (balance_cpu and given_cpu/ilb_cpu deciding
11144                  * _independently_ and at _same_ time to move some load to
11145                  * given_cpu) causing excess load to be moved to given_cpu.
11146                  * This however should not happen so much in practice and
11147                  * moreover subsequent load balance cycles should correct the
11148                  * excess load moved.
11149                  */
11150                 if ((env.flags & LBF_DST_PINNED) && env.imbalance > 0) {
11151
11152                         /* Prevent to re-select dst_cpu via env's CPUs */
11153                         __cpumask_clear_cpu(env.dst_cpu, env.cpus);
11154
11155                         env.dst_rq       = cpu_rq(env.new_dst_cpu);
11156                         env.dst_cpu      = env.new_dst_cpu;
11157                         env.flags       &= ~LBF_DST_PINNED;
11158                         env.loop         = 0;
11159                         env.loop_break   = SCHED_NR_MIGRATE_BREAK;
11160
11161                         /*
11162                          * Go back to "more_balance" rather than "redo" since we
11163                          * need to continue with same src_cpu.
11164                          */
11165                         goto more_balance;
11166                 }
11167
11168                 /*
11169                  * We failed to reach balance because of affinity.
11170                  */
11171                 if (sd_parent) {
11172                         int *group_imbalance = &sd_parent->groups->sgc->imbalance;
11173
11174                         if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0)
11175                                 *group_imbalance = 1;
11176                 }
11177
11178                 /* All tasks on this runqueue were pinned by CPU affinity */
11179                 if (unlikely(env.flags & LBF_ALL_PINNED)) {
11180                         __cpumask_clear_cpu(cpu_of(busiest), cpus);
11181                         /*
11182                          * Attempting to continue load balancing at the current
11183                          * sched_domain level only makes sense if there are
11184                          * active CPUs remaining as possible busiest CPUs to
11185                          * pull load from which are not contained within the
11186                          * destination group that is receiving any migrated
11187                          * load.
11188                          */
11189                         if (!cpumask_subset(cpus, env.dst_grpmask)) {
11190                                 env.loop = 0;
11191                                 env.loop_break = SCHED_NR_MIGRATE_BREAK;
11192                                 goto redo;
11193                         }
11194                         goto out_all_pinned;
11195                 }
11196         }
11197
11198         if (!ld_moved) {
11199                 schedstat_inc(sd->lb_failed[idle]);
11200                 /*
11201                  * Increment the failure counter only on periodic balance.
11202                  * We do not want newidle balance, which can be very
11203                  * frequent, pollute the failure counter causing
11204                  * excessive cache_hot migrations and active balances.
11205                  */
11206                 if (idle != CPU_NEWLY_IDLE)
11207                         sd->nr_balance_failed++;
11208
11209                 if (need_active_balance(&env)) {
11210                         unsigned long flags;
11211
11212                         raw_spin_rq_lock_irqsave(busiest, flags);
11213
11214                         /*
11215                          * Don't kick the active_load_balance_cpu_stop,
11216                          * if the curr task on busiest CPU can't be
11217                          * moved to this_cpu:
11218                          */
11219                         if (!cpumask_test_cpu(this_cpu, busiest->curr->cpus_ptr)) {
11220                                 raw_spin_rq_unlock_irqrestore(busiest, flags);
11221                                 goto out_one_pinned;
11222                         }
11223
11224                         /* Record that we found at least one task that could run on this_cpu */
11225                         env.flags &= ~LBF_ALL_PINNED;
11226
11227                         /*
11228                          * ->active_balance synchronizes accesses to
11229                          * ->active_balance_work.  Once set, it's cleared
11230                          * only after active load balance is finished.
11231                          */
11232                         if (!busiest->active_balance) {
11233                                 busiest->active_balance = 1;
11234                                 busiest->push_cpu = this_cpu;
11235                                 active_balance = 1;
11236                         }
11237                         raw_spin_rq_unlock_irqrestore(busiest, flags);
11238
11239                         if (active_balance) {
11240                                 stop_one_cpu_nowait(cpu_of(busiest),
11241                                         active_load_balance_cpu_stop, busiest,
11242                                         &busiest->active_balance_work);
11243                         }
11244                 }
11245         } else {
11246                 sd->nr_balance_failed = 0;
11247         }
11248
11249         if (likely(!active_balance) || need_active_balance(&env)) {
11250                 /* We were unbalanced, so reset the balancing interval */
11251                 sd->balance_interval = sd->min_interval;
11252         }
11253
11254         goto out;
11255
11256 out_balanced:
11257         /*
11258          * We reach balance although we may have faced some affinity
11259          * constraints. Clear the imbalance flag only if other tasks got
11260          * a chance to move and fix the imbalance.
11261          */
11262         if (sd_parent && !(env.flags & LBF_ALL_PINNED)) {
11263                 int *group_imbalance = &sd_parent->groups->sgc->imbalance;
11264
11265                 if (*group_imbalance)
11266                         *group_imbalance = 0;
11267         }
11268
11269 out_all_pinned:
11270         /*
11271          * We reach balance because all tasks are pinned at this level so
11272          * we can't migrate them. Let the imbalance flag set so parent level
11273          * can try to migrate them.
11274          */
11275         schedstat_inc(sd->lb_balanced[idle]);
11276
11277         sd->nr_balance_failed = 0;
11278
11279 out_one_pinned:
11280         ld_moved = 0;
11281
11282         /*
11283          * newidle_balance() disregards balance intervals, so we could
11284          * repeatedly reach this code, which would lead to balance_interval
11285          * skyrocketing in a short amount of time. Skip the balance_interval
11286          * increase logic to avoid that.
11287          */
11288         if (env.idle == CPU_NEWLY_IDLE)
11289                 goto out;
11290
11291         /* tune up the balancing interval */
11292         if ((env.flags & LBF_ALL_PINNED &&
11293              sd->balance_interval < MAX_PINNED_INTERVAL) ||
11294             sd->balance_interval < sd->max_interval)
11295                 sd->balance_interval *= 2;
11296 out:
11297         return ld_moved;
11298 }
11299
11300 static inline unsigned long
11301 get_sd_balance_interval(struct sched_domain *sd, int cpu_busy)
11302 {
11303         unsigned long interval = sd->balance_interval;
11304
11305         if (cpu_busy)
11306                 interval *= sd->busy_factor;
11307
11308         /* scale ms to jiffies */
11309         interval = msecs_to_jiffies(interval);
11310
11311         /*
11312          * Reduce likelihood of busy balancing at higher domains racing with
11313          * balancing at lower domains by preventing their balancing periods
11314          * from being multiples of each other.
11315          */
11316         if (cpu_busy)
11317                 interval -= 1;
11318
11319         interval = clamp(interval, 1UL, max_load_balance_interval);
11320
11321         return interval;
11322 }
11323
11324 static inline void
11325 update_next_balance(struct sched_domain *sd, unsigned long *next_balance)
11326 {
11327         unsigned long interval, next;
11328
11329         /* used by idle balance, so cpu_busy = 0 */
11330         interval = get_sd_balance_interval(sd, 0);
11331         next = sd->last_balance + interval;
11332
11333         if (time_after(*next_balance, next))
11334                 *next_balance = next;
11335 }
11336
11337 /*
11338  * active_load_balance_cpu_stop is run by the CPU stopper. It pushes
11339  * running tasks off the busiest CPU onto idle CPUs. It requires at
11340  * least 1 task to be running on each physical CPU where possible, and
11341  * avoids physical / logical imbalances.
11342  */
11343 static int active_load_balance_cpu_stop(void *data)
11344 {
11345         struct rq *busiest_rq = data;
11346         int busiest_cpu = cpu_of(busiest_rq);
11347         int target_cpu = busiest_rq->push_cpu;
11348         struct rq *target_rq = cpu_rq(target_cpu);
11349         struct sched_domain *sd;
11350         struct task_struct *p = NULL;
11351         struct rq_flags rf;
11352
11353         rq_lock_irq(busiest_rq, &rf);
11354         /*
11355          * Between queueing the stop-work and running it is a hole in which
11356          * CPUs can become inactive. We should not move tasks from or to
11357          * inactive CPUs.
11358          */
11359         if (!cpu_active(busiest_cpu) || !cpu_active(target_cpu))
11360                 goto out_unlock;
11361
11362         /* Make sure the requested CPU hasn't gone down in the meantime: */
11363         if (unlikely(busiest_cpu != smp_processor_id() ||
11364                      !busiest_rq->active_balance))
11365                 goto out_unlock;
11366
11367         /* Is there any task to move? */
11368         if (busiest_rq->nr_running <= 1)
11369                 goto out_unlock;
11370
11371         /*
11372          * This condition is "impossible", if it occurs
11373          * we need to fix it. Originally reported by
11374          * Bjorn Helgaas on a 128-CPU setup.
11375          */
11376         WARN_ON_ONCE(busiest_rq == target_rq);
11377
11378         /* Search for an sd spanning us and the target CPU. */
11379         rcu_read_lock();
11380         for_each_domain(target_cpu, sd) {
11381                 if (cpumask_test_cpu(busiest_cpu, sched_domain_span(sd)))
11382                         break;
11383         }
11384
11385         if (likely(sd)) {
11386                 struct lb_env env = {
11387                         .sd             = sd,
11388                         .dst_cpu        = target_cpu,
11389                         .dst_rq         = target_rq,
11390                         .src_cpu        = busiest_rq->cpu,
11391                         .src_rq         = busiest_rq,
11392                         .idle           = CPU_IDLE,
11393                         .flags          = LBF_ACTIVE_LB,
11394                 };
11395
11396                 schedstat_inc(sd->alb_count);
11397                 update_rq_clock(busiest_rq);
11398
11399                 p = detach_one_task(&env);
11400                 if (p) {
11401                         schedstat_inc(sd->alb_pushed);
11402                         /* Active balancing done, reset the failure counter. */
11403                         sd->nr_balance_failed = 0;
11404                 } else {
11405                         schedstat_inc(sd->alb_failed);
11406                 }
11407         }
11408         rcu_read_unlock();
11409 out_unlock:
11410         busiest_rq->active_balance = 0;
11411         rq_unlock(busiest_rq, &rf);
11412
11413         if (p)
11414                 attach_one_task(target_rq, p);
11415
11416         local_irq_enable();
11417
11418         return 0;
11419 }
11420
11421 static DEFINE_SPINLOCK(balancing);
11422
11423 /*
11424  * Scale the max load_balance interval with the number of CPUs in the system.
11425  * This trades load-balance latency on larger machines for less cross talk.
11426  */
11427 void update_max_interval(void)
11428 {
11429         max_load_balance_interval = HZ*num_online_cpus()/10;
11430 }
11431
11432 static inline bool update_newidle_cost(struct sched_domain *sd, u64 cost)
11433 {
11434         if (cost > sd->max_newidle_lb_cost) {
11435                 /*
11436                  * Track max cost of a domain to make sure to not delay the
11437                  * next wakeup on the CPU.
11438                  */
11439                 sd->max_newidle_lb_cost = cost;
11440                 sd->last_decay_max_lb_cost = jiffies;
11441         } else if (time_after(jiffies, sd->last_decay_max_lb_cost + HZ)) {
11442                 /*
11443                  * Decay the newidle max times by ~1% per second to ensure that
11444                  * it is not outdated and the current max cost is actually
11445                  * shorter.
11446                  */
11447                 sd->max_newidle_lb_cost = (sd->max_newidle_lb_cost * 253) / 256;
11448                 sd->last_decay_max_lb_cost = jiffies;
11449
11450                 return true;
11451         }
11452
11453         return false;
11454 }
11455
11456 /*
11457  * It checks each scheduling domain to see if it is due to be balanced,
11458  * and initiates a balancing operation if so.
11459  *
11460  * Balancing parameters are set up in init_sched_domains.
11461  */
11462 static void rebalance_domains(struct rq *rq, enum cpu_idle_type idle)
11463 {
11464         int continue_balancing = 1;
11465         int cpu = rq->cpu;
11466         int busy = idle != CPU_IDLE && !sched_idle_cpu(cpu);
11467         unsigned long interval;
11468         struct sched_domain *sd;
11469         /* Earliest time when we have to do rebalance again */
11470         unsigned long next_balance = jiffies + 60*HZ;
11471         int update_next_balance = 0;
11472         int need_serialize, need_decay = 0;
11473         u64 max_cost = 0;
11474
11475         rcu_read_lock();
11476         for_each_domain(cpu, sd) {
11477                 /*
11478                  * Decay the newidle max times here because this is a regular
11479                  * visit to all the domains.
11480                  */
11481                 need_decay = update_newidle_cost(sd, 0);
11482                 max_cost += sd->max_newidle_lb_cost;
11483
11484                 /*
11485                  * Stop the load balance at this level. There is another
11486                  * CPU in our sched group which is doing load balancing more
11487                  * actively.
11488                  */
11489                 if (!continue_balancing) {
11490                         if (need_decay)
11491                                 continue;
11492                         break;
11493                 }
11494
11495                 interval = get_sd_balance_interval(sd, busy);
11496
11497                 need_serialize = sd->flags & SD_SERIALIZE;
11498                 if (need_serialize) {
11499                         if (!spin_trylock(&balancing))
11500                                 goto out;
11501                 }
11502
11503                 if (time_after_eq(jiffies, sd->last_balance + interval)) {
11504                         if (load_balance(cpu, rq, sd, idle, &continue_balancing)) {
11505                                 /*
11506                                  * The LBF_DST_PINNED logic could have changed
11507                                  * env->dst_cpu, so we can't know our idle
11508                                  * state even if we migrated tasks. Update it.
11509                                  */
11510                                 idle = idle_cpu(cpu) ? CPU_IDLE : CPU_NOT_IDLE;
11511                                 busy = idle != CPU_IDLE && !sched_idle_cpu(cpu);
11512                         }
11513                         sd->last_balance = jiffies;
11514                         interval = get_sd_balance_interval(sd, busy);
11515                 }
11516                 if (need_serialize)
11517                         spin_unlock(&balancing);
11518 out:
11519                 if (time_after(next_balance, sd->last_balance + interval)) {
11520                         next_balance = sd->last_balance + interval;
11521                         update_next_balance = 1;
11522                 }
11523         }
11524         if (need_decay) {
11525                 /*
11526                  * Ensure the rq-wide value also decays but keep it at a
11527                  * reasonable floor to avoid funnies with rq->avg_idle.
11528                  */
11529                 rq->max_idle_balance_cost =
11530                         max((u64)sysctl_sched_migration_cost, max_cost);
11531         }
11532         rcu_read_unlock();
11533
11534         /*
11535          * next_balance will be updated only when there is a need.
11536          * When the cpu is attached to null domain for ex, it will not be
11537          * updated.
11538          */
11539         if (likely(update_next_balance))
11540                 rq->next_balance = next_balance;
11541
11542 }
11543
11544 static inline int on_null_domain(struct rq *rq)
11545 {
11546         return unlikely(!rcu_dereference_sched(rq->sd));
11547 }
11548
11549 #ifdef CONFIG_NO_HZ_COMMON
11550 /*
11551  * idle load balancing details
11552  * - When one of the busy CPUs notice that there may be an idle rebalancing
11553  *   needed, they will kick the idle load balancer, which then does idle
11554  *   load balancing for all the idle CPUs.
11555  * - HK_TYPE_MISC CPUs are used for this task, because HK_TYPE_SCHED not set
11556  *   anywhere yet.
11557  */
11558
11559 static inline int find_new_ilb(void)
11560 {
11561         int ilb;
11562         const struct cpumask *hk_mask;
11563
11564         hk_mask = housekeeping_cpumask(HK_TYPE_MISC);
11565
11566         for_each_cpu_and(ilb, nohz.idle_cpus_mask, hk_mask) {
11567
11568                 if (ilb == smp_processor_id())
11569                         continue;
11570
11571                 if (idle_cpu(ilb))
11572                         return ilb;
11573         }
11574
11575         return nr_cpu_ids;
11576 }
11577
11578 /*
11579  * Kick a CPU to do the nohz balancing, if it is time for it. We pick any
11580  * idle CPU in the HK_TYPE_MISC housekeeping set (if there is one).
11581  */
11582 static void kick_ilb(unsigned int flags)
11583 {
11584         int ilb_cpu;
11585
11586         /*
11587          * Increase nohz.next_balance only when if full ilb is triggered but
11588          * not if we only update stats.
11589          */
11590         if (flags & NOHZ_BALANCE_KICK)
11591                 nohz.next_balance = jiffies+1;
11592
11593         ilb_cpu = find_new_ilb();
11594
11595         if (ilb_cpu >= nr_cpu_ids)
11596                 return;
11597
11598         /*
11599          * Access to rq::nohz_csd is serialized by NOHZ_KICK_MASK; he who sets
11600          * the first flag owns it; cleared by nohz_csd_func().
11601          */
11602         flags = atomic_fetch_or(flags, nohz_flags(ilb_cpu));
11603         if (flags & NOHZ_KICK_MASK)
11604                 return;
11605
11606         /*
11607          * This way we generate an IPI on the target CPU which
11608          * is idle. And the softirq performing nohz idle load balance
11609          * will be run before returning from the IPI.
11610          */
11611         smp_call_function_single_async(ilb_cpu, &cpu_rq(ilb_cpu)->nohz_csd);
11612 }
11613
11614 /*
11615  * Current decision point for kicking the idle load balancer in the presence
11616  * of idle CPUs in the system.
11617  */
11618 static void nohz_balancer_kick(struct rq *rq)
11619 {
11620         unsigned long now = jiffies;
11621         struct sched_domain_shared *sds;
11622         struct sched_domain *sd;
11623         int nr_busy, i, cpu = rq->cpu;
11624         unsigned int flags = 0;
11625
11626         if (unlikely(rq->idle_balance))
11627                 return;
11628
11629         /*
11630          * We may be recently in ticked or tickless idle mode. At the first
11631          * busy tick after returning from idle, we will update the busy stats.
11632          */
11633         nohz_balance_exit_idle(rq);
11634
11635         /*
11636          * None are in tickless mode and hence no need for NOHZ idle load
11637          * balancing.
11638          */
11639         if (likely(!atomic_read(&nohz.nr_cpus)))
11640                 return;
11641
11642         if (READ_ONCE(nohz.has_blocked) &&
11643             time_after(now, READ_ONCE(nohz.next_blocked)))
11644                 flags = NOHZ_STATS_KICK;
11645
11646         if (time_before(now, nohz.next_balance))
11647                 goto out;
11648
11649         if (rq->nr_running >= 2) {
11650                 flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
11651                 goto out;
11652         }
11653
11654         rcu_read_lock();
11655
11656         sd = rcu_dereference(rq->sd);
11657         if (sd) {
11658                 /*
11659                  * If there's a CFS task and the current CPU has reduced
11660                  * capacity; kick the ILB to see if there's a better CPU to run
11661                  * on.
11662                  */
11663                 if (rq->cfs.h_nr_running >= 1 && check_cpu_capacity(rq, sd)) {
11664                         flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
11665                         goto unlock;
11666                 }
11667         }
11668
11669         sd = rcu_dereference(per_cpu(sd_asym_packing, cpu));
11670         if (sd) {
11671                 /*
11672                  * When ASYM_PACKING; see if there's a more preferred CPU
11673                  * currently idle; in which case, kick the ILB to move tasks
11674                  * around.
11675                  *
11676                  * When balancing betwen cores, all the SMT siblings of the
11677                  * preferred CPU must be idle.
11678                  */
11679                 for_each_cpu_and(i, sched_domain_span(sd), nohz.idle_cpus_mask) {
11680                         if (sched_use_asym_prio(sd, i) &&
11681                             sched_asym_prefer(i, cpu)) {
11682                                 flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
11683                                 goto unlock;
11684                         }
11685                 }
11686         }
11687
11688         sd = rcu_dereference(per_cpu(sd_asym_cpucapacity, cpu));
11689         if (sd) {
11690                 /*
11691                  * When ASYM_CPUCAPACITY; see if there's a higher capacity CPU
11692                  * to run the misfit task on.
11693                  */
11694                 if (check_misfit_status(rq, sd)) {
11695                         flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
11696                         goto unlock;
11697                 }
11698
11699                 /*
11700                  * For asymmetric systems, we do not want to nicely balance
11701                  * cache use, instead we want to embrace asymmetry and only
11702                  * ensure tasks have enough CPU capacity.
11703                  *
11704                  * Skip the LLC logic because it's not relevant in that case.
11705                  */
11706                 goto unlock;
11707         }
11708
11709         sds = rcu_dereference(per_cpu(sd_llc_shared, cpu));
11710         if (sds) {
11711                 /*
11712                  * If there is an imbalance between LLC domains (IOW we could
11713                  * increase the overall cache use), we need some less-loaded LLC
11714                  * domain to pull some load. Likewise, we may need to spread
11715                  * load within the current LLC domain (e.g. packed SMT cores but
11716                  * other CPUs are idle). We can't really know from here how busy
11717                  * the others are - so just get a nohz balance going if it looks
11718                  * like this LLC domain has tasks we could move.
11719                  */
11720                 nr_busy = atomic_read(&sds->nr_busy_cpus);
11721                 if (nr_busy > 1) {
11722                         flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
11723                         goto unlock;
11724                 }
11725         }
11726 unlock:
11727         rcu_read_unlock();
11728 out:
11729         if (READ_ONCE(nohz.needs_update))
11730                 flags |= NOHZ_NEXT_KICK;
11731
11732         if (flags)
11733                 kick_ilb(flags);
11734 }
11735
11736 static void set_cpu_sd_state_busy(int cpu)
11737 {
11738         struct sched_domain *sd;
11739
11740         rcu_read_lock();
11741         sd = rcu_dereference(per_cpu(sd_llc, cpu));
11742
11743         if (!sd || !sd->nohz_idle)
11744                 goto unlock;
11745         sd->nohz_idle = 0;
11746
11747         atomic_inc(&sd->shared->nr_busy_cpus);
11748 unlock:
11749         rcu_read_unlock();
11750 }
11751
11752 void nohz_balance_exit_idle(struct rq *rq)
11753 {
11754         SCHED_WARN_ON(rq != this_rq());
11755
11756         if (likely(!rq->nohz_tick_stopped))
11757                 return;
11758
11759         rq->nohz_tick_stopped = 0;
11760         cpumask_clear_cpu(rq->cpu, nohz.idle_cpus_mask);
11761         atomic_dec(&nohz.nr_cpus);
11762
11763         set_cpu_sd_state_busy(rq->cpu);
11764 }
11765
11766 static void set_cpu_sd_state_idle(int cpu)
11767 {
11768         struct sched_domain *sd;
11769
11770         rcu_read_lock();
11771         sd = rcu_dereference(per_cpu(sd_llc, cpu));
11772
11773         if (!sd || sd->nohz_idle)
11774                 goto unlock;
11775         sd->nohz_idle = 1;
11776
11777         atomic_dec(&sd->shared->nr_busy_cpus);
11778 unlock:
11779         rcu_read_unlock();
11780 }
11781
11782 /*
11783  * This routine will record that the CPU is going idle with tick stopped.
11784  * This info will be used in performing idle load balancing in the future.
11785  */
11786 void nohz_balance_enter_idle(int cpu)
11787 {
11788         struct rq *rq = cpu_rq(cpu);
11789
11790         SCHED_WARN_ON(cpu != smp_processor_id());
11791
11792         /* If this CPU is going down, then nothing needs to be done: */
11793         if (!cpu_active(cpu))
11794                 return;
11795
11796         /* Spare idle load balancing on CPUs that don't want to be disturbed: */
11797         if (!housekeeping_cpu(cpu, HK_TYPE_SCHED))
11798                 return;
11799
11800         /*
11801          * Can be set safely without rq->lock held
11802          * If a clear happens, it will have evaluated last additions because
11803          * rq->lock is held during the check and the clear
11804          */
11805         rq->has_blocked_load = 1;
11806
11807         /*
11808          * The tick is still stopped but load could have been added in the
11809          * meantime. We set the nohz.has_blocked flag to trig a check of the
11810          * *_avg. The CPU is already part of nohz.idle_cpus_mask so the clear
11811          * of nohz.has_blocked can only happen after checking the new load
11812          */
11813         if (rq->nohz_tick_stopped)
11814                 goto out;
11815
11816         /* If we're a completely isolated CPU, we don't play: */
11817         if (on_null_domain(rq))
11818                 return;
11819
11820         rq->nohz_tick_stopped = 1;
11821
11822         cpumask_set_cpu(cpu, nohz.idle_cpus_mask);
11823         atomic_inc(&nohz.nr_cpus);
11824
11825         /*
11826          * Ensures that if nohz_idle_balance() fails to observe our
11827          * @idle_cpus_mask store, it must observe the @has_blocked
11828          * and @needs_update stores.
11829          */
11830         smp_mb__after_atomic();
11831
11832         set_cpu_sd_state_idle(cpu);
11833
11834         WRITE_ONCE(nohz.needs_update, 1);
11835 out:
11836         /*
11837          * Each time a cpu enter idle, we assume that it has blocked load and
11838          * enable the periodic update of the load of idle cpus
11839          */
11840         WRITE_ONCE(nohz.has_blocked, 1);
11841 }
11842
11843 static bool update_nohz_stats(struct rq *rq)
11844 {
11845         unsigned int cpu = rq->cpu;
11846
11847         if (!rq->has_blocked_load)
11848                 return false;
11849
11850         if (!cpumask_test_cpu(cpu, nohz.idle_cpus_mask))
11851                 return false;
11852
11853         if (!time_after(jiffies, READ_ONCE(rq->last_blocked_load_update_tick)))
11854                 return true;
11855
11856         update_blocked_averages(cpu);
11857
11858         return rq->has_blocked_load;
11859 }
11860
11861 /*
11862  * Internal function that runs load balance for all idle cpus. The load balance
11863  * can be a simple update of blocked load or a complete load balance with
11864  * tasks movement depending of flags.
11865  */
11866 static void _nohz_idle_balance(struct rq *this_rq, unsigned int flags)
11867 {
11868         /* Earliest time when we have to do rebalance again */
11869         unsigned long now = jiffies;
11870         unsigned long next_balance = now + 60*HZ;
11871         bool has_blocked_load = false;
11872         int update_next_balance = 0;
11873         int this_cpu = this_rq->cpu;
11874         int balance_cpu;
11875         struct rq *rq;
11876
11877         SCHED_WARN_ON((flags & NOHZ_KICK_MASK) == NOHZ_BALANCE_KICK);
11878
11879         /*
11880          * We assume there will be no idle load after this update and clear
11881          * the has_blocked flag. If a cpu enters idle in the mean time, it will
11882          * set the has_blocked flag and trigger another update of idle load.
11883          * Because a cpu that becomes idle, is added to idle_cpus_mask before
11884          * setting the flag, we are sure to not clear the state and not
11885          * check the load of an idle cpu.
11886          *
11887          * Same applies to idle_cpus_mask vs needs_update.
11888          */
11889         if (flags & NOHZ_STATS_KICK)
11890                 WRITE_ONCE(nohz.has_blocked, 0);
11891         if (flags & NOHZ_NEXT_KICK)
11892                 WRITE_ONCE(nohz.needs_update, 0);
11893
11894         /*
11895          * Ensures that if we miss the CPU, we must see the has_blocked
11896          * store from nohz_balance_enter_idle().
11897          */
11898         smp_mb();
11899
11900         /*
11901          * Start with the next CPU after this_cpu so we will end with this_cpu and let a
11902          * chance for other idle cpu to pull load.
11903          */
11904         for_each_cpu_wrap(balance_cpu,  nohz.idle_cpus_mask, this_cpu+1) {
11905                 if (!idle_cpu(balance_cpu))
11906                         continue;
11907
11908                 /*
11909                  * If this CPU gets work to do, stop the load balancing
11910                  * work being done for other CPUs. Next load
11911                  * balancing owner will pick it up.
11912                  */
11913                 if (need_resched()) {
11914                         if (flags & NOHZ_STATS_KICK)
11915                                 has_blocked_load = true;
11916                         if (flags & NOHZ_NEXT_KICK)
11917                                 WRITE_ONCE(nohz.needs_update, 1);
11918                         goto abort;
11919                 }
11920
11921                 rq = cpu_rq(balance_cpu);
11922
11923                 if (flags & NOHZ_STATS_KICK)
11924                         has_blocked_load |= update_nohz_stats(rq);
11925
11926                 /*
11927                  * If time for next balance is due,
11928                  * do the balance.
11929                  */
11930                 if (time_after_eq(jiffies, rq->next_balance)) {
11931                         struct rq_flags rf;
11932
11933                         rq_lock_irqsave(rq, &rf);
11934                         update_rq_clock(rq);
11935                         rq_unlock_irqrestore(rq, &rf);
11936
11937                         if (flags & NOHZ_BALANCE_KICK)
11938                                 rebalance_domains(rq, CPU_IDLE);
11939                 }
11940
11941                 if (time_after(next_balance, rq->next_balance)) {
11942                         next_balance = rq->next_balance;
11943                         update_next_balance = 1;
11944                 }
11945         }
11946
11947         /*
11948          * next_balance will be updated only when there is a need.
11949          * When the CPU is attached to null domain for ex, it will not be
11950          * updated.
11951          */
11952         if (likely(update_next_balance))
11953                 nohz.next_balance = next_balance;
11954
11955         if (flags & NOHZ_STATS_KICK)
11956                 WRITE_ONCE(nohz.next_blocked,
11957                            now + msecs_to_jiffies(LOAD_AVG_PERIOD));
11958
11959 abort:
11960         /* There is still blocked load, enable periodic update */
11961         if (has_blocked_load)
11962                 WRITE_ONCE(nohz.has_blocked, 1);
11963 }
11964
11965 /*
11966  * In CONFIG_NO_HZ_COMMON case, the idle balance kickee will do the
11967  * rebalancing for all the cpus for whom scheduler ticks are stopped.
11968  */
11969 static bool nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
11970 {
11971         unsigned int flags = this_rq->nohz_idle_balance;
11972
11973         if (!flags)
11974                 return false;
11975
11976         this_rq->nohz_idle_balance = 0;
11977
11978         if (idle != CPU_IDLE)
11979                 return false;
11980
11981         _nohz_idle_balance(this_rq, flags);
11982
11983         return true;
11984 }
11985
11986 /*
11987  * Check if we need to run the ILB for updating blocked load before entering
11988  * idle state.
11989  */
11990 void nohz_run_idle_balance(int cpu)
11991 {
11992         unsigned int flags;
11993
11994         flags = atomic_fetch_andnot(NOHZ_NEWILB_KICK, nohz_flags(cpu));
11995
11996         /*
11997          * Update the blocked load only if no SCHED_SOFTIRQ is about to happen
11998          * (ie NOHZ_STATS_KICK set) and will do the same.
11999          */
12000         if ((flags == NOHZ_NEWILB_KICK) && !need_resched())
12001                 _nohz_idle_balance(cpu_rq(cpu), NOHZ_STATS_KICK);
12002 }
12003
12004 static void nohz_newidle_balance(struct rq *this_rq)
12005 {
12006         int this_cpu = this_rq->cpu;
12007
12008         /*
12009          * This CPU doesn't want to be disturbed by scheduler
12010          * housekeeping
12011          */
12012         if (!housekeeping_cpu(this_cpu, HK_TYPE_SCHED))
12013                 return;
12014
12015         /* Will wake up very soon. No time for doing anything else*/
12016         if (this_rq->avg_idle < sysctl_sched_migration_cost)
12017                 return;
12018
12019         /* Don't need to update blocked load of idle CPUs*/
12020         if (!READ_ONCE(nohz.has_blocked) ||
12021             time_before(jiffies, READ_ONCE(nohz.next_blocked)))
12022                 return;
12023
12024         /*
12025          * Set the need to trigger ILB in order to update blocked load
12026          * before entering idle state.
12027          */
12028         atomic_or(NOHZ_NEWILB_KICK, nohz_flags(this_cpu));
12029 }
12030
12031 #else /* !CONFIG_NO_HZ_COMMON */
12032 static inline void nohz_balancer_kick(struct rq *rq) { }
12033
12034 static inline bool nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
12035 {
12036         return false;
12037 }
12038
12039 static inline void nohz_newidle_balance(struct rq *this_rq) { }
12040 #endif /* CONFIG_NO_HZ_COMMON */
12041
12042 /*
12043  * newidle_balance is called by schedule() if this_cpu is about to become
12044  * idle. Attempts to pull tasks from other CPUs.
12045  *
12046  * Returns:
12047  *   < 0 - we released the lock and there are !fair tasks present
12048  *     0 - failed, no new tasks
12049  *   > 0 - success, new (fair) tasks present
12050  */
12051 static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
12052 {
12053         unsigned long next_balance = jiffies + HZ;
12054         int this_cpu = this_rq->cpu;
12055         u64 t0, t1, curr_cost = 0;
12056         struct sched_domain *sd;
12057         int pulled_task = 0;
12058
12059         update_misfit_status(NULL, this_rq);
12060
12061         /*
12062          * There is a task waiting to run. No need to search for one.
12063          * Return 0; the task will be enqueued when switching to idle.
12064          */
12065         if (this_rq->ttwu_pending)
12066                 return 0;
12067
12068         /*
12069          * We must set idle_stamp _before_ calling idle_balance(), such that we
12070          * measure the duration of idle_balance() as idle time.
12071          */
12072         this_rq->idle_stamp = rq_clock(this_rq);
12073
12074         /*
12075          * Do not pull tasks towards !active CPUs...
12076          */
12077         if (!cpu_active(this_cpu))
12078                 return 0;
12079
12080         /*
12081          * This is OK, because current is on_cpu, which avoids it being picked
12082          * for load-balance and preemption/IRQs are still disabled avoiding
12083          * further scheduler activity on it and we're being very careful to
12084          * re-start the picking loop.
12085          */
12086         rq_unpin_lock(this_rq, rf);
12087
12088         rcu_read_lock();
12089         sd = rcu_dereference_check_sched_domain(this_rq->sd);
12090
12091         if (!READ_ONCE(this_rq->rd->overload) ||
12092             (sd && this_rq->avg_idle < sd->max_newidle_lb_cost)) {
12093
12094                 if (sd)
12095                         update_next_balance(sd, &next_balance);
12096                 rcu_read_unlock();
12097
12098                 goto out;
12099         }
12100         rcu_read_unlock();
12101
12102         raw_spin_rq_unlock(this_rq);
12103
12104         t0 = sched_clock_cpu(this_cpu);
12105         update_blocked_averages(this_cpu);
12106
12107         rcu_read_lock();
12108         for_each_domain(this_cpu, sd) {
12109                 int continue_balancing = 1;
12110                 u64 domain_cost;
12111
12112                 update_next_balance(sd, &next_balance);
12113
12114                 if (this_rq->avg_idle < curr_cost + sd->max_newidle_lb_cost)
12115                         break;
12116
12117                 if (sd->flags & SD_BALANCE_NEWIDLE) {
12118
12119                         pulled_task = load_balance(this_cpu, this_rq,
12120                                                    sd, CPU_NEWLY_IDLE,
12121                                                    &continue_balancing);
12122
12123                         t1 = sched_clock_cpu(this_cpu);
12124                         domain_cost = t1 - t0;
12125                         update_newidle_cost(sd, domain_cost);
12126
12127                         curr_cost += domain_cost;
12128                         t0 = t1;
12129                 }
12130
12131                 /*
12132                  * Stop searching for tasks to pull if there are
12133                  * now runnable tasks on this rq.
12134                  */
12135                 if (pulled_task || this_rq->nr_running > 0 ||
12136                     this_rq->ttwu_pending)
12137                         break;
12138         }
12139         rcu_read_unlock();
12140
12141         raw_spin_rq_lock(this_rq);
12142
12143         if (curr_cost > this_rq->max_idle_balance_cost)
12144                 this_rq->max_idle_balance_cost = curr_cost;
12145
12146         /*
12147          * While browsing the domains, we released the rq lock, a task could
12148          * have been enqueued in the meantime. Since we're not going idle,
12149          * pretend we pulled a task.
12150          */
12151         if (this_rq->cfs.h_nr_running && !pulled_task)
12152                 pulled_task = 1;
12153
12154         /* Is there a task of a high priority class? */
12155         if (this_rq->nr_running != this_rq->cfs.h_nr_running)
12156                 pulled_task = -1;
12157
12158 out:
12159         /* Move the next balance forward */
12160         if (time_after(this_rq->next_balance, next_balance))
12161                 this_rq->next_balance = next_balance;
12162
12163         if (pulled_task)
12164                 this_rq->idle_stamp = 0;
12165         else
12166                 nohz_newidle_balance(this_rq);
12167
12168         rq_repin_lock(this_rq, rf);
12169
12170         return pulled_task;
12171 }
12172
12173 /*
12174  * run_rebalance_domains is triggered when needed from the scheduler tick.
12175  * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
12176  */
12177 static __latent_entropy void run_rebalance_domains(struct softirq_action *h)
12178 {
12179         struct rq *this_rq = this_rq();
12180         enum cpu_idle_type idle = this_rq->idle_balance ?
12181                                                 CPU_IDLE : CPU_NOT_IDLE;
12182
12183         /*
12184          * If this CPU has a pending nohz_balance_kick, then do the
12185          * balancing on behalf of the other idle CPUs whose ticks are
12186          * stopped. Do nohz_idle_balance *before* rebalance_domains to
12187          * give the idle CPUs a chance to load balance. Else we may
12188          * load balance only within the local sched_domain hierarchy
12189          * and abort nohz_idle_balance altogether if we pull some load.
12190          */
12191         if (nohz_idle_balance(this_rq, idle))
12192                 return;
12193
12194         /* normal load balance */
12195         update_blocked_averages(this_rq->cpu);
12196         rebalance_domains(this_rq, idle);
12197 }
12198
12199 /*
12200  * Trigger the SCHED_SOFTIRQ if it is time to do periodic load balancing.
12201  */
12202 void trigger_load_balance(struct rq *rq)
12203 {
12204         /*
12205          * Don't need to rebalance while attached to NULL domain or
12206          * runqueue CPU is not active
12207          */
12208         if (unlikely(on_null_domain(rq) || !cpu_active(cpu_of(rq))))
12209                 return;
12210
12211         if (time_after_eq(jiffies, rq->next_balance))
12212                 raise_softirq(SCHED_SOFTIRQ);
12213
12214         nohz_balancer_kick(rq);
12215 }
12216
12217 static void rq_online_fair(struct rq *rq)
12218 {
12219         update_sysctl();
12220
12221         update_runtime_enabled(rq);
12222 }
12223
12224 static void rq_offline_fair(struct rq *rq)
12225 {
12226         update_sysctl();
12227
12228         /* Ensure any throttled groups are reachable by pick_next_task */
12229         unthrottle_offline_cfs_rqs(rq);
12230 }
12231
12232 #endif /* CONFIG_SMP */
12233
12234 #ifdef CONFIG_SCHED_CORE
12235 static inline bool
12236 __entity_slice_used(struct sched_entity *se, int min_nr_tasks)
12237 {
12238         u64 rtime = se->sum_exec_runtime - se->prev_sum_exec_runtime;
12239         u64 slice = se->slice;
12240
12241         return (rtime * min_nr_tasks > slice);
12242 }
12243
12244 #define MIN_NR_TASKS_DURING_FORCEIDLE   2
12245 static inline void task_tick_core(struct rq *rq, struct task_struct *curr)
12246 {
12247         if (!sched_core_enabled(rq))
12248                 return;
12249
12250         /*
12251          * If runqueue has only one task which used up its slice and
12252          * if the sibling is forced idle, then trigger schedule to
12253          * give forced idle task a chance.
12254          *
12255          * sched_slice() considers only this active rq and it gets the
12256          * whole slice. But during force idle, we have siblings acting
12257          * like a single runqueue and hence we need to consider runnable
12258          * tasks on this CPU and the forced idle CPU. Ideally, we should
12259          * go through the forced idle rq, but that would be a perf hit.
12260          * We can assume that the forced idle CPU has at least
12261          * MIN_NR_TASKS_DURING_FORCEIDLE - 1 tasks and use that to check
12262          * if we need to give up the CPU.
12263          */
12264         if (rq->core->core_forceidle_count && rq->cfs.nr_running == 1 &&
12265             __entity_slice_used(&curr->se, MIN_NR_TASKS_DURING_FORCEIDLE))
12266                 resched_curr(rq);
12267 }
12268
12269 /*
12270  * se_fi_update - Update the cfs_rq->min_vruntime_fi in a CFS hierarchy if needed.
12271  */
12272 static void se_fi_update(const struct sched_entity *se, unsigned int fi_seq,
12273                          bool forceidle)
12274 {
12275         for_each_sched_entity(se) {
12276                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
12277
12278                 if (forceidle) {
12279                         if (cfs_rq->forceidle_seq == fi_seq)
12280                                 break;
12281                         cfs_rq->forceidle_seq = fi_seq;
12282                 }
12283
12284                 cfs_rq->min_vruntime_fi = cfs_rq->min_vruntime;
12285         }
12286 }
12287
12288 void task_vruntime_update(struct rq *rq, struct task_struct *p, bool in_fi)
12289 {
12290         struct sched_entity *se = &p->se;
12291
12292         if (p->sched_class != &fair_sched_class)
12293                 return;
12294
12295         se_fi_update(se, rq->core->core_forceidle_seq, in_fi);
12296 }
12297
12298 bool cfs_prio_less(const struct task_struct *a, const struct task_struct *b,
12299                         bool in_fi)
12300 {
12301         struct rq *rq = task_rq(a);
12302         const struct sched_entity *sea = &a->se;
12303         const struct sched_entity *seb = &b->se;
12304         struct cfs_rq *cfs_rqa;
12305         struct cfs_rq *cfs_rqb;
12306         s64 delta;
12307
12308         SCHED_WARN_ON(task_rq(b)->core != rq->core);
12309
12310 #ifdef CONFIG_FAIR_GROUP_SCHED
12311         /*
12312          * Find an se in the hierarchy for tasks a and b, such that the se's
12313          * are immediate siblings.
12314          */
12315         while (sea->cfs_rq->tg != seb->cfs_rq->tg) {
12316                 int sea_depth = sea->depth;
12317                 int seb_depth = seb->depth;
12318
12319                 if (sea_depth >= seb_depth)
12320                         sea = parent_entity(sea);
12321                 if (sea_depth <= seb_depth)
12322                         seb = parent_entity(seb);
12323         }
12324
12325         se_fi_update(sea, rq->core->core_forceidle_seq, in_fi);
12326         se_fi_update(seb, rq->core->core_forceidle_seq, in_fi);
12327
12328         cfs_rqa = sea->cfs_rq;
12329         cfs_rqb = seb->cfs_rq;
12330 #else
12331         cfs_rqa = &task_rq(a)->cfs;
12332         cfs_rqb = &task_rq(b)->cfs;
12333 #endif
12334
12335         /*
12336          * Find delta after normalizing se's vruntime with its cfs_rq's
12337          * min_vruntime_fi, which would have been updated in prior calls
12338          * to se_fi_update().
12339          */
12340         delta = (s64)(sea->vruntime - seb->vruntime) +
12341                 (s64)(cfs_rqb->min_vruntime_fi - cfs_rqa->min_vruntime_fi);
12342
12343         return delta > 0;
12344 }
12345
12346 static int task_is_throttled_fair(struct task_struct *p, int cpu)
12347 {
12348         struct cfs_rq *cfs_rq;
12349
12350 #ifdef CONFIG_FAIR_GROUP_SCHED
12351         cfs_rq = task_group(p)->cfs_rq[cpu];
12352 #else
12353         cfs_rq = &cpu_rq(cpu)->cfs;
12354 #endif
12355         return throttled_hierarchy(cfs_rq);
12356 }
12357 #else
12358 static inline void task_tick_core(struct rq *rq, struct task_struct *curr) {}
12359 #endif
12360
12361 /*
12362  * scheduler tick hitting a task of our scheduling class.
12363  *
12364  * NOTE: This function can be called remotely by the tick offload that
12365  * goes along full dynticks. Therefore no local assumption can be made
12366  * and everything must be accessed through the @rq and @curr passed in
12367  * parameters.
12368  */
12369 static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued)
12370 {
12371         struct cfs_rq *cfs_rq;
12372         struct sched_entity *se = &curr->se;
12373
12374         for_each_sched_entity(se) {
12375                 cfs_rq = cfs_rq_of(se);
12376                 entity_tick(cfs_rq, se, queued);
12377         }
12378
12379         if (static_branch_unlikely(&sched_numa_balancing))
12380                 task_tick_numa(rq, curr);
12381
12382         update_misfit_status(curr, rq);
12383         update_overutilized_status(task_rq(curr));
12384
12385         task_tick_core(rq, curr);
12386 }
12387
12388 /*
12389  * called on fork with the child task as argument from the parent's context
12390  *  - child not yet on the tasklist
12391  *  - preemption disabled
12392  */
12393 static void task_fork_fair(struct task_struct *p)
12394 {
12395         struct sched_entity *se = &p->se, *curr;
12396         struct cfs_rq *cfs_rq;
12397         struct rq *rq = this_rq();
12398         struct rq_flags rf;
12399
12400         rq_lock(rq, &rf);
12401         update_rq_clock(rq);
12402
12403         cfs_rq = task_cfs_rq(current);
12404         curr = cfs_rq->curr;
12405         if (curr)
12406                 update_curr(cfs_rq);
12407         place_entity(cfs_rq, se, ENQUEUE_INITIAL);
12408         rq_unlock(rq, &rf);
12409 }
12410
12411 /*
12412  * Priority of the task has changed. Check to see if we preempt
12413  * the current task.
12414  */
12415 static void
12416 prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio)
12417 {
12418         if (!task_on_rq_queued(p))
12419                 return;
12420
12421         if (rq->cfs.nr_running == 1)
12422                 return;
12423
12424         /*
12425          * Reschedule if we are currently running on this runqueue and
12426          * our priority decreased, or if we are not currently running on
12427          * this runqueue and our priority is higher than the current's
12428          */
12429         if (task_current(rq, p)) {
12430                 if (p->prio > oldprio)
12431                         resched_curr(rq);
12432         } else
12433                 check_preempt_curr(rq, p, 0);
12434 }
12435
12436 #ifdef CONFIG_FAIR_GROUP_SCHED
12437 /*
12438  * Propagate the changes of the sched_entity across the tg tree to make it
12439  * visible to the root
12440  */
12441 static void propagate_entity_cfs_rq(struct sched_entity *se)
12442 {
12443         struct cfs_rq *cfs_rq = cfs_rq_of(se);
12444
12445         if (cfs_rq_throttled(cfs_rq))
12446                 return;
12447
12448         if (!throttled_hierarchy(cfs_rq))
12449                 list_add_leaf_cfs_rq(cfs_rq);
12450
12451         /* Start to propagate at parent */
12452         se = se->parent;
12453
12454         for_each_sched_entity(se) {
12455                 cfs_rq = cfs_rq_of(se);
12456
12457                 update_load_avg(cfs_rq, se, UPDATE_TG);
12458
12459                 if (cfs_rq_throttled(cfs_rq))
12460                         break;
12461
12462                 if (!throttled_hierarchy(cfs_rq))
12463                         list_add_leaf_cfs_rq(cfs_rq);
12464         }
12465 }
12466 #else
12467 static void propagate_entity_cfs_rq(struct sched_entity *se) { }
12468 #endif
12469
12470 static void detach_entity_cfs_rq(struct sched_entity *se)
12471 {
12472         struct cfs_rq *cfs_rq = cfs_rq_of(se);
12473
12474 #ifdef CONFIG_SMP
12475         /*
12476          * In case the task sched_avg hasn't been attached:
12477          * - A forked task which hasn't been woken up by wake_up_new_task().
12478          * - A task which has been woken up by try_to_wake_up() but is
12479          *   waiting for actually being woken up by sched_ttwu_pending().
12480          */
12481         if (!se->avg.last_update_time)
12482                 return;
12483 #endif
12484
12485         /* Catch up with the cfs_rq and remove our load when we leave */
12486         update_load_avg(cfs_rq, se, 0);
12487         detach_entity_load_avg(cfs_rq, se);
12488         update_tg_load_avg(cfs_rq);
12489         propagate_entity_cfs_rq(se);
12490 }
12491
12492 static void attach_entity_cfs_rq(struct sched_entity *se)
12493 {
12494         struct cfs_rq *cfs_rq = cfs_rq_of(se);
12495
12496         /* Synchronize entity with its cfs_rq */
12497         update_load_avg(cfs_rq, se, sched_feat(ATTACH_AGE_LOAD) ? 0 : SKIP_AGE_LOAD);
12498         attach_entity_load_avg(cfs_rq, se);
12499         update_tg_load_avg(cfs_rq);
12500         propagate_entity_cfs_rq(se);
12501 }
12502
12503 static void detach_task_cfs_rq(struct task_struct *p)
12504 {
12505         struct sched_entity *se = &p->se;
12506
12507         detach_entity_cfs_rq(se);
12508 }
12509
12510 static void attach_task_cfs_rq(struct task_struct *p)
12511 {
12512         struct sched_entity *se = &p->se;
12513
12514         attach_entity_cfs_rq(se);
12515 }
12516
12517 static void switched_from_fair(struct rq *rq, struct task_struct *p)
12518 {
12519         detach_task_cfs_rq(p);
12520 }
12521
12522 static void switched_to_fair(struct rq *rq, struct task_struct *p)
12523 {
12524         attach_task_cfs_rq(p);
12525
12526         if (task_on_rq_queued(p)) {
12527                 /*
12528                  * We were most likely switched from sched_rt, so
12529                  * kick off the schedule if running, otherwise just see
12530                  * if we can still preempt the current task.
12531                  */
12532                 if (task_current(rq, p))
12533                         resched_curr(rq);
12534                 else
12535                         check_preempt_curr(rq, p, 0);
12536         }
12537 }
12538
12539 /* Account for a task changing its policy or group.
12540  *
12541  * This routine is mostly called to set cfs_rq->curr field when a task
12542  * migrates between groups/classes.
12543  */
12544 static void set_next_task_fair(struct rq *rq, struct task_struct *p, bool first)
12545 {
12546         struct sched_entity *se = &p->se;
12547
12548 #ifdef CONFIG_SMP
12549         if (task_on_rq_queued(p)) {
12550                 /*
12551                  * Move the next running task to the front of the list, so our
12552                  * cfs_tasks list becomes MRU one.
12553                  */
12554                 list_move(&se->group_node, &rq->cfs_tasks);
12555         }
12556 #endif
12557
12558         for_each_sched_entity(se) {
12559                 struct cfs_rq *cfs_rq = cfs_rq_of(se);
12560
12561                 set_next_entity(cfs_rq, se);
12562                 /* ensure bandwidth has been allocated on our new cfs_rq */
12563                 account_cfs_rq_runtime(cfs_rq, 0);
12564         }
12565 }
12566
12567 void init_cfs_rq(struct cfs_rq *cfs_rq)
12568 {
12569         cfs_rq->tasks_timeline = RB_ROOT_CACHED;
12570         u64_u32_store(cfs_rq->min_vruntime, (u64)(-(1LL << 20)));
12571 #ifdef CONFIG_SMP
12572         raw_spin_lock_init(&cfs_rq->removed.lock);
12573 #endif
12574 }
12575
12576 #ifdef CONFIG_FAIR_GROUP_SCHED
12577 static void task_change_group_fair(struct task_struct *p)
12578 {
12579         /*
12580          * We couldn't detach or attach a forked task which
12581          * hasn't been woken up by wake_up_new_task().
12582          */
12583         if (READ_ONCE(p->__state) == TASK_NEW)
12584                 return;
12585
12586         detach_task_cfs_rq(p);
12587
12588 #ifdef CONFIG_SMP
12589         /* Tell se's cfs_rq has been changed -- migrated */
12590         p->se.avg.last_update_time = 0;
12591 #endif
12592         set_task_rq(p, task_cpu(p));
12593         attach_task_cfs_rq(p);
12594 }
12595
12596 void free_fair_sched_group(struct task_group *tg)
12597 {
12598         int i;
12599
12600         for_each_possible_cpu(i) {
12601                 if (tg->cfs_rq)
12602                         kfree(tg->cfs_rq[i]);
12603                 if (tg->se)
12604                         kfree(tg->se[i]);
12605         }
12606
12607         kfree(tg->cfs_rq);
12608         kfree(tg->se);
12609 }
12610
12611 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
12612 {
12613         struct sched_entity *se;
12614         struct cfs_rq *cfs_rq;
12615         int i;
12616
12617         tg->cfs_rq = kcalloc(nr_cpu_ids, sizeof(cfs_rq), GFP_KERNEL);
12618         if (!tg->cfs_rq)
12619                 goto err;
12620         tg->se = kcalloc(nr_cpu_ids, sizeof(se), GFP_KERNEL);
12621         if (!tg->se)
12622                 goto err;
12623
12624         tg->shares = NICE_0_LOAD;
12625
12626         init_cfs_bandwidth(tg_cfs_bandwidth(tg), tg_cfs_bandwidth(parent));
12627
12628         for_each_possible_cpu(i) {
12629                 cfs_rq = kzalloc_node(sizeof(struct cfs_rq),
12630                                       GFP_KERNEL, cpu_to_node(i));
12631                 if (!cfs_rq)
12632                         goto err;
12633
12634                 se = kzalloc_node(sizeof(struct sched_entity_stats),
12635                                   GFP_KERNEL, cpu_to_node(i));
12636                 if (!se)
12637                         goto err_free_rq;
12638
12639                 init_cfs_rq(cfs_rq);
12640                 init_tg_cfs_entry(tg, cfs_rq, se, i, parent->se[i]);
12641                 init_entity_runnable_average(se);
12642         }
12643
12644         return 1;
12645
12646 err_free_rq:
12647         kfree(cfs_rq);
12648 err:
12649         return 0;
12650 }
12651
12652 void online_fair_sched_group(struct task_group *tg)
12653 {
12654         struct sched_entity *se;
12655         struct rq_flags rf;
12656         struct rq *rq;
12657         int i;
12658
12659         for_each_possible_cpu(i) {
12660                 rq = cpu_rq(i);
12661                 se = tg->se[i];
12662                 rq_lock_irq(rq, &rf);
12663                 update_rq_clock(rq);
12664                 attach_entity_cfs_rq(se);
12665                 sync_throttle(tg, i);
12666                 rq_unlock_irq(rq, &rf);
12667         }
12668 }
12669
12670 void unregister_fair_sched_group(struct task_group *tg)
12671 {
12672         unsigned long flags;
12673         struct rq *rq;
12674         int cpu;
12675
12676         destroy_cfs_bandwidth(tg_cfs_bandwidth(tg));
12677
12678         for_each_possible_cpu(cpu) {
12679                 if (tg->se[cpu])
12680                         remove_entity_load_avg(tg->se[cpu]);
12681
12682                 /*
12683                  * Only empty task groups can be destroyed; so we can speculatively
12684                  * check on_list without danger of it being re-added.
12685                  */
12686                 if (!tg->cfs_rq[cpu]->on_list)
12687                         continue;
12688
12689                 rq = cpu_rq(cpu);
12690
12691                 raw_spin_rq_lock_irqsave(rq, flags);
12692                 list_del_leaf_cfs_rq(tg->cfs_rq[cpu]);
12693                 raw_spin_rq_unlock_irqrestore(rq, flags);
12694         }
12695 }
12696
12697 void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
12698                         struct sched_entity *se, int cpu,
12699                         struct sched_entity *parent)
12700 {
12701         struct rq *rq = cpu_rq(cpu);
12702
12703         cfs_rq->tg = tg;
12704         cfs_rq->rq = rq;
12705         init_cfs_rq_runtime(cfs_rq);
12706
12707         tg->cfs_rq[cpu] = cfs_rq;
12708         tg->se[cpu] = se;
12709
12710         /* se could be NULL for root_task_group */
12711         if (!se)
12712                 return;
12713
12714         if (!parent) {
12715                 se->cfs_rq = &rq->cfs;
12716                 se->depth = 0;
12717         } else {
12718                 se->cfs_rq = parent->my_q;
12719                 se->depth = parent->depth + 1;
12720         }
12721
12722         se->my_q = cfs_rq;
12723         /* guarantee group entities always have weight */
12724         update_load_set(&se->load, NICE_0_LOAD);
12725         se->parent = parent;
12726 }
12727
12728 static DEFINE_MUTEX(shares_mutex);
12729
12730 static int __sched_group_set_shares(struct task_group *tg, unsigned long shares)
12731 {
12732         int i;
12733
12734         lockdep_assert_held(&shares_mutex);
12735
12736         /*
12737          * We can't change the weight of the root cgroup.
12738          */
12739         if (!tg->se[0])
12740                 return -EINVAL;
12741
12742         shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES));
12743
12744         if (tg->shares == shares)
12745                 return 0;
12746
12747         tg->shares = shares;
12748         for_each_possible_cpu(i) {
12749                 struct rq *rq = cpu_rq(i);
12750                 struct sched_entity *se = tg->se[i];
12751                 struct rq_flags rf;
12752
12753                 /* Propagate contribution to hierarchy */
12754                 rq_lock_irqsave(rq, &rf);
12755                 update_rq_clock(rq);
12756                 for_each_sched_entity(se) {
12757                         update_load_avg(cfs_rq_of(se), se, UPDATE_TG);
12758                         update_cfs_group(se);
12759                 }
12760                 rq_unlock_irqrestore(rq, &rf);
12761         }
12762
12763         return 0;
12764 }
12765
12766 int sched_group_set_shares(struct task_group *tg, unsigned long shares)
12767 {
12768         int ret;
12769
12770         mutex_lock(&shares_mutex);
12771         if (tg_is_idle(tg))
12772                 ret = -EINVAL;
12773         else
12774                 ret = __sched_group_set_shares(tg, shares);
12775         mutex_unlock(&shares_mutex);
12776
12777         return ret;
12778 }
12779
12780 int sched_group_set_idle(struct task_group *tg, long idle)
12781 {
12782         int i;
12783
12784         if (tg == &root_task_group)
12785                 return -EINVAL;
12786
12787         if (idle < 0 || idle > 1)
12788                 return -EINVAL;
12789
12790         mutex_lock(&shares_mutex);
12791
12792         if (tg->idle == idle) {
12793                 mutex_unlock(&shares_mutex);
12794                 return 0;
12795         }
12796
12797         tg->idle = idle;
12798
12799         for_each_possible_cpu(i) {
12800                 struct rq *rq = cpu_rq(i);
12801                 struct sched_entity *se = tg->se[i];
12802                 struct cfs_rq *parent_cfs_rq, *grp_cfs_rq = tg->cfs_rq[i];
12803                 bool was_idle = cfs_rq_is_idle(grp_cfs_rq);
12804                 long idle_task_delta;
12805                 struct rq_flags rf;
12806
12807                 rq_lock_irqsave(rq, &rf);
12808
12809                 grp_cfs_rq->idle = idle;
12810                 if (WARN_ON_ONCE(was_idle == cfs_rq_is_idle(grp_cfs_rq)))
12811                         goto next_cpu;
12812
12813                 if (se->on_rq) {
12814                         parent_cfs_rq = cfs_rq_of(se);
12815                         if (cfs_rq_is_idle(grp_cfs_rq))
12816                                 parent_cfs_rq->idle_nr_running++;
12817                         else
12818                                 parent_cfs_rq->idle_nr_running--;
12819                 }
12820
12821                 idle_task_delta = grp_cfs_rq->h_nr_running -
12822                                   grp_cfs_rq->idle_h_nr_running;
12823                 if (!cfs_rq_is_idle(grp_cfs_rq))
12824                         idle_task_delta *= -1;
12825
12826                 for_each_sched_entity(se) {
12827                         struct cfs_rq *cfs_rq = cfs_rq_of(se);
12828
12829                         if (!se->on_rq)
12830                                 break;
12831
12832                         cfs_rq->idle_h_nr_running += idle_task_delta;
12833
12834                         /* Already accounted at parent level and above. */
12835                         if (cfs_rq_is_idle(cfs_rq))
12836                                 break;
12837                 }
12838
12839 next_cpu:
12840                 rq_unlock_irqrestore(rq, &rf);
12841         }
12842
12843         /* Idle groups have minimum weight. */
12844         if (tg_is_idle(tg))
12845                 __sched_group_set_shares(tg, scale_load(WEIGHT_IDLEPRIO));
12846         else
12847                 __sched_group_set_shares(tg, NICE_0_LOAD);
12848
12849         mutex_unlock(&shares_mutex);
12850         return 0;
12851 }
12852
12853 #else /* CONFIG_FAIR_GROUP_SCHED */
12854
12855 void free_fair_sched_group(struct task_group *tg) { }
12856
12857 int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
12858 {
12859         return 1;
12860 }
12861
12862 void online_fair_sched_group(struct task_group *tg) { }
12863
12864 void unregister_fair_sched_group(struct task_group *tg) { }
12865
12866 #endif /* CONFIG_FAIR_GROUP_SCHED */
12867
12868
12869 static unsigned int get_rr_interval_fair(struct rq *rq, struct task_struct *task)
12870 {
12871         struct sched_entity *se = &task->se;
12872         unsigned int rr_interval = 0;
12873
12874         /*
12875          * Time slice is 0 for SCHED_OTHER tasks that are on an otherwise
12876          * idle runqueue:
12877          */
12878         if (rq->cfs.load.weight)
12879                 rr_interval = NS_TO_JIFFIES(se->slice);
12880
12881         return rr_interval;
12882 }
12883
12884 /*
12885  * All the scheduling class methods:
12886  */
12887 DEFINE_SCHED_CLASS(fair) = {
12888
12889         .enqueue_task           = enqueue_task_fair,
12890         .dequeue_task           = dequeue_task_fair,
12891         .yield_task             = yield_task_fair,
12892         .yield_to_task          = yield_to_task_fair,
12893
12894         .check_preempt_curr     = check_preempt_wakeup,
12895
12896         .pick_next_task         = __pick_next_task_fair,
12897         .put_prev_task          = put_prev_task_fair,
12898         .set_next_task          = set_next_task_fair,
12899
12900 #ifdef CONFIG_SMP
12901         .balance                = balance_fair,
12902         .pick_task              = pick_task_fair,
12903         .select_task_rq         = select_task_rq_fair,
12904         .migrate_task_rq        = migrate_task_rq_fair,
12905
12906         .rq_online              = rq_online_fair,
12907         .rq_offline             = rq_offline_fair,
12908
12909         .task_dead              = task_dead_fair,
12910         .set_cpus_allowed       = set_cpus_allowed_common,
12911 #endif
12912
12913         .task_tick              = task_tick_fair,
12914         .task_fork              = task_fork_fair,
12915
12916         .prio_changed           = prio_changed_fair,
12917         .switched_from          = switched_from_fair,
12918         .switched_to            = switched_to_fair,
12919
12920         .get_rr_interval        = get_rr_interval_fair,
12921
12922         .update_curr            = update_curr_fair,
12923
12924 #ifdef CONFIG_FAIR_GROUP_SCHED
12925         .task_change_group      = task_change_group_fair,
12926 #endif
12927
12928 #ifdef CONFIG_SCHED_CORE
12929         .task_is_throttled      = task_is_throttled_fair,
12930 #endif
12931
12932 #ifdef CONFIG_UCLAMP_TASK
12933         .uclamp_enabled         = 1,
12934 #endif
12935 };
12936
12937 #ifdef CONFIG_SCHED_DEBUG
12938 void print_cfs_stats(struct seq_file *m, int cpu)
12939 {
12940         struct cfs_rq *cfs_rq, *pos;
12941
12942         rcu_read_lock();
12943         for_each_leaf_cfs_rq_safe(cpu_rq(cpu), cfs_rq, pos)
12944                 print_cfs_rq(m, cpu, cfs_rq);
12945         rcu_read_unlock();
12946 }
12947
12948 #ifdef CONFIG_NUMA_BALANCING
12949 void show_numa_stats(struct task_struct *p, struct seq_file *m)
12950 {
12951         int node;
12952         unsigned long tsf = 0, tpf = 0, gsf = 0, gpf = 0;
12953         struct numa_group *ng;
12954
12955         rcu_read_lock();
12956         ng = rcu_dereference(p->numa_group);
12957         for_each_online_node(node) {
12958                 if (p->numa_faults) {
12959                         tsf = p->numa_faults[task_faults_idx(NUMA_MEM, node, 0)];
12960                         tpf = p->numa_faults[task_faults_idx(NUMA_MEM, node, 1)];
12961                 }
12962                 if (ng) {
12963                         gsf = ng->faults[task_faults_idx(NUMA_MEM, node, 0)],
12964                         gpf = ng->faults[task_faults_idx(NUMA_MEM, node, 1)];
12965                 }
12966                 print_numa_stats(m, node, tsf, tpf, gsf, gpf);
12967         }
12968         rcu_read_unlock();
12969 }
12970 #endif /* CONFIG_NUMA_BALANCING */
12971 #endif /* CONFIG_SCHED_DEBUG */
12972
12973 __init void init_sched_fair_class(void)
12974 {
12975 #ifdef CONFIG_SMP
12976         int i;
12977
12978         for_each_possible_cpu(i) {
12979                 zalloc_cpumask_var_node(&per_cpu(load_balance_mask, i), GFP_KERNEL, cpu_to_node(i));
12980                 zalloc_cpumask_var_node(&per_cpu(select_rq_mask,    i), GFP_KERNEL, cpu_to_node(i));
12981                 zalloc_cpumask_var_node(&per_cpu(should_we_balance_tmpmask, i),
12982                                         GFP_KERNEL, cpu_to_node(i));
12983
12984 #ifdef CONFIG_CFS_BANDWIDTH
12985                 INIT_CSD(&cpu_rq(i)->cfsb_csd, __cfsb_csd_unthrottle, cpu_rq(i));
12986                 INIT_LIST_HEAD(&cpu_rq(i)->cfsb_csd_list);
12987 #endif
12988         }
12989
12990         open_softirq(SCHED_SOFTIRQ, run_rebalance_domains);
12991
12992 #ifdef CONFIG_NO_HZ_COMMON
12993         nohz.next_balance = jiffies;
12994         nohz.next_blocked = jiffies;
12995         zalloc_cpumask_var(&nohz.idle_cpus_mask, GFP_NOWAIT);
12996 #endif
12997 #endif /* SMP */
12998
12999 }