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