4e5c2afdac918a99da5f94c9505c26cde20d1df1
[platform/adaptation/renesas_rcar/renesas_kernel.git] / kernel / sched / sched.h
1
2 #include <linux/sched.h>
3 #include <linux/sched/sysctl.h>
4 #include <linux/sched/rt.h>
5 #include <linux/mutex.h>
6 #include <linux/spinlock.h>
7 #include <linux/stop_machine.h>
8
9 #include "cpupri.h"
10
11 extern __read_mostly int scheduler_running;
12
13 /*
14  * Convert user-nice values [ -20 ... 0 ... 19 ]
15  * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
16  * and back.
17  */
18 #define NICE_TO_PRIO(nice)      (MAX_RT_PRIO + (nice) + 20)
19 #define PRIO_TO_NICE(prio)      ((prio) - MAX_RT_PRIO - 20)
20 #define TASK_NICE(p)            PRIO_TO_NICE((p)->static_prio)
21
22 /*
23  * 'User priority' is the nice value converted to something we
24  * can work with better when scaling various scheduler parameters,
25  * it's a [ 0 ... 39 ] range.
26  */
27 #define USER_PRIO(p)            ((p)-MAX_RT_PRIO)
28 #define TASK_USER_PRIO(p)       USER_PRIO((p)->static_prio)
29 #define MAX_USER_PRIO           (USER_PRIO(MAX_PRIO))
30
31 /*
32  * Helpers for converting nanosecond timing to jiffy resolution
33  */
34 #define NS_TO_JIFFIES(TIME)     ((unsigned long)(TIME) / (NSEC_PER_SEC / HZ))
35
36 /*
37  * Increase resolution of nice-level calculations for 64-bit architectures.
38  * The extra resolution improves shares distribution and load balancing of
39  * low-weight task groups (eg. nice +19 on an autogroup), deeper taskgroup
40  * hierarchies, especially on larger systems. This is not a user-visible change
41  * and does not change the user-interface for setting shares/weights.
42  *
43  * We increase resolution only if we have enough bits to allow this increased
44  * resolution (i.e. BITS_PER_LONG > 32). The costs for increasing resolution
45  * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the
46  * increased costs.
47  */
48 #if 0 /* BITS_PER_LONG > 32 -- currently broken: it increases power usage under light load  */
49 # define SCHED_LOAD_RESOLUTION  10
50 # define scale_load(w)          ((w) << SCHED_LOAD_RESOLUTION)
51 # define scale_load_down(w)     ((w) >> SCHED_LOAD_RESOLUTION)
52 #else
53 # define SCHED_LOAD_RESOLUTION  0
54 # define scale_load(w)          (w)
55 # define scale_load_down(w)     (w)
56 #endif
57
58 #define SCHED_LOAD_SHIFT        (10 + SCHED_LOAD_RESOLUTION)
59 #define SCHED_LOAD_SCALE        (1L << SCHED_LOAD_SHIFT)
60
61 #define NICE_0_LOAD             SCHED_LOAD_SCALE
62 #define NICE_0_SHIFT            SCHED_LOAD_SHIFT
63
64 /*
65  * These are the 'tuning knobs' of the scheduler:
66  */
67
68 /*
69  * single value that denotes runtime == period, ie unlimited time.
70  */
71 #define RUNTIME_INF     ((u64)~0ULL)
72
73 static inline int rt_policy(int policy)
74 {
75         if (policy == SCHED_FIFO || policy == SCHED_RR)
76                 return 1;
77         return 0;
78 }
79
80 static inline int task_has_rt_policy(struct task_struct *p)
81 {
82         return rt_policy(p->policy);
83 }
84
85 /*
86  * This is the priority-queue data structure of the RT scheduling class:
87  */
88 struct rt_prio_array {
89         DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1); /* include 1 bit for delimiter */
90         struct list_head queue[MAX_RT_PRIO];
91 };
92
93 struct rt_bandwidth {
94         /* nests inside the rq lock: */
95         raw_spinlock_t          rt_runtime_lock;
96         ktime_t                 rt_period;
97         u64                     rt_runtime;
98         struct hrtimer          rt_period_timer;
99 };
100
101 extern struct mutex sched_domains_mutex;
102
103 #ifdef CONFIG_CGROUP_SCHED
104
105 #include <linux/cgroup.h>
106
107 struct cfs_rq;
108 struct rt_rq;
109
110 extern struct list_head task_groups;
111
112 struct cfs_bandwidth {
113 #ifdef CONFIG_CFS_BANDWIDTH
114         raw_spinlock_t lock;
115         ktime_t period;
116         u64 quota, runtime;
117         s64 hierarchal_quota;
118         u64 runtime_expires;
119
120         int idle, timer_active;
121         struct hrtimer period_timer, slack_timer;
122         struct list_head throttled_cfs_rq;
123
124         /* statistics */
125         int nr_periods, nr_throttled;
126         u64 throttled_time;
127 #endif
128 };
129
130 /* task group related information */
131 struct task_group {
132         struct cgroup_subsys_state css;
133
134 #ifdef CONFIG_FAIR_GROUP_SCHED
135         /* schedulable entities of this group on each cpu */
136         struct sched_entity **se;
137         /* runqueue "owned" by this group on each cpu */
138         struct cfs_rq **cfs_rq;
139         unsigned long shares;
140
141         atomic_t load_weight;
142         atomic64_t load_avg;
143         atomic_t runnable_avg;
144 #endif
145
146 #ifdef CONFIG_RT_GROUP_SCHED
147         struct sched_rt_entity **rt_se;
148         struct rt_rq **rt_rq;
149
150         struct rt_bandwidth rt_bandwidth;
151 #endif
152
153         struct rcu_head rcu;
154         struct list_head list;
155
156         struct task_group *parent;
157         struct list_head siblings;
158         struct list_head children;
159
160 #ifdef CONFIG_SCHED_AUTOGROUP
161         struct autogroup *autogroup;
162 #endif
163
164         struct cfs_bandwidth cfs_bandwidth;
165 };
166
167 #ifdef CONFIG_FAIR_GROUP_SCHED
168 #define ROOT_TASK_GROUP_LOAD    NICE_0_LOAD
169
170 /*
171  * A weight of 0 or 1 can cause arithmetics problems.
172  * A weight of a cfs_rq is the sum of weights of which entities
173  * are queued on this cfs_rq, so a weight of a entity should not be
174  * too large, so as the shares value of a task group.
175  * (The default weight is 1024 - so there's no practical
176  *  limitation from this.)
177  */
178 #define MIN_SHARES      (1UL <<  1)
179 #define MAX_SHARES      (1UL << 18)
180 #endif
181
182 /* Default task group.
183  *      Every task in system belong to this group at bootup.
184  */
185 extern struct task_group root_task_group;
186
187 typedef int (*tg_visitor)(struct task_group *, void *);
188
189 extern int walk_tg_tree_from(struct task_group *from,
190                              tg_visitor down, tg_visitor up, void *data);
191
192 /*
193  * Iterate the full tree, calling @down when first entering a node and @up when
194  * leaving it for the final time.
195  *
196  * Caller must hold rcu_lock or sufficient equivalent.
197  */
198 static inline int walk_tg_tree(tg_visitor down, tg_visitor up, void *data)
199 {
200         return walk_tg_tree_from(&root_task_group, down, up, data);
201 }
202
203 extern int tg_nop(struct task_group *tg, void *data);
204
205 extern void free_fair_sched_group(struct task_group *tg);
206 extern int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent);
207 extern void unregister_fair_sched_group(struct task_group *tg, int cpu);
208 extern void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
209                         struct sched_entity *se, int cpu,
210                         struct sched_entity *parent);
211 extern void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b);
212 extern int sched_group_set_shares(struct task_group *tg, unsigned long shares);
213
214 extern void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b);
215 extern void __start_cfs_bandwidth(struct cfs_bandwidth *cfs_b);
216 extern void unthrottle_cfs_rq(struct cfs_rq *cfs_rq);
217
218 extern void free_rt_sched_group(struct task_group *tg);
219 extern int alloc_rt_sched_group(struct task_group *tg, struct task_group *parent);
220 extern void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
221                 struct sched_rt_entity *rt_se, int cpu,
222                 struct sched_rt_entity *parent);
223
224 #else /* CONFIG_CGROUP_SCHED */
225
226 struct cfs_bandwidth { };
227
228 #endif  /* CONFIG_CGROUP_SCHED */
229
230 /* CFS-related fields in a runqueue */
231 struct cfs_rq {
232         struct load_weight load;
233         unsigned int nr_running, h_nr_running;
234
235         u64 exec_clock;
236         u64 min_vruntime;
237 #ifndef CONFIG_64BIT
238         u64 min_vruntime_copy;
239 #endif
240
241         struct rb_root tasks_timeline;
242         struct rb_node *rb_leftmost;
243
244         /*
245          * 'curr' points to currently running entity on this cfs_rq.
246          * It is set to NULL otherwise (i.e when none are currently running).
247          */
248         struct sched_entity *curr, *next, *last, *skip;
249
250 #ifdef  CONFIG_SCHED_DEBUG
251         unsigned int nr_spread_over;
252 #endif
253
254 #ifdef CONFIG_SMP
255 /*
256  * Load-tracking only depends on SMP, FAIR_GROUP_SCHED dependency below may be
257  * removed when useful for applications beyond shares distribution (e.g.
258  * load-balance).
259  */
260 #ifdef CONFIG_FAIR_GROUP_SCHED
261         /*
262          * CFS Load tracking
263          * Under CFS, load is tracked on a per-entity basis and aggregated up.
264          * This allows for the description of both thread and group usage (in
265          * the FAIR_GROUP_SCHED case).
266          */
267         u64 runnable_load_avg, blocked_load_avg;
268         atomic64_t decay_counter, removed_load;
269         u64 last_decay;
270 #endif /* CONFIG_FAIR_GROUP_SCHED */
271 /* These always depend on CONFIG_FAIR_GROUP_SCHED */
272 #ifdef CONFIG_FAIR_GROUP_SCHED
273         u32 tg_runnable_contrib;
274         u64 tg_load_contrib;
275 #endif /* CONFIG_FAIR_GROUP_SCHED */
276
277         /*
278          *   h_load = weight * f(tg)
279          *
280          * Where f(tg) is the recursive weight fraction assigned to
281          * this group.
282          */
283         unsigned long h_load;
284 #endif /* CONFIG_SMP */
285
286 #ifdef CONFIG_FAIR_GROUP_SCHED
287         struct rq *rq;  /* cpu runqueue to which this cfs_rq is attached */
288
289         /*
290          * leaf cfs_rqs are those that hold tasks (lowest schedulable entity in
291          * a hierarchy). Non-leaf lrqs hold other higher schedulable entities
292          * (like users, containers etc.)
293          *
294          * leaf_cfs_rq_list ties together list of leaf cfs_rq's in a cpu. This
295          * list is used during load balance.
296          */
297         int on_list;
298         struct list_head leaf_cfs_rq_list;
299         struct task_group *tg;  /* group that "owns" this runqueue */
300
301 #ifdef CONFIG_CFS_BANDWIDTH
302         int runtime_enabled;
303         u64 runtime_expires;
304         s64 runtime_remaining;
305
306         u64 throttled_clock, throttled_clock_task;
307         u64 throttled_clock_task_time;
308         int throttled, throttle_count;
309         struct list_head throttled_list;
310 #endif /* CONFIG_CFS_BANDWIDTH */
311 #endif /* CONFIG_FAIR_GROUP_SCHED */
312 };
313
314 static inline int rt_bandwidth_enabled(void)
315 {
316         return sysctl_sched_rt_runtime >= 0;
317 }
318
319 /* Real-Time classes' related field in a runqueue: */
320 struct rt_rq {
321         struct rt_prio_array active;
322         unsigned int rt_nr_running;
323 #if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHED
324         struct {
325                 int curr; /* highest queued rt task prio */
326 #ifdef CONFIG_SMP
327                 int next; /* next highest */
328 #endif
329         } highest_prio;
330 #endif
331 #ifdef CONFIG_SMP
332         unsigned long rt_nr_migratory;
333         unsigned long rt_nr_total;
334         int overloaded;
335         struct plist_head pushable_tasks;
336 #endif
337         int rt_throttled;
338         u64 rt_time;
339         u64 rt_runtime;
340         /* Nests inside the rq lock: */
341         raw_spinlock_t rt_runtime_lock;
342
343 #ifdef CONFIG_RT_GROUP_SCHED
344         unsigned long rt_nr_boosted;
345
346         struct rq *rq;
347         struct list_head leaf_rt_rq_list;
348         struct task_group *tg;
349 #endif
350 };
351
352 #ifdef CONFIG_SMP
353
354 /*
355  * We add the notion of a root-domain which will be used to define per-domain
356  * variables. Each exclusive cpuset essentially defines an island domain by
357  * fully partitioning the member cpus from any other cpuset. Whenever a new
358  * exclusive cpuset is created, we also create and attach a new root-domain
359  * object.
360  *
361  */
362 struct root_domain {
363         atomic_t refcount;
364         atomic_t rto_count;
365         struct rcu_head rcu;
366         cpumask_var_t span;
367         cpumask_var_t online;
368
369         /*
370          * The "RT overload" flag: it gets set if a CPU has more than
371          * one runnable RT task.
372          */
373         cpumask_var_t rto_mask;
374         struct cpupri cpupri;
375 };
376
377 extern struct root_domain def_root_domain;
378
379 #endif /* CONFIG_SMP */
380
381 /*
382  * This is the main, per-CPU runqueue data structure.
383  *
384  * Locking rule: those places that want to lock multiple runqueues
385  * (such as the load balancing or the thread migration code), lock
386  * acquire operations must be ordered by ascending &runqueue.
387  */
388 struct rq {
389         /* runqueue lock: */
390         raw_spinlock_t lock;
391
392         /*
393          * nr_running and cpu_load should be in the same cacheline because
394          * remote CPUs use both these fields when doing load calculation.
395          */
396         unsigned int nr_running;
397         #define CPU_LOAD_IDX_MAX 5
398         unsigned long cpu_load[CPU_LOAD_IDX_MAX];
399         unsigned long last_load_update_tick;
400 #ifdef CONFIG_NO_HZ
401         u64 nohz_stamp;
402         unsigned long nohz_flags;
403 #endif
404         int skip_clock_update;
405
406         /* capture load from *all* tasks on this cpu: */
407         struct load_weight load;
408         unsigned long nr_load_updates;
409         u64 nr_switches;
410
411         struct cfs_rq cfs;
412         struct rt_rq rt;
413
414 #ifdef CONFIG_FAIR_GROUP_SCHED
415         /* list of leaf cfs_rq on this cpu: */
416         struct list_head leaf_cfs_rq_list;
417 #ifdef CONFIG_SMP
418         unsigned long h_load_throttle;
419 #endif /* CONFIG_SMP */
420 #endif /* CONFIG_FAIR_GROUP_SCHED */
421
422 #ifdef CONFIG_RT_GROUP_SCHED
423         struct list_head leaf_rt_rq_list;
424 #endif
425
426         /*
427          * This is part of a global counter where only the total sum
428          * over all CPUs matters. A task can increase this counter on
429          * one CPU and if it got migrated afterwards it may decrease
430          * it on another CPU. Always updated under the runqueue lock:
431          */
432         unsigned long nr_uninterruptible;
433
434         struct task_struct *curr, *idle, *stop;
435         unsigned long next_balance;
436         struct mm_struct *prev_mm;
437
438         u64 clock;
439         u64 clock_task;
440
441         atomic_t nr_iowait;
442
443 #ifdef CONFIG_SMP
444         struct root_domain *rd;
445         struct sched_domain *sd;
446
447         unsigned long cpu_power;
448
449         unsigned char idle_balance;
450         /* For active balancing */
451         int post_schedule;
452         int active_balance;
453         int push_cpu;
454         struct cpu_stop_work active_balance_work;
455         /* cpu of this runqueue: */
456         int cpu;
457         int online;
458
459         struct list_head cfs_tasks;
460
461         u64 rt_avg;
462         u64 age_stamp;
463         u64 idle_stamp;
464         u64 avg_idle;
465 #endif
466
467 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
468         u64 prev_irq_time;
469 #endif
470 #ifdef CONFIG_PARAVIRT
471         u64 prev_steal_time;
472 #endif
473 #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING
474         u64 prev_steal_time_rq;
475 #endif
476
477         /* calc_load related fields */
478         unsigned long calc_load_update;
479         long calc_load_active;
480
481 #ifdef CONFIG_SCHED_HRTICK
482 #ifdef CONFIG_SMP
483         int hrtick_csd_pending;
484         struct call_single_data hrtick_csd;
485 #endif
486         struct hrtimer hrtick_timer;
487 #endif
488
489 #ifdef CONFIG_SCHEDSTATS
490         /* latency stats */
491         struct sched_info rq_sched_info;
492         unsigned long long rq_cpu_time;
493         /* could above be rq->cfs_rq.exec_clock + rq->rt_rq.rt_runtime ? */
494
495         /* sys_sched_yield() stats */
496         unsigned int yld_count;
497
498         /* schedule() stats */
499         unsigned int sched_count;
500         unsigned int sched_goidle;
501
502         /* try_to_wake_up() stats */
503         unsigned int ttwu_count;
504         unsigned int ttwu_local;
505 #endif
506
507 #ifdef CONFIG_SMP
508         struct llist_head wake_list;
509 #endif
510
511         struct sched_avg avg;
512 };
513
514 static inline int cpu_of(struct rq *rq)
515 {
516 #ifdef CONFIG_SMP
517         return rq->cpu;
518 #else
519         return 0;
520 #endif
521 }
522
523 DECLARE_PER_CPU(struct rq, runqueues);
524
525 #define cpu_rq(cpu)             (&per_cpu(runqueues, (cpu)))
526 #define this_rq()               (&__get_cpu_var(runqueues))
527 #define task_rq(p)              cpu_rq(task_cpu(p))
528 #define cpu_curr(cpu)           (cpu_rq(cpu)->curr)
529 #define raw_rq()                (&__raw_get_cpu_var(runqueues))
530
531 #ifdef CONFIG_SMP
532
533 #define rcu_dereference_check_sched_domain(p) \
534         rcu_dereference_check((p), \
535                               lockdep_is_held(&sched_domains_mutex))
536
537 /*
538  * The domain tree (rq->sd) is protected by RCU's quiescent state transition.
539  * See detach_destroy_domains: synchronize_sched for details.
540  *
541  * The domain tree of any CPU may only be accessed from within
542  * preempt-disabled sections.
543  */
544 #define for_each_domain(cpu, __sd) \
545         for (__sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd); \
546                         __sd; __sd = __sd->parent)
547
548 #define for_each_lower_domain(sd) for (; sd; sd = sd->child)
549
550 /**
551  * highest_flag_domain - Return highest sched_domain containing flag.
552  * @cpu:        The cpu whose highest level of sched domain is to
553  *              be returned.
554  * @flag:       The flag to check for the highest sched_domain
555  *              for the given cpu.
556  *
557  * Returns the highest sched_domain of a cpu which contains the given flag.
558  */
559 static inline struct sched_domain *highest_flag_domain(int cpu, int flag)
560 {
561         struct sched_domain *sd, *hsd = NULL;
562
563         for_each_domain(cpu, sd) {
564                 if (!(sd->flags & flag))
565                         break;
566                 hsd = sd;
567         }
568
569         return hsd;
570 }
571
572 DECLARE_PER_CPU(struct sched_domain *, sd_llc);
573 DECLARE_PER_CPU(int, sd_llc_id);
574
575 struct sched_group_power {
576         atomic_t ref;
577         /*
578          * CPU power of this group, SCHED_LOAD_SCALE being max power for a
579          * single CPU.
580          */
581         unsigned int power, power_orig;
582         unsigned long next_update;
583         /*
584          * Number of busy cpus in this group.
585          */
586         atomic_t nr_busy_cpus;
587
588         unsigned long cpumask[0]; /* iteration mask */
589 };
590
591 struct sched_group {
592         struct sched_group *next;       /* Must be a circular list */
593         atomic_t ref;
594
595         unsigned int group_weight;
596         struct sched_group_power *sgp;
597
598         /*
599          * The CPUs this group covers.
600          *
601          * NOTE: this field is variable length. (Allocated dynamically
602          * by attaching extra space to the end of the structure,
603          * depending on how many CPUs the kernel has booted up with)
604          */
605         unsigned long cpumask[0];
606 };
607
608 static inline struct cpumask *sched_group_cpus(struct sched_group *sg)
609 {
610         return to_cpumask(sg->cpumask);
611 }
612
613 /*
614  * cpumask masking which cpus in the group are allowed to iterate up the domain
615  * tree.
616  */
617 static inline struct cpumask *sched_group_mask(struct sched_group *sg)
618 {
619         return to_cpumask(sg->sgp->cpumask);
620 }
621
622 /**
623  * group_first_cpu - Returns the first cpu in the cpumask of a sched_group.
624  * @group: The group whose first cpu is to be returned.
625  */
626 static inline unsigned int group_first_cpu(struct sched_group *group)
627 {
628         return cpumask_first(sched_group_cpus(group));
629 }
630
631 extern int group_balance_cpu(struct sched_group *sg);
632
633 #endif /* CONFIG_SMP */
634
635 #include "stats.h"
636 #include "auto_group.h"
637
638 #ifdef CONFIG_CGROUP_SCHED
639
640 /*
641  * Return the group to which this tasks belongs.
642  *
643  * We cannot use task_subsys_state() and friends because the cgroup
644  * subsystem changes that value before the cgroup_subsys::attach() method
645  * is called, therefore we cannot pin it and might observe the wrong value.
646  *
647  * The same is true for autogroup's p->signal->autogroup->tg, the autogroup
648  * core changes this before calling sched_move_task().
649  *
650  * Instead we use a 'copy' which is updated from sched_move_task() while
651  * holding both task_struct::pi_lock and rq::lock.
652  */
653 static inline struct task_group *task_group(struct task_struct *p)
654 {
655         return p->sched_task_group;
656 }
657
658 /* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */
659 static inline void set_task_rq(struct task_struct *p, unsigned int cpu)
660 {
661 #if defined(CONFIG_FAIR_GROUP_SCHED) || defined(CONFIG_RT_GROUP_SCHED)
662         struct task_group *tg = task_group(p);
663 #endif
664
665 #ifdef CONFIG_FAIR_GROUP_SCHED
666         p->se.cfs_rq = tg->cfs_rq[cpu];
667         p->se.parent = tg->se[cpu];
668 #endif
669
670 #ifdef CONFIG_RT_GROUP_SCHED
671         p->rt.rt_rq  = tg->rt_rq[cpu];
672         p->rt.parent = tg->rt_se[cpu];
673 #endif
674 }
675
676 #else /* CONFIG_CGROUP_SCHED */
677
678 static inline void set_task_rq(struct task_struct *p, unsigned int cpu) { }
679 static inline struct task_group *task_group(struct task_struct *p)
680 {
681         return NULL;
682 }
683
684 #endif /* CONFIG_CGROUP_SCHED */
685
686 static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu)
687 {
688         set_task_rq(p, cpu);
689 #ifdef CONFIG_SMP
690         /*
691          * After ->cpu is set up to a new value, task_rq_lock(p, ...) can be
692          * successfuly executed on another CPU. We must ensure that updates of
693          * per-task data have been completed by this moment.
694          */
695         smp_wmb();
696         task_thread_info(p)->cpu = cpu;
697 #endif
698 }
699
700 /*
701  * Tunables that become constants when CONFIG_SCHED_DEBUG is off:
702  */
703 #ifdef CONFIG_SCHED_DEBUG
704 # include <linux/static_key.h>
705 # define const_debug __read_mostly
706 #else
707 # define const_debug const
708 #endif
709
710 extern const_debug unsigned int sysctl_sched_features;
711
712 #define SCHED_FEAT(name, enabled)       \
713         __SCHED_FEAT_##name ,
714
715 enum {
716 #include "features.h"
717         __SCHED_FEAT_NR,
718 };
719
720 #undef SCHED_FEAT
721
722 #if defined(CONFIG_SCHED_DEBUG) && defined(HAVE_JUMP_LABEL)
723 static __always_inline bool static_branch__true(struct static_key *key)
724 {
725         return static_key_true(key); /* Not out of line branch. */
726 }
727
728 static __always_inline bool static_branch__false(struct static_key *key)
729 {
730         return static_key_false(key); /* Out of line branch. */
731 }
732
733 #define SCHED_FEAT(name, enabled)                                       \
734 static __always_inline bool static_branch_##name(struct static_key *key) \
735 {                                                                       \
736         return static_branch__##enabled(key);                           \
737 }
738
739 #include "features.h"
740
741 #undef SCHED_FEAT
742
743 extern struct static_key sched_feat_keys[__SCHED_FEAT_NR];
744 #define sched_feat(x) (static_branch_##x(&sched_feat_keys[__SCHED_FEAT_##x]))
745 #else /* !(SCHED_DEBUG && HAVE_JUMP_LABEL) */
746 #define sched_feat(x) (sysctl_sched_features & (1UL << __SCHED_FEAT_##x))
747 #endif /* SCHED_DEBUG && HAVE_JUMP_LABEL */
748
749 #ifdef CONFIG_NUMA_BALANCING
750 #define sched_feat_numa(x) sched_feat(x)
751 #ifdef CONFIG_SCHED_DEBUG
752 #define numabalancing_enabled sched_feat_numa(NUMA)
753 #else
754 extern bool numabalancing_enabled;
755 #endif /* CONFIG_SCHED_DEBUG */
756 #else
757 #define sched_feat_numa(x) (0)
758 #define numabalancing_enabled (0)
759 #endif /* CONFIG_NUMA_BALANCING */
760
761 static inline u64 global_rt_period(void)
762 {
763         return (u64)sysctl_sched_rt_period * NSEC_PER_USEC;
764 }
765
766 static inline u64 global_rt_runtime(void)
767 {
768         if (sysctl_sched_rt_runtime < 0)
769                 return RUNTIME_INF;
770
771         return (u64)sysctl_sched_rt_runtime * NSEC_PER_USEC;
772 }
773
774
775
776 static inline int task_current(struct rq *rq, struct task_struct *p)
777 {
778         return rq->curr == p;
779 }
780
781 static inline int task_running(struct rq *rq, struct task_struct *p)
782 {
783 #ifdef CONFIG_SMP
784         return p->on_cpu;
785 #else
786         return task_current(rq, p);
787 #endif
788 }
789
790
791 #ifndef prepare_arch_switch
792 # define prepare_arch_switch(next)      do { } while (0)
793 #endif
794 #ifndef finish_arch_switch
795 # define finish_arch_switch(prev)       do { } while (0)
796 #endif
797 #ifndef finish_arch_post_lock_switch
798 # define finish_arch_post_lock_switch() do { } while (0)
799 #endif
800
801 #ifndef __ARCH_WANT_UNLOCKED_CTXSW
802 static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next)
803 {
804 #ifdef CONFIG_SMP
805         /*
806          * We can optimise this out completely for !SMP, because the
807          * SMP rebalancing from interrupt is the only thing that cares
808          * here.
809          */
810         next->on_cpu = 1;
811 #endif
812 }
813
814 static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
815 {
816 #ifdef CONFIG_SMP
817         /*
818          * After ->on_cpu is cleared, the task can be moved to a different CPU.
819          * We must ensure this doesn't happen until the switch is completely
820          * finished.
821          */
822         smp_wmb();
823         prev->on_cpu = 0;
824 #endif
825 #ifdef CONFIG_DEBUG_SPINLOCK
826         /* this is a valid case when another task releases the spinlock */
827         rq->lock.owner = current;
828 #endif
829         /*
830          * If we are tracking spinlock dependencies then we have to
831          * fix up the runqueue lock - which gets 'carried over' from
832          * prev into current:
833          */
834         spin_acquire(&rq->lock.dep_map, 0, 0, _THIS_IP_);
835
836         raw_spin_unlock_irq(&rq->lock);
837 }
838
839 #else /* __ARCH_WANT_UNLOCKED_CTXSW */
840 static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next)
841 {
842 #ifdef CONFIG_SMP
843         /*
844          * We can optimise this out completely for !SMP, because the
845          * SMP rebalancing from interrupt is the only thing that cares
846          * here.
847          */
848         next->on_cpu = 1;
849 #endif
850         raw_spin_unlock(&rq->lock);
851 }
852
853 static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
854 {
855 #ifdef CONFIG_SMP
856         /*
857          * After ->on_cpu is cleared, the task can be moved to a different CPU.
858          * We must ensure this doesn't happen until the switch is completely
859          * finished.
860          */
861         smp_wmb();
862         prev->on_cpu = 0;
863 #endif
864         local_irq_enable();
865 }
866 #endif /* __ARCH_WANT_UNLOCKED_CTXSW */
867
868 /*
869  * wake flags
870  */
871 #define WF_SYNC         0x01            /* waker goes to sleep after wakeup */
872 #define WF_FORK         0x02            /* child wakeup after fork */
873 #define WF_MIGRATED     0x4             /* internal use, task got migrated */
874
875 static inline void update_load_add(struct load_weight *lw, unsigned long inc)
876 {
877         lw->weight += inc;
878         lw->inv_weight = 0;
879 }
880
881 static inline void update_load_sub(struct load_weight *lw, unsigned long dec)
882 {
883         lw->weight -= dec;
884         lw->inv_weight = 0;
885 }
886
887 static inline void update_load_set(struct load_weight *lw, unsigned long w)
888 {
889         lw->weight = w;
890         lw->inv_weight = 0;
891 }
892
893 /*
894  * To aid in avoiding the subversion of "niceness" due to uneven distribution
895  * of tasks with abnormal "nice" values across CPUs the contribution that
896  * each task makes to its run queue's load is weighted according to its
897  * scheduling class and "nice" value. For SCHED_NORMAL tasks this is just a
898  * scaled version of the new time slice allocation that they receive on time
899  * slice expiry etc.
900  */
901
902 #define WEIGHT_IDLEPRIO                3
903 #define WMULT_IDLEPRIO         1431655765
904
905 /*
906  * Nice levels are multiplicative, with a gentle 10% change for every
907  * nice level changed. I.e. when a CPU-bound task goes from nice 0 to
908  * nice 1, it will get ~10% less CPU time than another CPU-bound task
909  * that remained on nice 0.
910  *
911  * The "10% effect" is relative and cumulative: from _any_ nice level,
912  * if you go up 1 level, it's -10% CPU usage, if you go down 1 level
913  * it's +10% CPU usage. (to achieve that we use a multiplier of 1.25.
914  * If a task goes up by ~10% and another task goes down by ~10% then
915  * the relative distance between them is ~25%.)
916  */
917 static const int prio_to_weight[40] = {
918  /* -20 */     88761,     71755,     56483,     46273,     36291,
919  /* -15 */     29154,     23254,     18705,     14949,     11916,
920  /* -10 */      9548,      7620,      6100,      4904,      3906,
921  /*  -5 */      3121,      2501,      1991,      1586,      1277,
922  /*   0 */      1024,       820,       655,       526,       423,
923  /*   5 */       335,       272,       215,       172,       137,
924  /*  10 */       110,        87,        70,        56,        45,
925  /*  15 */        36,        29,        23,        18,        15,
926 };
927
928 /*
929  * Inverse (2^32/x) values of the prio_to_weight[] array, precalculated.
930  *
931  * In cases where the weight does not change often, we can use the
932  * precalculated inverse to speed up arithmetics by turning divisions
933  * into multiplications:
934  */
935 static const u32 prio_to_wmult[40] = {
936  /* -20 */     48388,     59856,     76040,     92818,    118348,
937  /* -15 */    147320,    184698,    229616,    287308,    360437,
938  /* -10 */    449829,    563644,    704093,    875809,   1099582,
939  /*  -5 */   1376151,   1717300,   2157191,   2708050,   3363326,
940  /*   0 */   4194304,   5237765,   6557202,   8165337,  10153587,
941  /*   5 */  12820798,  15790321,  19976592,  24970740,  31350126,
942  /*  10 */  39045157,  49367440,  61356676,  76695844,  95443717,
943  /*  15 */ 119304647, 148102320, 186737708, 238609294, 286331153,
944 };
945
946 /* Time spent by the tasks of the cpu accounting group executing in ... */
947 enum cpuacct_stat_index {
948         CPUACCT_STAT_USER,      /* ... user mode */
949         CPUACCT_STAT_SYSTEM,    /* ... kernel mode */
950
951         CPUACCT_STAT_NSTATS,
952 };
953
954
955 #define sched_class_highest (&stop_sched_class)
956 #define for_each_class(class) \
957    for (class = sched_class_highest; class; class = class->next)
958
959 extern const struct sched_class stop_sched_class;
960 extern const struct sched_class rt_sched_class;
961 extern const struct sched_class fair_sched_class;
962 extern const struct sched_class idle_sched_class;
963
964
965 #ifdef CONFIG_SMP
966
967 extern void trigger_load_balance(struct rq *rq, int cpu);
968 extern void idle_balance(int this_cpu, struct rq *this_rq);
969
970 #else   /* CONFIG_SMP */
971
972 static inline void idle_balance(int cpu, struct rq *rq)
973 {
974 }
975
976 #endif
977
978 extern void sysrq_sched_debug_show(void);
979 extern void sched_init_granularity(void);
980 extern void update_max_interval(void);
981 extern void update_group_power(struct sched_domain *sd, int cpu);
982 extern int update_runtime(struct notifier_block *nfb, unsigned long action, void *hcpu);
983 extern void init_sched_rt_class(void);
984 extern void init_sched_fair_class(void);
985
986 extern void resched_task(struct task_struct *p);
987 extern void resched_cpu(int cpu);
988
989 extern struct rt_bandwidth def_rt_bandwidth;
990 extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime);
991
992 extern void update_idle_cpu_load(struct rq *this_rq);
993
994 #ifdef CONFIG_CGROUP_CPUACCT
995 #include <linux/cgroup.h>
996 /* track cpu usage of a group of tasks and its child groups */
997 struct cpuacct {
998         struct cgroup_subsys_state css;
999         /* cpuusage holds pointer to a u64-type object on every cpu */
1000         u64 __percpu *cpuusage;
1001         struct kernel_cpustat __percpu *cpustat;
1002 };
1003
1004 extern struct cgroup_subsys cpuacct_subsys;
1005 extern struct cpuacct root_cpuacct;
1006
1007 /* return cpu accounting group corresponding to this container */
1008 static inline struct cpuacct *cgroup_ca(struct cgroup *cgrp)
1009 {
1010         return container_of(cgroup_subsys_state(cgrp, cpuacct_subsys_id),
1011                             struct cpuacct, css);
1012 }
1013
1014 /* return cpu accounting group to which this task belongs */
1015 static inline struct cpuacct *task_ca(struct task_struct *tsk)
1016 {
1017         return container_of(task_subsys_state(tsk, cpuacct_subsys_id),
1018                             struct cpuacct, css);
1019 }
1020
1021 static inline struct cpuacct *parent_ca(struct cpuacct *ca)
1022 {
1023         if (!ca || !ca->css.cgroup->parent)
1024                 return NULL;
1025         return cgroup_ca(ca->css.cgroup->parent);
1026 }
1027
1028 extern void cpuacct_charge(struct task_struct *tsk, u64 cputime);
1029 #else
1030 static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {}
1031 #endif
1032
1033 #ifdef CONFIG_PARAVIRT
1034 static inline u64 steal_ticks(u64 steal)
1035 {
1036         if (unlikely(steal > NSEC_PER_SEC))
1037                 return div_u64(steal, TICK_NSEC);
1038
1039         return __iter_div_u64_rem(steal, TICK_NSEC, &steal);
1040 }
1041 #endif
1042
1043 static inline void inc_nr_running(struct rq *rq)
1044 {
1045         rq->nr_running++;
1046 }
1047
1048 static inline void dec_nr_running(struct rq *rq)
1049 {
1050         rq->nr_running--;
1051 }
1052
1053 extern void update_rq_clock(struct rq *rq);
1054
1055 extern void activate_task(struct rq *rq, struct task_struct *p, int flags);
1056 extern void deactivate_task(struct rq *rq, struct task_struct *p, int flags);
1057
1058 extern void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags);
1059
1060 extern const_debug unsigned int sysctl_sched_time_avg;
1061 extern const_debug unsigned int sysctl_sched_nr_migrate;
1062 extern const_debug unsigned int sysctl_sched_migration_cost;
1063
1064 static inline u64 sched_avg_period(void)
1065 {
1066         return (u64)sysctl_sched_time_avg * NSEC_PER_MSEC / 2;
1067 }
1068
1069 #ifdef CONFIG_SCHED_HRTICK
1070
1071 /*
1072  * Use hrtick when:
1073  *  - enabled by features
1074  *  - hrtimer is actually high res
1075  */
1076 static inline int hrtick_enabled(struct rq *rq)
1077 {
1078         if (!sched_feat(HRTICK))
1079                 return 0;
1080         if (!cpu_active(cpu_of(rq)))
1081                 return 0;
1082         return hrtimer_is_hres_active(&rq->hrtick_timer);
1083 }
1084
1085 void hrtick_start(struct rq *rq, u64 delay);
1086
1087 #else
1088
1089 static inline int hrtick_enabled(struct rq *rq)
1090 {
1091         return 0;
1092 }
1093
1094 #endif /* CONFIG_SCHED_HRTICK */
1095
1096 #ifdef CONFIG_SMP
1097 extern void sched_avg_update(struct rq *rq);
1098 static inline void sched_rt_avg_update(struct rq *rq, u64 rt_delta)
1099 {
1100         rq->rt_avg += rt_delta;
1101         sched_avg_update(rq);
1102 }
1103 #else
1104 static inline void sched_rt_avg_update(struct rq *rq, u64 rt_delta) { }
1105 static inline void sched_avg_update(struct rq *rq) { }
1106 #endif
1107
1108 extern void start_bandwidth_timer(struct hrtimer *period_timer, ktime_t period);
1109
1110 #ifdef CONFIG_SMP
1111 #ifdef CONFIG_PREEMPT
1112
1113 static inline void double_rq_lock(struct rq *rq1, struct rq *rq2);
1114
1115 /*
1116  * fair double_lock_balance: Safely acquires both rq->locks in a fair
1117  * way at the expense of forcing extra atomic operations in all
1118  * invocations.  This assures that the double_lock is acquired using the
1119  * same underlying policy as the spinlock_t on this architecture, which
1120  * reduces latency compared to the unfair variant below.  However, it
1121  * also adds more overhead and therefore may reduce throughput.
1122  */
1123 static inline int _double_lock_balance(struct rq *this_rq, struct rq *busiest)
1124         __releases(this_rq->lock)
1125         __acquires(busiest->lock)
1126         __acquires(this_rq->lock)
1127 {
1128         raw_spin_unlock(&this_rq->lock);
1129         double_rq_lock(this_rq, busiest);
1130
1131         return 1;
1132 }
1133
1134 #else
1135 /*
1136  * Unfair double_lock_balance: Optimizes throughput at the expense of
1137  * latency by eliminating extra atomic operations when the locks are
1138  * already in proper order on entry.  This favors lower cpu-ids and will
1139  * grant the double lock to lower cpus over higher ids under contention,
1140  * regardless of entry order into the function.
1141  */
1142 static inline int _double_lock_balance(struct rq *this_rq, struct rq *busiest)
1143         __releases(this_rq->lock)
1144         __acquires(busiest->lock)
1145         __acquires(this_rq->lock)
1146 {
1147         int ret = 0;
1148
1149         if (unlikely(!raw_spin_trylock(&busiest->lock))) {
1150                 if (busiest < this_rq) {
1151                         raw_spin_unlock(&this_rq->lock);
1152                         raw_spin_lock(&busiest->lock);
1153                         raw_spin_lock_nested(&this_rq->lock,
1154                                               SINGLE_DEPTH_NESTING);
1155                         ret = 1;
1156                 } else
1157                         raw_spin_lock_nested(&busiest->lock,
1158                                               SINGLE_DEPTH_NESTING);
1159         }
1160         return ret;
1161 }
1162
1163 #endif /* CONFIG_PREEMPT */
1164
1165 /*
1166  * double_lock_balance - lock the busiest runqueue, this_rq is locked already.
1167  */
1168 static inline int double_lock_balance(struct rq *this_rq, struct rq *busiest)
1169 {
1170         if (unlikely(!irqs_disabled())) {
1171                 /* printk() doesn't work good under rq->lock */
1172                 raw_spin_unlock(&this_rq->lock);
1173                 BUG_ON(1);
1174         }
1175
1176         return _double_lock_balance(this_rq, busiest);
1177 }
1178
1179 static inline void double_unlock_balance(struct rq *this_rq, struct rq *busiest)
1180         __releases(busiest->lock)
1181 {
1182         raw_spin_unlock(&busiest->lock);
1183         lock_set_subclass(&this_rq->lock.dep_map, 0, _RET_IP_);
1184 }
1185
1186 /*
1187  * double_rq_lock - safely lock two runqueues
1188  *
1189  * Note this does not disable interrupts like task_rq_lock,
1190  * you need to do so manually before calling.
1191  */
1192 static inline void double_rq_lock(struct rq *rq1, struct rq *rq2)
1193         __acquires(rq1->lock)
1194         __acquires(rq2->lock)
1195 {
1196         BUG_ON(!irqs_disabled());
1197         if (rq1 == rq2) {
1198                 raw_spin_lock(&rq1->lock);
1199                 __acquire(rq2->lock);   /* Fake it out ;) */
1200         } else {
1201                 if (rq1 < rq2) {
1202                         raw_spin_lock(&rq1->lock);
1203                         raw_spin_lock_nested(&rq2->lock, SINGLE_DEPTH_NESTING);
1204                 } else {
1205                         raw_spin_lock(&rq2->lock);
1206                         raw_spin_lock_nested(&rq1->lock, SINGLE_DEPTH_NESTING);
1207                 }
1208         }
1209 }
1210
1211 /*
1212  * double_rq_unlock - safely unlock two runqueues
1213  *
1214  * Note this does not restore interrupts like task_rq_unlock,
1215  * you need to do so manually after calling.
1216  */
1217 static inline void double_rq_unlock(struct rq *rq1, struct rq *rq2)
1218         __releases(rq1->lock)
1219         __releases(rq2->lock)
1220 {
1221         raw_spin_unlock(&rq1->lock);
1222         if (rq1 != rq2)
1223                 raw_spin_unlock(&rq2->lock);
1224         else
1225                 __release(rq2->lock);
1226 }
1227
1228 #else /* CONFIG_SMP */
1229
1230 /*
1231  * double_rq_lock - safely lock two runqueues
1232  *
1233  * Note this does not disable interrupts like task_rq_lock,
1234  * you need to do so manually before calling.
1235  */
1236 static inline void double_rq_lock(struct rq *rq1, struct rq *rq2)
1237         __acquires(rq1->lock)
1238         __acquires(rq2->lock)
1239 {
1240         BUG_ON(!irqs_disabled());
1241         BUG_ON(rq1 != rq2);
1242         raw_spin_lock(&rq1->lock);
1243         __acquire(rq2->lock);   /* Fake it out ;) */
1244 }
1245
1246 /*
1247  * double_rq_unlock - safely unlock two runqueues
1248  *
1249  * Note this does not restore interrupts like task_rq_unlock,
1250  * you need to do so manually after calling.
1251  */
1252 static inline void double_rq_unlock(struct rq *rq1, struct rq *rq2)
1253         __releases(rq1->lock)
1254         __releases(rq2->lock)
1255 {
1256         BUG_ON(rq1 != rq2);
1257         raw_spin_unlock(&rq1->lock);
1258         __release(rq2->lock);
1259 }
1260
1261 #endif
1262
1263 extern struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq);
1264 extern struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq);
1265 extern void print_cfs_stats(struct seq_file *m, int cpu);
1266 extern void print_rt_stats(struct seq_file *m, int cpu);
1267
1268 extern void init_cfs_rq(struct cfs_rq *cfs_rq);
1269 extern void init_rt_rq(struct rt_rq *rt_rq, struct rq *rq);
1270
1271 extern void account_cfs_bandwidth_used(int enabled, int was_enabled);
1272
1273 #ifdef CONFIG_NO_HZ
1274 enum rq_nohz_flag_bits {
1275         NOHZ_TICK_STOPPED,
1276         NOHZ_BALANCE_KICK,
1277         NOHZ_IDLE,
1278 };
1279
1280 #define nohz_flags(cpu) (&cpu_rq(cpu)->nohz_flags)
1281 #endif
1282
1283 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
1284
1285 DECLARE_PER_CPU(u64, cpu_hardirq_time);
1286 DECLARE_PER_CPU(u64, cpu_softirq_time);
1287
1288 #ifndef CONFIG_64BIT
1289 DECLARE_PER_CPU(seqcount_t, irq_time_seq);
1290
1291 static inline void irq_time_write_begin(void)
1292 {
1293         __this_cpu_inc(irq_time_seq.sequence);
1294         smp_wmb();
1295 }
1296
1297 static inline void irq_time_write_end(void)
1298 {
1299         smp_wmb();
1300         __this_cpu_inc(irq_time_seq.sequence);
1301 }
1302
1303 static inline u64 irq_time_read(int cpu)
1304 {
1305         u64 irq_time;
1306         unsigned seq;
1307
1308         do {
1309                 seq = read_seqcount_begin(&per_cpu(irq_time_seq, cpu));
1310                 irq_time = per_cpu(cpu_softirq_time, cpu) +
1311                            per_cpu(cpu_hardirq_time, cpu);
1312         } while (read_seqcount_retry(&per_cpu(irq_time_seq, cpu), seq));
1313
1314         return irq_time;
1315 }
1316 #else /* CONFIG_64BIT */
1317 static inline void irq_time_write_begin(void)
1318 {
1319 }
1320
1321 static inline void irq_time_write_end(void)
1322 {
1323 }
1324
1325 static inline u64 irq_time_read(int cpu)
1326 {
1327         return per_cpu(cpu_softirq_time, cpu) + per_cpu(cpu_hardirq_time, cpu);
1328 }
1329 #endif /* CONFIG_64BIT */
1330 #endif /* CONFIG_IRQ_TIME_ACCOUNTING */