Merge branch 'linus' into x86/urgent
[linux-2.6-microblaze.git] / kernel / sched / core.c
1 /*
2  *  kernel/sched/core.c
3  *
4  *  Core kernel scheduler code and related syscalls
5  *
6  *  Copyright (C) 1991-2002  Linus Torvalds
7  */
8 #include "sched.h"
9
10 #include <linux/kthread.h>
11 #include <linux/nospec.h>
12
13 #include <linux/kcov.h>
14
15 #include <asm/switch_to.h>
16 #include <asm/tlb.h>
17
18 #include "../workqueue_internal.h"
19 #include "../smpboot.h"
20
21 #define CREATE_TRACE_POINTS
22 #include <trace/events/sched.h>
23
24 DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
25
26 #if defined(CONFIG_SCHED_DEBUG) && defined(HAVE_JUMP_LABEL)
27 /*
28  * Debugging: various feature bits
29  *
30  * If SCHED_DEBUG is disabled, each compilation unit has its own copy of
31  * sysctl_sched_features, defined in sched.h, to allow constants propagation
32  * at compile time and compiler optimization based on features default.
33  */
34 #define SCHED_FEAT(name, enabled)       \
35         (1UL << __SCHED_FEAT_##name) * enabled |
36 const_debug unsigned int sysctl_sched_features =
37 #include "features.h"
38         0;
39 #undef SCHED_FEAT
40 #endif
41
42 /*
43  * Number of tasks to iterate in a single balance run.
44  * Limited because this is done with IRQs disabled.
45  */
46 const_debug unsigned int sysctl_sched_nr_migrate = 32;
47
48 /*
49  * period over which we average the RT time consumption, measured
50  * in ms.
51  *
52  * default: 1s
53  */
54 const_debug unsigned int sysctl_sched_time_avg = MSEC_PER_SEC;
55
56 /*
57  * period over which we measure -rt task CPU usage in us.
58  * default: 1s
59  */
60 unsigned int sysctl_sched_rt_period = 1000000;
61
62 __read_mostly int scheduler_running;
63
64 /*
65  * part of the period that we allow rt tasks to run in us.
66  * default: 0.95s
67  */
68 int sysctl_sched_rt_runtime = 950000;
69
70 /*
71  * __task_rq_lock - lock the rq @p resides on.
72  */
73 struct rq *__task_rq_lock(struct task_struct *p, struct rq_flags *rf)
74         __acquires(rq->lock)
75 {
76         struct rq *rq;
77
78         lockdep_assert_held(&p->pi_lock);
79
80         for (;;) {
81                 rq = task_rq(p);
82                 raw_spin_lock(&rq->lock);
83                 if (likely(rq == task_rq(p) && !task_on_rq_migrating(p))) {
84                         rq_pin_lock(rq, rf);
85                         return rq;
86                 }
87                 raw_spin_unlock(&rq->lock);
88
89                 while (unlikely(task_on_rq_migrating(p)))
90                         cpu_relax();
91         }
92 }
93
94 /*
95  * task_rq_lock - lock p->pi_lock and lock the rq @p resides on.
96  */
97 struct rq *task_rq_lock(struct task_struct *p, struct rq_flags *rf)
98         __acquires(p->pi_lock)
99         __acquires(rq->lock)
100 {
101         struct rq *rq;
102
103         for (;;) {
104                 raw_spin_lock_irqsave(&p->pi_lock, rf->flags);
105                 rq = task_rq(p);
106                 raw_spin_lock(&rq->lock);
107                 /*
108                  *      move_queued_task()              task_rq_lock()
109                  *
110                  *      ACQUIRE (rq->lock)
111                  *      [S] ->on_rq = MIGRATING         [L] rq = task_rq()
112                  *      WMB (__set_task_cpu())          ACQUIRE (rq->lock);
113                  *      [S] ->cpu = new_cpu             [L] task_rq()
114                  *                                      [L] ->on_rq
115                  *      RELEASE (rq->lock)
116                  *
117                  * If we observe the old CPU in task_rq_lock, the acquire of
118                  * the old rq->lock will fully serialize against the stores.
119                  *
120                  * If we observe the new CPU in task_rq_lock, the acquire will
121                  * pair with the WMB to ensure we must then also see migrating.
122                  */
123                 if (likely(rq == task_rq(p) && !task_on_rq_migrating(p))) {
124                         rq_pin_lock(rq, rf);
125                         return rq;
126                 }
127                 raw_spin_unlock(&rq->lock);
128                 raw_spin_unlock_irqrestore(&p->pi_lock, rf->flags);
129
130                 while (unlikely(task_on_rq_migrating(p)))
131                         cpu_relax();
132         }
133 }
134
135 /*
136  * RQ-clock updating methods:
137  */
138
139 static void update_rq_clock_task(struct rq *rq, s64 delta)
140 {
141 /*
142  * In theory, the compile should just see 0 here, and optimize out the call
143  * to sched_rt_avg_update. But I don't trust it...
144  */
145 #if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
146         s64 steal = 0, irq_delta = 0;
147 #endif
148 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
149         irq_delta = irq_time_read(cpu_of(rq)) - rq->prev_irq_time;
150
151         /*
152          * Since irq_time is only updated on {soft,}irq_exit, we might run into
153          * this case when a previous update_rq_clock() happened inside a
154          * {soft,}irq region.
155          *
156          * When this happens, we stop ->clock_task and only update the
157          * prev_irq_time stamp to account for the part that fit, so that a next
158          * update will consume the rest. This ensures ->clock_task is
159          * monotonic.
160          *
161          * It does however cause some slight miss-attribution of {soft,}irq
162          * time, a more accurate solution would be to update the irq_time using
163          * the current rq->clock timestamp, except that would require using
164          * atomic ops.
165          */
166         if (irq_delta > delta)
167                 irq_delta = delta;
168
169         rq->prev_irq_time += irq_delta;
170         delta -= irq_delta;
171 #endif
172 #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING
173         if (static_key_false((&paravirt_steal_rq_enabled))) {
174                 steal = paravirt_steal_clock(cpu_of(rq));
175                 steal -= rq->prev_steal_time_rq;
176
177                 if (unlikely(steal > delta))
178                         steal = delta;
179
180                 rq->prev_steal_time_rq += steal;
181                 delta -= steal;
182         }
183 #endif
184
185         rq->clock_task += delta;
186
187 #if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
188         if ((irq_delta + steal) && sched_feat(NONTASK_CAPACITY))
189                 sched_rt_avg_update(rq, irq_delta + steal);
190 #endif
191 }
192
193 void update_rq_clock(struct rq *rq)
194 {
195         s64 delta;
196
197         lockdep_assert_held(&rq->lock);
198
199         if (rq->clock_update_flags & RQCF_ACT_SKIP)
200                 return;
201
202 #ifdef CONFIG_SCHED_DEBUG
203         if (sched_feat(WARN_DOUBLE_CLOCK))
204                 SCHED_WARN_ON(rq->clock_update_flags & RQCF_UPDATED);
205         rq->clock_update_flags |= RQCF_UPDATED;
206 #endif
207
208         delta = sched_clock_cpu(cpu_of(rq)) - rq->clock;
209         if (delta < 0)
210                 return;
211         rq->clock += delta;
212         update_rq_clock_task(rq, delta);
213 }
214
215
216 #ifdef CONFIG_SCHED_HRTICK
217 /*
218  * Use HR-timers to deliver accurate preemption points.
219  */
220
221 static void hrtick_clear(struct rq *rq)
222 {
223         if (hrtimer_active(&rq->hrtick_timer))
224                 hrtimer_cancel(&rq->hrtick_timer);
225 }
226
227 /*
228  * High-resolution timer tick.
229  * Runs from hardirq context with interrupts disabled.
230  */
231 static enum hrtimer_restart hrtick(struct hrtimer *timer)
232 {
233         struct rq *rq = container_of(timer, struct rq, hrtick_timer);
234         struct rq_flags rf;
235
236         WARN_ON_ONCE(cpu_of(rq) != smp_processor_id());
237
238         rq_lock(rq, &rf);
239         update_rq_clock(rq);
240         rq->curr->sched_class->task_tick(rq, rq->curr, 1);
241         rq_unlock(rq, &rf);
242
243         return HRTIMER_NORESTART;
244 }
245
246 #ifdef CONFIG_SMP
247
248 static void __hrtick_restart(struct rq *rq)
249 {
250         struct hrtimer *timer = &rq->hrtick_timer;
251
252         hrtimer_start_expires(timer, HRTIMER_MODE_ABS_PINNED);
253 }
254
255 /*
256  * called from hardirq (IPI) context
257  */
258 static void __hrtick_start(void *arg)
259 {
260         struct rq *rq = arg;
261         struct rq_flags rf;
262
263         rq_lock(rq, &rf);
264         __hrtick_restart(rq);
265         rq->hrtick_csd_pending = 0;
266         rq_unlock(rq, &rf);
267 }
268
269 /*
270  * Called to set the hrtick timer state.
271  *
272  * called with rq->lock held and irqs disabled
273  */
274 void hrtick_start(struct rq *rq, u64 delay)
275 {
276         struct hrtimer *timer = &rq->hrtick_timer;
277         ktime_t time;
278         s64 delta;
279
280         /*
281          * Don't schedule slices shorter than 10000ns, that just
282          * doesn't make sense and can cause timer DoS.
283          */
284         delta = max_t(s64, delay, 10000LL);
285         time = ktime_add_ns(timer->base->get_time(), delta);
286
287         hrtimer_set_expires(timer, time);
288
289         if (rq == this_rq()) {
290                 __hrtick_restart(rq);
291         } else if (!rq->hrtick_csd_pending) {
292                 smp_call_function_single_async(cpu_of(rq), &rq->hrtick_csd);
293                 rq->hrtick_csd_pending = 1;
294         }
295 }
296
297 #else
298 /*
299  * Called to set the hrtick timer state.
300  *
301  * called with rq->lock held and irqs disabled
302  */
303 void hrtick_start(struct rq *rq, u64 delay)
304 {
305         /*
306          * Don't schedule slices shorter than 10000ns, that just
307          * doesn't make sense. Rely on vruntime for fairness.
308          */
309         delay = max_t(u64, delay, 10000LL);
310         hrtimer_start(&rq->hrtick_timer, ns_to_ktime(delay),
311                       HRTIMER_MODE_REL_PINNED);
312 }
313 #endif /* CONFIG_SMP */
314
315 static void hrtick_rq_init(struct rq *rq)
316 {
317 #ifdef CONFIG_SMP
318         rq->hrtick_csd_pending = 0;
319
320         rq->hrtick_csd.flags = 0;
321         rq->hrtick_csd.func = __hrtick_start;
322         rq->hrtick_csd.info = rq;
323 #endif
324
325         hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
326         rq->hrtick_timer.function = hrtick;
327 }
328 #else   /* CONFIG_SCHED_HRTICK */
329 static inline void hrtick_clear(struct rq *rq)
330 {
331 }
332
333 static inline void hrtick_rq_init(struct rq *rq)
334 {
335 }
336 #endif  /* CONFIG_SCHED_HRTICK */
337
338 /*
339  * cmpxchg based fetch_or, macro so it works for different integer types
340  */
341 #define fetch_or(ptr, mask)                                             \
342         ({                                                              \
343                 typeof(ptr) _ptr = (ptr);                               \
344                 typeof(mask) _mask = (mask);                            \
345                 typeof(*_ptr) _old, _val = *_ptr;                       \
346                                                                         \
347                 for (;;) {                                              \
348                         _old = cmpxchg(_ptr, _val, _val | _mask);       \
349                         if (_old == _val)                               \
350                                 break;                                  \
351                         _val = _old;                                    \
352                 }                                                       \
353         _old;                                                           \
354 })
355
356 #if defined(CONFIG_SMP) && defined(TIF_POLLING_NRFLAG)
357 /*
358  * Atomically set TIF_NEED_RESCHED and test for TIF_POLLING_NRFLAG,
359  * this avoids any races wrt polling state changes and thereby avoids
360  * spurious IPIs.
361  */
362 static bool set_nr_and_not_polling(struct task_struct *p)
363 {
364         struct thread_info *ti = task_thread_info(p);
365         return !(fetch_or(&ti->flags, _TIF_NEED_RESCHED) & _TIF_POLLING_NRFLAG);
366 }
367
368 /*
369  * Atomically set TIF_NEED_RESCHED if TIF_POLLING_NRFLAG is set.
370  *
371  * If this returns true, then the idle task promises to call
372  * sched_ttwu_pending() and reschedule soon.
373  */
374 static bool set_nr_if_polling(struct task_struct *p)
375 {
376         struct thread_info *ti = task_thread_info(p);
377         typeof(ti->flags) old, val = READ_ONCE(ti->flags);
378
379         for (;;) {
380                 if (!(val & _TIF_POLLING_NRFLAG))
381                         return false;
382                 if (val & _TIF_NEED_RESCHED)
383                         return true;
384                 old = cmpxchg(&ti->flags, val, val | _TIF_NEED_RESCHED);
385                 if (old == val)
386                         break;
387                 val = old;
388         }
389         return true;
390 }
391
392 #else
393 static bool set_nr_and_not_polling(struct task_struct *p)
394 {
395         set_tsk_need_resched(p);
396         return true;
397 }
398
399 #ifdef CONFIG_SMP
400 static bool set_nr_if_polling(struct task_struct *p)
401 {
402         return false;
403 }
404 #endif
405 #endif
406
407 void wake_q_add(struct wake_q_head *head, struct task_struct *task)
408 {
409         struct wake_q_node *node = &task->wake_q;
410
411         /*
412          * Atomically grab the task, if ->wake_q is !nil already it means
413          * its already queued (either by us or someone else) and will get the
414          * wakeup due to that.
415          *
416          * This cmpxchg() implies a full barrier, which pairs with the write
417          * barrier implied by the wakeup in wake_up_q().
418          */
419         if (cmpxchg(&node->next, NULL, WAKE_Q_TAIL))
420                 return;
421
422         get_task_struct(task);
423
424         /*
425          * The head is context local, there can be no concurrency.
426          */
427         *head->lastp = node;
428         head->lastp = &node->next;
429 }
430
431 void wake_up_q(struct wake_q_head *head)
432 {
433         struct wake_q_node *node = head->first;
434
435         while (node != WAKE_Q_TAIL) {
436                 struct task_struct *task;
437
438                 task = container_of(node, struct task_struct, wake_q);
439                 BUG_ON(!task);
440                 /* Task can safely be re-inserted now: */
441                 node = node->next;
442                 task->wake_q.next = NULL;
443
444                 /*
445                  * wake_up_process() implies a wmb() to pair with the queueing
446                  * in wake_q_add() so as not to miss wakeups.
447                  */
448                 wake_up_process(task);
449                 put_task_struct(task);
450         }
451 }
452
453 /*
454  * resched_curr - mark rq's current task 'to be rescheduled now'.
455  *
456  * On UP this means the setting of the need_resched flag, on SMP it
457  * might also involve a cross-CPU call to trigger the scheduler on
458  * the target CPU.
459  */
460 void resched_curr(struct rq *rq)
461 {
462         struct task_struct *curr = rq->curr;
463         int cpu;
464
465         lockdep_assert_held(&rq->lock);
466
467         if (test_tsk_need_resched(curr))
468                 return;
469
470         cpu = cpu_of(rq);
471
472         if (cpu == smp_processor_id()) {
473                 set_tsk_need_resched(curr);
474                 set_preempt_need_resched();
475                 return;
476         }
477
478         if (set_nr_and_not_polling(curr))
479                 smp_send_reschedule(cpu);
480         else
481                 trace_sched_wake_idle_without_ipi(cpu);
482 }
483
484 void resched_cpu(int cpu)
485 {
486         struct rq *rq = cpu_rq(cpu);
487         unsigned long flags;
488
489         raw_spin_lock_irqsave(&rq->lock, flags);
490         if (cpu_online(cpu) || cpu == smp_processor_id())
491                 resched_curr(rq);
492         raw_spin_unlock_irqrestore(&rq->lock, flags);
493 }
494
495 #ifdef CONFIG_SMP
496 #ifdef CONFIG_NO_HZ_COMMON
497 /*
498  * In the semi idle case, use the nearest busy CPU for migrating timers
499  * from an idle CPU.  This is good for power-savings.
500  *
501  * We don't do similar optimization for completely idle system, as
502  * selecting an idle CPU will add more delays to the timers than intended
503  * (as that CPU's timer base may not be uptodate wrt jiffies etc).
504  */
505 int get_nohz_timer_target(void)
506 {
507         int i, cpu = smp_processor_id();
508         struct sched_domain *sd;
509
510         if (!idle_cpu(cpu) && housekeeping_cpu(cpu, HK_FLAG_TIMER))
511                 return cpu;
512
513         rcu_read_lock();
514         for_each_domain(cpu, sd) {
515                 for_each_cpu(i, sched_domain_span(sd)) {
516                         if (cpu == i)
517                                 continue;
518
519                         if (!idle_cpu(i) && housekeeping_cpu(i, HK_FLAG_TIMER)) {
520                                 cpu = i;
521                                 goto unlock;
522                         }
523                 }
524         }
525
526         if (!housekeeping_cpu(cpu, HK_FLAG_TIMER))
527                 cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
528 unlock:
529         rcu_read_unlock();
530         return cpu;
531 }
532
533 /*
534  * When add_timer_on() enqueues a timer into the timer wheel of an
535  * idle CPU then this timer might expire before the next timer event
536  * which is scheduled to wake up that CPU. In case of a completely
537  * idle system the next event might even be infinite time into the
538  * future. wake_up_idle_cpu() ensures that the CPU is woken up and
539  * leaves the inner idle loop so the newly added timer is taken into
540  * account when the CPU goes back to idle and evaluates the timer
541  * wheel for the next timer event.
542  */
543 static void wake_up_idle_cpu(int cpu)
544 {
545         struct rq *rq = cpu_rq(cpu);
546
547         if (cpu == smp_processor_id())
548                 return;
549
550         if (set_nr_and_not_polling(rq->idle))
551                 smp_send_reschedule(cpu);
552         else
553                 trace_sched_wake_idle_without_ipi(cpu);
554 }
555
556 static bool wake_up_full_nohz_cpu(int cpu)
557 {
558         /*
559          * We just need the target to call irq_exit() and re-evaluate
560          * the next tick. The nohz full kick at least implies that.
561          * If needed we can still optimize that later with an
562          * empty IRQ.
563          */
564         if (cpu_is_offline(cpu))
565                 return true;  /* Don't try to wake offline CPUs. */
566         if (tick_nohz_full_cpu(cpu)) {
567                 if (cpu != smp_processor_id() ||
568                     tick_nohz_tick_stopped())
569                         tick_nohz_full_kick_cpu(cpu);
570                 return true;
571         }
572
573         return false;
574 }
575
576 /*
577  * Wake up the specified CPU.  If the CPU is going offline, it is the
578  * caller's responsibility to deal with the lost wakeup, for example,
579  * by hooking into the CPU_DEAD notifier like timers and hrtimers do.
580  */
581 void wake_up_nohz_cpu(int cpu)
582 {
583         if (!wake_up_full_nohz_cpu(cpu))
584                 wake_up_idle_cpu(cpu);
585 }
586
587 static inline bool got_nohz_idle_kick(void)
588 {
589         int cpu = smp_processor_id();
590
591         if (!(atomic_read(nohz_flags(cpu)) & NOHZ_KICK_MASK))
592                 return false;
593
594         if (idle_cpu(cpu) && !need_resched())
595                 return true;
596
597         /*
598          * We can't run Idle Load Balance on this CPU for this time so we
599          * cancel it and clear NOHZ_BALANCE_KICK
600          */
601         atomic_andnot(NOHZ_KICK_MASK, nohz_flags(cpu));
602         return false;
603 }
604
605 #else /* CONFIG_NO_HZ_COMMON */
606
607 static inline bool got_nohz_idle_kick(void)
608 {
609         return false;
610 }
611
612 #endif /* CONFIG_NO_HZ_COMMON */
613
614 #ifdef CONFIG_NO_HZ_FULL
615 bool sched_can_stop_tick(struct rq *rq)
616 {
617         int fifo_nr_running;
618
619         /* Deadline tasks, even if single, need the tick */
620         if (rq->dl.dl_nr_running)
621                 return false;
622
623         /*
624          * If there are more than one RR tasks, we need the tick to effect the
625          * actual RR behaviour.
626          */
627         if (rq->rt.rr_nr_running) {
628                 if (rq->rt.rr_nr_running == 1)
629                         return true;
630                 else
631                         return false;
632         }
633
634         /*
635          * If there's no RR tasks, but FIFO tasks, we can skip the tick, no
636          * forced preemption between FIFO tasks.
637          */
638         fifo_nr_running = rq->rt.rt_nr_running - rq->rt.rr_nr_running;
639         if (fifo_nr_running)
640                 return true;
641
642         /*
643          * If there are no DL,RR/FIFO tasks, there must only be CFS tasks left;
644          * if there's more than one we need the tick for involuntary
645          * preemption.
646          */
647         if (rq->nr_running > 1)
648                 return false;
649
650         return true;
651 }
652 #endif /* CONFIG_NO_HZ_FULL */
653
654 void sched_avg_update(struct rq *rq)
655 {
656         s64 period = sched_avg_period();
657
658         while ((s64)(rq_clock(rq) - rq->age_stamp) > period) {
659                 /*
660                  * Inline assembly required to prevent the compiler
661                  * optimising this loop into a divmod call.
662                  * See __iter_div_u64_rem() for another example of this.
663                  */
664                 asm("" : "+rm" (rq->age_stamp));
665                 rq->age_stamp += period;
666                 rq->rt_avg /= 2;
667         }
668 }
669
670 #endif /* CONFIG_SMP */
671
672 #if defined(CONFIG_RT_GROUP_SCHED) || (defined(CONFIG_FAIR_GROUP_SCHED) && \
673                         (defined(CONFIG_SMP) || defined(CONFIG_CFS_BANDWIDTH)))
674 /*
675  * Iterate task_group tree rooted at *from, calling @down when first entering a
676  * node and @up when leaving it for the final time.
677  *
678  * Caller must hold rcu_lock or sufficient equivalent.
679  */
680 int walk_tg_tree_from(struct task_group *from,
681                              tg_visitor down, tg_visitor up, void *data)
682 {
683         struct task_group *parent, *child;
684         int ret;
685
686         parent = from;
687
688 down:
689         ret = (*down)(parent, data);
690         if (ret)
691                 goto out;
692         list_for_each_entry_rcu(child, &parent->children, siblings) {
693                 parent = child;
694                 goto down;
695
696 up:
697                 continue;
698         }
699         ret = (*up)(parent, data);
700         if (ret || parent == from)
701                 goto out;
702
703         child = parent;
704         parent = parent->parent;
705         if (parent)
706                 goto up;
707 out:
708         return ret;
709 }
710
711 int tg_nop(struct task_group *tg, void *data)
712 {
713         return 0;
714 }
715 #endif
716
717 static void set_load_weight(struct task_struct *p, bool update_load)
718 {
719         int prio = p->static_prio - MAX_RT_PRIO;
720         struct load_weight *load = &p->se.load;
721
722         /*
723          * SCHED_IDLE tasks get minimal weight:
724          */
725         if (idle_policy(p->policy)) {
726                 load->weight = scale_load(WEIGHT_IDLEPRIO);
727                 load->inv_weight = WMULT_IDLEPRIO;
728                 return;
729         }
730
731         /*
732          * SCHED_OTHER tasks have to update their load when changing their
733          * weight
734          */
735         if (update_load && p->sched_class == &fair_sched_class) {
736                 reweight_task(p, prio);
737         } else {
738                 load->weight = scale_load(sched_prio_to_weight[prio]);
739                 load->inv_weight = sched_prio_to_wmult[prio];
740         }
741 }
742
743 static inline void enqueue_task(struct rq *rq, struct task_struct *p, int flags)
744 {
745         if (!(flags & ENQUEUE_NOCLOCK))
746                 update_rq_clock(rq);
747
748         if (!(flags & ENQUEUE_RESTORE))
749                 sched_info_queued(rq, p);
750
751         p->sched_class->enqueue_task(rq, p, flags);
752 }
753
754 static inline void dequeue_task(struct rq *rq, struct task_struct *p, int flags)
755 {
756         if (!(flags & DEQUEUE_NOCLOCK))
757                 update_rq_clock(rq);
758
759         if (!(flags & DEQUEUE_SAVE))
760                 sched_info_dequeued(rq, p);
761
762         p->sched_class->dequeue_task(rq, p, flags);
763 }
764
765 void activate_task(struct rq *rq, struct task_struct *p, int flags)
766 {
767         if (task_contributes_to_load(p))
768                 rq->nr_uninterruptible--;
769
770         enqueue_task(rq, p, flags);
771 }
772
773 void deactivate_task(struct rq *rq, struct task_struct *p, int flags)
774 {
775         if (task_contributes_to_load(p))
776                 rq->nr_uninterruptible++;
777
778         dequeue_task(rq, p, flags);
779 }
780
781 /*
782  * __normal_prio - return the priority that is based on the static prio
783  */
784 static inline int __normal_prio(struct task_struct *p)
785 {
786         return p->static_prio;
787 }
788
789 /*
790  * Calculate the expected normal priority: i.e. priority
791  * without taking RT-inheritance into account. Might be
792  * boosted by interactivity modifiers. Changes upon fork,
793  * setprio syscalls, and whenever the interactivity
794  * estimator recalculates.
795  */
796 static inline int normal_prio(struct task_struct *p)
797 {
798         int prio;
799
800         if (task_has_dl_policy(p))
801                 prio = MAX_DL_PRIO-1;
802         else if (task_has_rt_policy(p))
803                 prio = MAX_RT_PRIO-1 - p->rt_priority;
804         else
805                 prio = __normal_prio(p);
806         return prio;
807 }
808
809 /*
810  * Calculate the current priority, i.e. the priority
811  * taken into account by the scheduler. This value might
812  * be boosted by RT tasks, or might be boosted by
813  * interactivity modifiers. Will be RT if the task got
814  * RT-boosted. If not then it returns p->normal_prio.
815  */
816 static int effective_prio(struct task_struct *p)
817 {
818         p->normal_prio = normal_prio(p);
819         /*
820          * If we are RT tasks or we were boosted to RT priority,
821          * keep the priority unchanged. Otherwise, update priority
822          * to the normal priority:
823          */
824         if (!rt_prio(p->prio))
825                 return p->normal_prio;
826         return p->prio;
827 }
828
829 /**
830  * task_curr - is this task currently executing on a CPU?
831  * @p: the task in question.
832  *
833  * Return: 1 if the task is currently executing. 0 otherwise.
834  */
835 inline int task_curr(const struct task_struct *p)
836 {
837         return cpu_curr(task_cpu(p)) == p;
838 }
839
840 /*
841  * switched_from, switched_to and prio_changed must _NOT_ drop rq->lock,
842  * use the balance_callback list if you want balancing.
843  *
844  * this means any call to check_class_changed() must be followed by a call to
845  * balance_callback().
846  */
847 static inline void check_class_changed(struct rq *rq, struct task_struct *p,
848                                        const struct sched_class *prev_class,
849                                        int oldprio)
850 {
851         if (prev_class != p->sched_class) {
852                 if (prev_class->switched_from)
853                         prev_class->switched_from(rq, p);
854
855                 p->sched_class->switched_to(rq, p);
856         } else if (oldprio != p->prio || dl_task(p))
857                 p->sched_class->prio_changed(rq, p, oldprio);
858 }
859
860 void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags)
861 {
862         const struct sched_class *class;
863
864         if (p->sched_class == rq->curr->sched_class) {
865                 rq->curr->sched_class->check_preempt_curr(rq, p, flags);
866         } else {
867                 for_each_class(class) {
868                         if (class == rq->curr->sched_class)
869                                 break;
870                         if (class == p->sched_class) {
871                                 resched_curr(rq);
872                                 break;
873                         }
874                 }
875         }
876
877         /*
878          * A queue event has occurred, and we're going to schedule.  In
879          * this case, we can save a useless back to back clock update.
880          */
881         if (task_on_rq_queued(rq->curr) && test_tsk_need_resched(rq->curr))
882                 rq_clock_skip_update(rq);
883 }
884
885 #ifdef CONFIG_SMP
886
887 static inline bool is_per_cpu_kthread(struct task_struct *p)
888 {
889         if (!(p->flags & PF_KTHREAD))
890                 return false;
891
892         if (p->nr_cpus_allowed != 1)
893                 return false;
894
895         return true;
896 }
897
898 /*
899  * Per-CPU kthreads are allowed to run on !actie && online CPUs, see
900  * __set_cpus_allowed_ptr() and select_fallback_rq().
901  */
902 static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
903 {
904         if (!cpumask_test_cpu(cpu, &p->cpus_allowed))
905                 return false;
906
907         if (is_per_cpu_kthread(p))
908                 return cpu_online(cpu);
909
910         return cpu_active(cpu);
911 }
912
913 /*
914  * This is how migration works:
915  *
916  * 1) we invoke migration_cpu_stop() on the target CPU using
917  *    stop_one_cpu().
918  * 2) stopper starts to run (implicitly forcing the migrated thread
919  *    off the CPU)
920  * 3) it checks whether the migrated task is still in the wrong runqueue.
921  * 4) if it's in the wrong runqueue then the migration thread removes
922  *    it and puts it into the right queue.
923  * 5) stopper completes and stop_one_cpu() returns and the migration
924  *    is done.
925  */
926
927 /*
928  * move_queued_task - move a queued task to new rq.
929  *
930  * Returns (locked) new rq. Old rq's lock is released.
931  */
932 static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf,
933                                    struct task_struct *p, int new_cpu)
934 {
935         lockdep_assert_held(&rq->lock);
936
937         p->on_rq = TASK_ON_RQ_MIGRATING;
938         dequeue_task(rq, p, DEQUEUE_NOCLOCK);
939         set_task_cpu(p, new_cpu);
940         rq_unlock(rq, rf);
941
942         rq = cpu_rq(new_cpu);
943
944         rq_lock(rq, rf);
945         BUG_ON(task_cpu(p) != new_cpu);
946         enqueue_task(rq, p, 0);
947         p->on_rq = TASK_ON_RQ_QUEUED;
948         check_preempt_curr(rq, p, 0);
949
950         return rq;
951 }
952
953 struct migration_arg {
954         struct task_struct *task;
955         int dest_cpu;
956 };
957
958 /*
959  * Move (not current) task off this CPU, onto the destination CPU. We're doing
960  * this because either it can't run here any more (set_cpus_allowed()
961  * away from this CPU, or CPU going down), or because we're
962  * attempting to rebalance this task on exec (sched_exec).
963  *
964  * So we race with normal scheduler movements, but that's OK, as long
965  * as the task is no longer on this CPU.
966  */
967 static struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf,
968                                  struct task_struct *p, int dest_cpu)
969 {
970         /* Affinity changed (again). */
971         if (!is_cpu_allowed(p, dest_cpu))
972                 return rq;
973
974         update_rq_clock(rq);
975         rq = move_queued_task(rq, rf, p, dest_cpu);
976
977         return rq;
978 }
979
980 /*
981  * migration_cpu_stop - this will be executed by a highprio stopper thread
982  * and performs thread migration by bumping thread off CPU then
983  * 'pushing' onto another runqueue.
984  */
985 static int migration_cpu_stop(void *data)
986 {
987         struct migration_arg *arg = data;
988         struct task_struct *p = arg->task;
989         struct rq *rq = this_rq();
990         struct rq_flags rf;
991
992         /*
993          * The original target CPU might have gone down and we might
994          * be on another CPU but it doesn't matter.
995          */
996         local_irq_disable();
997         /*
998          * We need to explicitly wake pending tasks before running
999          * __migrate_task() such that we will not miss enforcing cpus_allowed
1000          * during wakeups, see set_cpus_allowed_ptr()'s TASK_WAKING test.
1001          */
1002         sched_ttwu_pending();
1003
1004         raw_spin_lock(&p->pi_lock);
1005         rq_lock(rq, &rf);
1006         /*
1007          * If task_rq(p) != rq, it cannot be migrated here, because we're
1008          * holding rq->lock, if p->on_rq == 0 it cannot get enqueued because
1009          * we're holding p->pi_lock.
1010          */
1011         if (task_rq(p) == rq) {
1012                 if (task_on_rq_queued(p))
1013                         rq = __migrate_task(rq, &rf, p, arg->dest_cpu);
1014                 else
1015                         p->wake_cpu = arg->dest_cpu;
1016         }
1017         rq_unlock(rq, &rf);
1018         raw_spin_unlock(&p->pi_lock);
1019
1020         local_irq_enable();
1021         return 0;
1022 }
1023
1024 /*
1025  * sched_class::set_cpus_allowed must do the below, but is not required to
1026  * actually call this function.
1027  */
1028 void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask)
1029 {
1030         cpumask_copy(&p->cpus_allowed, new_mask);
1031         p->nr_cpus_allowed = cpumask_weight(new_mask);
1032 }
1033
1034 void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
1035 {
1036         struct rq *rq = task_rq(p);
1037         bool queued, running;
1038
1039         lockdep_assert_held(&p->pi_lock);
1040
1041         queued = task_on_rq_queued(p);
1042         running = task_current(rq, p);
1043
1044         if (queued) {
1045                 /*
1046                  * Because __kthread_bind() calls this on blocked tasks without
1047                  * holding rq->lock.
1048                  */
1049                 lockdep_assert_held(&rq->lock);
1050                 dequeue_task(rq, p, DEQUEUE_SAVE | DEQUEUE_NOCLOCK);
1051         }
1052         if (running)
1053                 put_prev_task(rq, p);
1054
1055         p->sched_class->set_cpus_allowed(p, new_mask);
1056
1057         if (queued)
1058                 enqueue_task(rq, p, ENQUEUE_RESTORE | ENQUEUE_NOCLOCK);
1059         if (running)
1060                 set_curr_task(rq, p);
1061 }
1062
1063 /*
1064  * Change a given task's CPU affinity. Migrate the thread to a
1065  * proper CPU and schedule it away if the CPU it's executing on
1066  * is removed from the allowed bitmask.
1067  *
1068  * NOTE: the caller must have a valid reference to the task, the
1069  * task must not exit() & deallocate itself prematurely. The
1070  * call is not atomic; no spinlocks may be held.
1071  */
1072 static int __set_cpus_allowed_ptr(struct task_struct *p,
1073                                   const struct cpumask *new_mask, bool check)
1074 {
1075         const struct cpumask *cpu_valid_mask = cpu_active_mask;
1076         unsigned int dest_cpu;
1077         struct rq_flags rf;
1078         struct rq *rq;
1079         int ret = 0;
1080
1081         rq = task_rq_lock(p, &rf);
1082         update_rq_clock(rq);
1083
1084         if (p->flags & PF_KTHREAD) {
1085                 /*
1086                  * Kernel threads are allowed on online && !active CPUs
1087                  */
1088                 cpu_valid_mask = cpu_online_mask;
1089         }
1090
1091         /*
1092          * Must re-check here, to close a race against __kthread_bind(),
1093          * sched_setaffinity() is not guaranteed to observe the flag.
1094          */
1095         if (check && (p->flags & PF_NO_SETAFFINITY)) {
1096                 ret = -EINVAL;
1097                 goto out;
1098         }
1099
1100         if (cpumask_equal(&p->cpus_allowed, new_mask))
1101                 goto out;
1102
1103         if (!cpumask_intersects(new_mask, cpu_valid_mask)) {
1104                 ret = -EINVAL;
1105                 goto out;
1106         }
1107
1108         do_set_cpus_allowed(p, new_mask);
1109
1110         if (p->flags & PF_KTHREAD) {
1111                 /*
1112                  * For kernel threads that do indeed end up on online &&
1113                  * !active we want to ensure they are strict per-CPU threads.
1114                  */
1115                 WARN_ON(cpumask_intersects(new_mask, cpu_online_mask) &&
1116                         !cpumask_intersects(new_mask, cpu_active_mask) &&
1117                         p->nr_cpus_allowed != 1);
1118         }
1119
1120         /* Can the task run on the task's current CPU? If so, we're done */
1121         if (cpumask_test_cpu(task_cpu(p), new_mask))
1122                 goto out;
1123
1124         dest_cpu = cpumask_any_and(cpu_valid_mask, new_mask);
1125         if (task_running(rq, p) || p->state == TASK_WAKING) {
1126                 struct migration_arg arg = { p, dest_cpu };
1127                 /* Need help from migration thread: drop lock and wait. */
1128                 task_rq_unlock(rq, p, &rf);
1129                 stop_one_cpu(cpu_of(rq), migration_cpu_stop, &arg);
1130                 tlb_migrate_finish(p->mm);
1131                 return 0;
1132         } else if (task_on_rq_queued(p)) {
1133                 /*
1134                  * OK, since we're going to drop the lock immediately
1135                  * afterwards anyway.
1136                  */
1137                 rq = move_queued_task(rq, &rf, p, dest_cpu);
1138         }
1139 out:
1140         task_rq_unlock(rq, p, &rf);
1141
1142         return ret;
1143 }
1144
1145 int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
1146 {
1147         return __set_cpus_allowed_ptr(p, new_mask, false);
1148 }
1149 EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr);
1150
1151 void set_task_cpu(struct task_struct *p, unsigned int new_cpu)
1152 {
1153 #ifdef CONFIG_SCHED_DEBUG
1154         /*
1155          * We should never call set_task_cpu() on a blocked task,
1156          * ttwu() will sort out the placement.
1157          */
1158         WARN_ON_ONCE(p->state != TASK_RUNNING && p->state != TASK_WAKING &&
1159                         !p->on_rq);
1160
1161         /*
1162          * Migrating fair class task must have p->on_rq = TASK_ON_RQ_MIGRATING,
1163          * because schedstat_wait_{start,end} rebase migrating task's wait_start
1164          * time relying on p->on_rq.
1165          */
1166         WARN_ON_ONCE(p->state == TASK_RUNNING &&
1167                      p->sched_class == &fair_sched_class &&
1168                      (p->on_rq && !task_on_rq_migrating(p)));
1169
1170 #ifdef CONFIG_LOCKDEP
1171         /*
1172          * The caller should hold either p->pi_lock or rq->lock, when changing
1173          * a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks.
1174          *
1175          * sched_move_task() holds both and thus holding either pins the cgroup,
1176          * see task_group().
1177          *
1178          * Furthermore, all task_rq users should acquire both locks, see
1179          * task_rq_lock().
1180          */
1181         WARN_ON_ONCE(debug_locks && !(lockdep_is_held(&p->pi_lock) ||
1182                                       lockdep_is_held(&task_rq(p)->lock)));
1183 #endif
1184         /*
1185          * Clearly, migrating tasks to offline CPUs is a fairly daft thing.
1186          */
1187         WARN_ON_ONCE(!cpu_online(new_cpu));
1188 #endif
1189
1190         trace_sched_migrate_task(p, new_cpu);
1191
1192         if (task_cpu(p) != new_cpu) {
1193                 if (p->sched_class->migrate_task_rq)
1194                         p->sched_class->migrate_task_rq(p);
1195                 p->se.nr_migrations++;
1196                 rseq_migrate(p);
1197                 perf_event_task_migrate(p);
1198         }
1199
1200         __set_task_cpu(p, new_cpu);
1201 }
1202
1203 static void __migrate_swap_task(struct task_struct *p, int cpu)
1204 {
1205         if (task_on_rq_queued(p)) {
1206                 struct rq *src_rq, *dst_rq;
1207                 struct rq_flags srf, drf;
1208
1209                 src_rq = task_rq(p);
1210                 dst_rq = cpu_rq(cpu);
1211
1212                 rq_pin_lock(src_rq, &srf);
1213                 rq_pin_lock(dst_rq, &drf);
1214
1215                 p->on_rq = TASK_ON_RQ_MIGRATING;
1216                 deactivate_task(src_rq, p, 0);
1217                 set_task_cpu(p, cpu);
1218                 activate_task(dst_rq, p, 0);
1219                 p->on_rq = TASK_ON_RQ_QUEUED;
1220                 check_preempt_curr(dst_rq, p, 0);
1221
1222                 rq_unpin_lock(dst_rq, &drf);
1223                 rq_unpin_lock(src_rq, &srf);
1224
1225         } else {
1226                 /*
1227                  * Task isn't running anymore; make it appear like we migrated
1228                  * it before it went to sleep. This means on wakeup we make the
1229                  * previous CPU our target instead of where it really is.
1230                  */
1231                 p->wake_cpu = cpu;
1232         }
1233 }
1234
1235 struct migration_swap_arg {
1236         struct task_struct *src_task, *dst_task;
1237         int src_cpu, dst_cpu;
1238 };
1239
1240 static int migrate_swap_stop(void *data)
1241 {
1242         struct migration_swap_arg *arg = data;
1243         struct rq *src_rq, *dst_rq;
1244         int ret = -EAGAIN;
1245
1246         if (!cpu_active(arg->src_cpu) || !cpu_active(arg->dst_cpu))
1247                 return -EAGAIN;
1248
1249         src_rq = cpu_rq(arg->src_cpu);
1250         dst_rq = cpu_rq(arg->dst_cpu);
1251
1252         double_raw_lock(&arg->src_task->pi_lock,
1253                         &arg->dst_task->pi_lock);
1254         double_rq_lock(src_rq, dst_rq);
1255
1256         if (task_cpu(arg->dst_task) != arg->dst_cpu)
1257                 goto unlock;
1258
1259         if (task_cpu(arg->src_task) != arg->src_cpu)
1260                 goto unlock;
1261
1262         if (!cpumask_test_cpu(arg->dst_cpu, &arg->src_task->cpus_allowed))
1263                 goto unlock;
1264
1265         if (!cpumask_test_cpu(arg->src_cpu, &arg->dst_task->cpus_allowed))
1266                 goto unlock;
1267
1268         __migrate_swap_task(arg->src_task, arg->dst_cpu);
1269         __migrate_swap_task(arg->dst_task, arg->src_cpu);
1270
1271         ret = 0;
1272
1273 unlock:
1274         double_rq_unlock(src_rq, dst_rq);
1275         raw_spin_unlock(&arg->dst_task->pi_lock);
1276         raw_spin_unlock(&arg->src_task->pi_lock);
1277
1278         return ret;
1279 }
1280
1281 /*
1282  * Cross migrate two tasks
1283  */
1284 int migrate_swap(struct task_struct *cur, struct task_struct *p)
1285 {
1286         struct migration_swap_arg arg;
1287         int ret = -EINVAL;
1288
1289         arg = (struct migration_swap_arg){
1290                 .src_task = cur,
1291                 .src_cpu = task_cpu(cur),
1292                 .dst_task = p,
1293                 .dst_cpu = task_cpu(p),
1294         };
1295
1296         if (arg.src_cpu == arg.dst_cpu)
1297                 goto out;
1298
1299         /*
1300          * These three tests are all lockless; this is OK since all of them
1301          * will be re-checked with proper locks held further down the line.
1302          */
1303         if (!cpu_active(arg.src_cpu) || !cpu_active(arg.dst_cpu))
1304                 goto out;
1305
1306         if (!cpumask_test_cpu(arg.dst_cpu, &arg.src_task->cpus_allowed))
1307                 goto out;
1308
1309         if (!cpumask_test_cpu(arg.src_cpu, &arg.dst_task->cpus_allowed))
1310                 goto out;
1311
1312         trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu);
1313         ret = stop_two_cpus(arg.dst_cpu, arg.src_cpu, migrate_swap_stop, &arg);
1314
1315 out:
1316         return ret;
1317 }
1318
1319 /*
1320  * wait_task_inactive - wait for a thread to unschedule.
1321  *
1322  * If @match_state is nonzero, it's the @p->state value just checked and
1323  * not expected to change.  If it changes, i.e. @p might have woken up,
1324  * then return zero.  When we succeed in waiting for @p to be off its CPU,
1325  * we return a positive number (its total switch count).  If a second call
1326  * a short while later returns the same number, the caller can be sure that
1327  * @p has remained unscheduled the whole time.
1328  *
1329  * The caller must ensure that the task *will* unschedule sometime soon,
1330  * else this function might spin for a *long* time. This function can't
1331  * be called with interrupts off, or it may introduce deadlock with
1332  * smp_call_function() if an IPI is sent by the same process we are
1333  * waiting to become inactive.
1334  */
1335 unsigned long wait_task_inactive(struct task_struct *p, long match_state)
1336 {
1337         int running, queued;
1338         struct rq_flags rf;
1339         unsigned long ncsw;
1340         struct rq *rq;
1341
1342         for (;;) {
1343                 /*
1344                  * We do the initial early heuristics without holding
1345                  * any task-queue locks at all. We'll only try to get
1346                  * the runqueue lock when things look like they will
1347                  * work out!
1348                  */
1349                 rq = task_rq(p);
1350
1351                 /*
1352                  * If the task is actively running on another CPU
1353                  * still, just relax and busy-wait without holding
1354                  * any locks.
1355                  *
1356                  * NOTE! Since we don't hold any locks, it's not
1357                  * even sure that "rq" stays as the right runqueue!
1358                  * But we don't care, since "task_running()" will
1359                  * return false if the runqueue has changed and p
1360                  * is actually now running somewhere else!
1361                  */
1362                 while (task_running(rq, p)) {
1363                         if (match_state && unlikely(p->state != match_state))
1364                                 return 0;
1365                         cpu_relax();
1366                 }
1367
1368                 /*
1369                  * Ok, time to look more closely! We need the rq
1370                  * lock now, to be *sure*. If we're wrong, we'll
1371                  * just go back and repeat.
1372                  */
1373                 rq = task_rq_lock(p, &rf);
1374                 trace_sched_wait_task(p);
1375                 running = task_running(rq, p);
1376                 queued = task_on_rq_queued(p);
1377                 ncsw = 0;
1378                 if (!match_state || p->state == match_state)
1379                         ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
1380                 task_rq_unlock(rq, p, &rf);
1381
1382                 /*
1383                  * If it changed from the expected state, bail out now.
1384                  */
1385                 if (unlikely(!ncsw))
1386                         break;
1387
1388                 /*
1389                  * Was it really running after all now that we
1390                  * checked with the proper locks actually held?
1391                  *
1392                  * Oops. Go back and try again..
1393                  */
1394                 if (unlikely(running)) {
1395                         cpu_relax();
1396                         continue;
1397                 }
1398
1399                 /*
1400                  * It's not enough that it's not actively running,
1401                  * it must be off the runqueue _entirely_, and not
1402                  * preempted!
1403                  *
1404                  * So if it was still runnable (but just not actively
1405                  * running right now), it's preempted, and we should
1406                  * yield - it could be a while.
1407                  */
1408                 if (unlikely(queued)) {
1409                         ktime_t to = NSEC_PER_SEC / HZ;
1410
1411                         set_current_state(TASK_UNINTERRUPTIBLE);
1412                         schedule_hrtimeout(&to, HRTIMER_MODE_REL);
1413                         continue;
1414                 }
1415
1416                 /*
1417                  * Ahh, all good. It wasn't running, and it wasn't
1418                  * runnable, which means that it will never become
1419                  * running in the future either. We're all done!
1420                  */
1421                 break;
1422         }
1423
1424         return ncsw;
1425 }
1426
1427 /***
1428  * kick_process - kick a running thread to enter/exit the kernel
1429  * @p: the to-be-kicked thread
1430  *
1431  * Cause a process which is running on another CPU to enter
1432  * kernel-mode, without any delay. (to get signals handled.)
1433  *
1434  * NOTE: this function doesn't have to take the runqueue lock,
1435  * because all it wants to ensure is that the remote task enters
1436  * the kernel. If the IPI races and the task has been migrated
1437  * to another CPU then no harm is done and the purpose has been
1438  * achieved as well.
1439  */
1440 void kick_process(struct task_struct *p)
1441 {
1442         int cpu;
1443
1444         preempt_disable();
1445         cpu = task_cpu(p);
1446         if ((cpu != smp_processor_id()) && task_curr(p))
1447                 smp_send_reschedule(cpu);
1448         preempt_enable();
1449 }
1450 EXPORT_SYMBOL_GPL(kick_process);
1451
1452 /*
1453  * ->cpus_allowed is protected by both rq->lock and p->pi_lock
1454  *
1455  * A few notes on cpu_active vs cpu_online:
1456  *
1457  *  - cpu_active must be a subset of cpu_online
1458  *
1459  *  - on CPU-up we allow per-CPU kthreads on the online && !active CPU,
1460  *    see __set_cpus_allowed_ptr(). At this point the newly online
1461  *    CPU isn't yet part of the sched domains, and balancing will not
1462  *    see it.
1463  *
1464  *  - on CPU-down we clear cpu_active() to mask the sched domains and
1465  *    avoid the load balancer to place new tasks on the to be removed
1466  *    CPU. Existing tasks will remain running there and will be taken
1467  *    off.
1468  *
1469  * This means that fallback selection must not select !active CPUs.
1470  * And can assume that any active CPU must be online. Conversely
1471  * select_task_rq() below may allow selection of !active CPUs in order
1472  * to satisfy the above rules.
1473  */
1474 static int select_fallback_rq(int cpu, struct task_struct *p)
1475 {
1476         int nid = cpu_to_node(cpu);
1477         const struct cpumask *nodemask = NULL;
1478         enum { cpuset, possible, fail } state = cpuset;
1479         int dest_cpu;
1480
1481         /*
1482          * If the node that the CPU is on has been offlined, cpu_to_node()
1483          * will return -1. There is no CPU on the node, and we should
1484          * select the CPU on the other node.
1485          */
1486         if (nid != -1) {
1487                 nodemask = cpumask_of_node(nid);
1488
1489                 /* Look for allowed, online CPU in same node. */
1490                 for_each_cpu(dest_cpu, nodemask) {
1491                         if (!cpu_active(dest_cpu))
1492                                 continue;
1493                         if (cpumask_test_cpu(dest_cpu, &p->cpus_allowed))
1494                                 return dest_cpu;
1495                 }
1496         }
1497
1498         for (;;) {
1499                 /* Any allowed, online CPU? */
1500                 for_each_cpu(dest_cpu, &p->cpus_allowed) {
1501                         if (!is_cpu_allowed(p, dest_cpu))
1502                                 continue;
1503
1504                         goto out;
1505                 }
1506
1507                 /* No more Mr. Nice Guy. */
1508                 switch (state) {
1509                 case cpuset:
1510                         if (IS_ENABLED(CONFIG_CPUSETS)) {
1511                                 cpuset_cpus_allowed_fallback(p);
1512                                 state = possible;
1513                                 break;
1514                         }
1515                         /* Fall-through */
1516                 case possible:
1517                         do_set_cpus_allowed(p, cpu_possible_mask);
1518                         state = fail;
1519                         break;
1520
1521                 case fail:
1522                         BUG();
1523                         break;
1524                 }
1525         }
1526
1527 out:
1528         if (state != cpuset) {
1529                 /*
1530                  * Don't tell them about moving exiting tasks or
1531                  * kernel threads (both mm NULL), since they never
1532                  * leave kernel.
1533                  */
1534                 if (p->mm && printk_ratelimit()) {
1535                         printk_deferred("process %d (%s) no longer affine to cpu%d\n",
1536                                         task_pid_nr(p), p->comm, cpu);
1537                 }
1538         }
1539
1540         return dest_cpu;
1541 }
1542
1543 /*
1544  * The caller (fork, wakeup) owns p->pi_lock, ->cpus_allowed is stable.
1545  */
1546 static inline
1547 int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags)
1548 {
1549         lockdep_assert_held(&p->pi_lock);
1550
1551         if (p->nr_cpus_allowed > 1)
1552                 cpu = p->sched_class->select_task_rq(p, cpu, sd_flags, wake_flags);
1553         else
1554                 cpu = cpumask_any(&p->cpus_allowed);
1555
1556         /*
1557          * In order not to call set_task_cpu() on a blocking task we need
1558          * to rely on ttwu() to place the task on a valid ->cpus_allowed
1559          * CPU.
1560          *
1561          * Since this is common to all placement strategies, this lives here.
1562          *
1563          * [ this allows ->select_task() to simply return task_cpu(p) and
1564          *   not worry about this generic constraint ]
1565          */
1566         if (unlikely(!is_cpu_allowed(p, cpu)))
1567                 cpu = select_fallback_rq(task_cpu(p), p);
1568
1569         return cpu;
1570 }
1571
1572 static void update_avg(u64 *avg, u64 sample)
1573 {
1574         s64 diff = sample - *avg;
1575         *avg += diff >> 3;
1576 }
1577
1578 void sched_set_stop_task(int cpu, struct task_struct *stop)
1579 {
1580         struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
1581         struct task_struct *old_stop = cpu_rq(cpu)->stop;
1582
1583         if (stop) {
1584                 /*
1585                  * Make it appear like a SCHED_FIFO task, its something
1586                  * userspace knows about and won't get confused about.
1587                  *
1588                  * Also, it will make PI more or less work without too
1589                  * much confusion -- but then, stop work should not
1590                  * rely on PI working anyway.
1591                  */
1592                 sched_setscheduler_nocheck(stop, SCHED_FIFO, &param);
1593
1594                 stop->sched_class = &stop_sched_class;
1595         }
1596
1597         cpu_rq(cpu)->stop = stop;
1598
1599         if (old_stop) {
1600                 /*
1601                  * Reset it back to a normal scheduling class so that
1602                  * it can die in pieces.
1603                  */
1604                 old_stop->sched_class = &rt_sched_class;
1605         }
1606 }
1607
1608 #else
1609
1610 static inline int __set_cpus_allowed_ptr(struct task_struct *p,
1611                                          const struct cpumask *new_mask, bool check)
1612 {
1613         return set_cpus_allowed_ptr(p, new_mask);
1614 }
1615
1616 #endif /* CONFIG_SMP */
1617
1618 static void
1619 ttwu_stat(struct task_struct *p, int cpu, int wake_flags)
1620 {
1621         struct rq *rq;
1622
1623         if (!schedstat_enabled())
1624                 return;
1625
1626         rq = this_rq();
1627
1628 #ifdef CONFIG_SMP
1629         if (cpu == rq->cpu) {
1630                 __schedstat_inc(rq->ttwu_local);
1631                 __schedstat_inc(p->se.statistics.nr_wakeups_local);
1632         } else {
1633                 struct sched_domain *sd;
1634
1635                 __schedstat_inc(p->se.statistics.nr_wakeups_remote);
1636                 rcu_read_lock();
1637                 for_each_domain(rq->cpu, sd) {
1638                         if (cpumask_test_cpu(cpu, sched_domain_span(sd))) {
1639                                 __schedstat_inc(sd->ttwu_wake_remote);
1640                                 break;
1641                         }
1642                 }
1643                 rcu_read_unlock();
1644         }
1645
1646         if (wake_flags & WF_MIGRATED)
1647                 __schedstat_inc(p->se.statistics.nr_wakeups_migrate);
1648 #endif /* CONFIG_SMP */
1649
1650         __schedstat_inc(rq->ttwu_count);
1651         __schedstat_inc(p->se.statistics.nr_wakeups);
1652
1653         if (wake_flags & WF_SYNC)
1654                 __schedstat_inc(p->se.statistics.nr_wakeups_sync);
1655 }
1656
1657 static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
1658 {
1659         activate_task(rq, p, en_flags);
1660         p->on_rq = TASK_ON_RQ_QUEUED;
1661
1662         /* If a worker is waking up, notify the workqueue: */
1663         if (p->flags & PF_WQ_WORKER)
1664                 wq_worker_waking_up(p, cpu_of(rq));
1665 }
1666
1667 /*
1668  * Mark the task runnable and perform wakeup-preemption.
1669  */
1670 static void ttwu_do_wakeup(struct rq *rq, struct task_struct *p, int wake_flags,
1671                            struct rq_flags *rf)
1672 {
1673         check_preempt_curr(rq, p, wake_flags);
1674         p->state = TASK_RUNNING;
1675         trace_sched_wakeup(p);
1676
1677 #ifdef CONFIG_SMP
1678         if (p->sched_class->task_woken) {
1679                 /*
1680                  * Our task @p is fully woken up and running; so its safe to
1681                  * drop the rq->lock, hereafter rq is only used for statistics.
1682                  */
1683                 rq_unpin_lock(rq, rf);
1684                 p->sched_class->task_woken(rq, p);
1685                 rq_repin_lock(rq, rf);
1686         }
1687
1688         if (rq->idle_stamp) {
1689                 u64 delta = rq_clock(rq) - rq->idle_stamp;
1690                 u64 max = 2*rq->max_idle_balance_cost;
1691
1692                 update_avg(&rq->avg_idle, delta);
1693
1694                 if (rq->avg_idle > max)
1695                         rq->avg_idle = max;
1696
1697                 rq->idle_stamp = 0;
1698         }
1699 #endif
1700 }
1701
1702 static void
1703 ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags,
1704                  struct rq_flags *rf)
1705 {
1706         int en_flags = ENQUEUE_WAKEUP | ENQUEUE_NOCLOCK;
1707
1708         lockdep_assert_held(&rq->lock);
1709
1710 #ifdef CONFIG_SMP
1711         if (p->sched_contributes_to_load)
1712                 rq->nr_uninterruptible--;
1713
1714         if (wake_flags & WF_MIGRATED)
1715                 en_flags |= ENQUEUE_MIGRATED;
1716 #endif
1717
1718         ttwu_activate(rq, p, en_flags);
1719         ttwu_do_wakeup(rq, p, wake_flags, rf);
1720 }
1721
1722 /*
1723  * Called in case the task @p isn't fully descheduled from its runqueue,
1724  * in this case we must do a remote wakeup. Its a 'light' wakeup though,
1725  * since all we need to do is flip p->state to TASK_RUNNING, since
1726  * the task is still ->on_rq.
1727  */
1728 static int ttwu_remote(struct task_struct *p, int wake_flags)
1729 {
1730         struct rq_flags rf;
1731         struct rq *rq;
1732         int ret = 0;
1733
1734         rq = __task_rq_lock(p, &rf);
1735         if (task_on_rq_queued(p)) {
1736                 /* check_preempt_curr() may use rq clock */
1737                 update_rq_clock(rq);
1738                 ttwu_do_wakeup(rq, p, wake_flags, &rf);
1739                 ret = 1;
1740         }
1741         __task_rq_unlock(rq, &rf);
1742
1743         return ret;
1744 }
1745
1746 #ifdef CONFIG_SMP
1747 void sched_ttwu_pending(void)
1748 {
1749         struct rq *rq = this_rq();
1750         struct llist_node *llist = llist_del_all(&rq->wake_list);
1751         struct task_struct *p, *t;
1752         struct rq_flags rf;
1753
1754         if (!llist)
1755                 return;
1756
1757         rq_lock_irqsave(rq, &rf);
1758         update_rq_clock(rq);
1759
1760         llist_for_each_entry_safe(p, t, llist, wake_entry)
1761                 ttwu_do_activate(rq, p, p->sched_remote_wakeup ? WF_MIGRATED : 0, &rf);
1762
1763         rq_unlock_irqrestore(rq, &rf);
1764 }
1765
1766 void scheduler_ipi(void)
1767 {
1768         /*
1769          * Fold TIF_NEED_RESCHED into the preempt_count; anybody setting
1770          * TIF_NEED_RESCHED remotely (for the first time) will also send
1771          * this IPI.
1772          */
1773         preempt_fold_need_resched();
1774
1775         if (llist_empty(&this_rq()->wake_list) && !got_nohz_idle_kick())
1776                 return;
1777
1778         /*
1779          * Not all reschedule IPI handlers call irq_enter/irq_exit, since
1780          * traditionally all their work was done from the interrupt return
1781          * path. Now that we actually do some work, we need to make sure
1782          * we do call them.
1783          *
1784          * Some archs already do call them, luckily irq_enter/exit nest
1785          * properly.
1786          *
1787          * Arguably we should visit all archs and update all handlers,
1788          * however a fair share of IPIs are still resched only so this would
1789          * somewhat pessimize the simple resched case.
1790          */
1791         irq_enter();
1792         sched_ttwu_pending();
1793
1794         /*
1795          * Check if someone kicked us for doing the nohz idle load balance.
1796          */
1797         if (unlikely(got_nohz_idle_kick())) {
1798                 this_rq()->idle_balance = 1;
1799                 raise_softirq_irqoff(SCHED_SOFTIRQ);
1800         }
1801         irq_exit();
1802 }
1803
1804 static void ttwu_queue_remote(struct task_struct *p, int cpu, int wake_flags)
1805 {
1806         struct rq *rq = cpu_rq(cpu);
1807
1808         p->sched_remote_wakeup = !!(wake_flags & WF_MIGRATED);
1809
1810         if (llist_add(&p->wake_entry, &cpu_rq(cpu)->wake_list)) {
1811                 if (!set_nr_if_polling(rq->idle))
1812                         smp_send_reschedule(cpu);
1813                 else
1814                         trace_sched_wake_idle_without_ipi(cpu);
1815         }
1816 }
1817
1818 void wake_up_if_idle(int cpu)
1819 {
1820         struct rq *rq = cpu_rq(cpu);
1821         struct rq_flags rf;
1822
1823         rcu_read_lock();
1824
1825         if (!is_idle_task(rcu_dereference(rq->curr)))
1826                 goto out;
1827
1828         if (set_nr_if_polling(rq->idle)) {
1829                 trace_sched_wake_idle_without_ipi(cpu);
1830         } else {
1831                 rq_lock_irqsave(rq, &rf);
1832                 if (is_idle_task(rq->curr))
1833                         smp_send_reschedule(cpu);
1834                 /* Else CPU is not idle, do nothing here: */
1835                 rq_unlock_irqrestore(rq, &rf);
1836         }
1837
1838 out:
1839         rcu_read_unlock();
1840 }
1841
1842 bool cpus_share_cache(int this_cpu, int that_cpu)
1843 {
1844         return per_cpu(sd_llc_id, this_cpu) == per_cpu(sd_llc_id, that_cpu);
1845 }
1846 #endif /* CONFIG_SMP */
1847
1848 static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags)
1849 {
1850         struct rq *rq = cpu_rq(cpu);
1851         struct rq_flags rf;
1852
1853 #if defined(CONFIG_SMP)
1854         if (sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) {
1855                 sched_clock_cpu(cpu); /* Sync clocks across CPUs */
1856                 ttwu_queue_remote(p, cpu, wake_flags);
1857                 return;
1858         }
1859 #endif
1860
1861         rq_lock(rq, &rf);
1862         update_rq_clock(rq);
1863         ttwu_do_activate(rq, p, wake_flags, &rf);
1864         rq_unlock(rq, &rf);
1865 }
1866
1867 /*
1868  * Notes on Program-Order guarantees on SMP systems.
1869  *
1870  *  MIGRATION
1871  *
1872  * The basic program-order guarantee on SMP systems is that when a task [t]
1873  * migrates, all its activity on its old CPU [c0] happens-before any subsequent
1874  * execution on its new CPU [c1].
1875  *
1876  * For migration (of runnable tasks) this is provided by the following means:
1877  *
1878  *  A) UNLOCK of the rq(c0)->lock scheduling out task t
1879  *  B) migration for t is required to synchronize *both* rq(c0)->lock and
1880  *     rq(c1)->lock (if not at the same time, then in that order).
1881  *  C) LOCK of the rq(c1)->lock scheduling in task
1882  *
1883  * Transitivity guarantees that B happens after A and C after B.
1884  * Note: we only require RCpc transitivity.
1885  * Note: the CPU doing B need not be c0 or c1
1886  *
1887  * Example:
1888  *
1889  *   CPU0            CPU1            CPU2
1890  *
1891  *   LOCK rq(0)->lock
1892  *   sched-out X
1893  *   sched-in Y
1894  *   UNLOCK rq(0)->lock
1895  *
1896  *                                   LOCK rq(0)->lock // orders against CPU0
1897  *                                   dequeue X
1898  *                                   UNLOCK rq(0)->lock
1899  *
1900  *                                   LOCK rq(1)->lock
1901  *                                   enqueue X
1902  *                                   UNLOCK rq(1)->lock
1903  *
1904  *                   LOCK rq(1)->lock // orders against CPU2
1905  *                   sched-out Z
1906  *                   sched-in X
1907  *                   UNLOCK rq(1)->lock
1908  *
1909  *
1910  *  BLOCKING -- aka. SLEEP + WAKEUP
1911  *
1912  * For blocking we (obviously) need to provide the same guarantee as for
1913  * migration. However the means are completely different as there is no lock
1914  * chain to provide order. Instead we do:
1915  *
1916  *   1) smp_store_release(X->on_cpu, 0)
1917  *   2) smp_cond_load_acquire(!X->on_cpu)
1918  *
1919  * Example:
1920  *
1921  *   CPU0 (schedule)  CPU1 (try_to_wake_up) CPU2 (schedule)
1922  *
1923  *   LOCK rq(0)->lock LOCK X->pi_lock
1924  *   dequeue X
1925  *   sched-out X
1926  *   smp_store_release(X->on_cpu, 0);
1927  *
1928  *                    smp_cond_load_acquire(&X->on_cpu, !VAL);
1929  *                    X->state = WAKING
1930  *                    set_task_cpu(X,2)
1931  *
1932  *                    LOCK rq(2)->lock
1933  *                    enqueue X
1934  *                    X->state = RUNNING
1935  *                    UNLOCK rq(2)->lock
1936  *
1937  *                                          LOCK rq(2)->lock // orders against CPU1
1938  *                                          sched-out Z
1939  *                                          sched-in X
1940  *                                          UNLOCK rq(2)->lock
1941  *
1942  *                    UNLOCK X->pi_lock
1943  *   UNLOCK rq(0)->lock
1944  *
1945  *
1946  * However; for wakeups there is a second guarantee we must provide, namely we
1947  * must observe the state that lead to our wakeup. That is, not only must our
1948  * task observe its own prior state, it must also observe the stores prior to
1949  * its wakeup.
1950  *
1951  * This means that any means of doing remote wakeups must order the CPU doing
1952  * the wakeup against the CPU the task is going to end up running on. This,
1953  * however, is already required for the regular Program-Order guarantee above,
1954  * since the waking CPU is the one issueing the ACQUIRE (smp_cond_load_acquire).
1955  *
1956  */
1957
1958 /**
1959  * try_to_wake_up - wake up a thread
1960  * @p: the thread to be awakened
1961  * @state: the mask of task states that can be woken
1962  * @wake_flags: wake modifier flags (WF_*)
1963  *
1964  * If (@state & @p->state) @p->state = TASK_RUNNING.
1965  *
1966  * If the task was not queued/runnable, also place it back on a runqueue.
1967  *
1968  * Atomic against schedule() which would dequeue a task, also see
1969  * set_current_state().
1970  *
1971  * Return: %true if @p->state changes (an actual wakeup was done),
1972  *         %false otherwise.
1973  */
1974 static int
1975 try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
1976 {
1977         unsigned long flags;
1978         int cpu, success = 0;
1979
1980         /*
1981          * If we are going to wake up a thread waiting for CONDITION we
1982          * need to ensure that CONDITION=1 done by the caller can not be
1983          * reordered with p->state check below. This pairs with mb() in
1984          * set_current_state() the waiting thread does.
1985          */
1986         raw_spin_lock_irqsave(&p->pi_lock, flags);
1987         smp_mb__after_spinlock();
1988         if (!(p->state & state))
1989                 goto out;
1990
1991         trace_sched_waking(p);
1992
1993         /* We're going to change ->state: */
1994         success = 1;
1995         cpu = task_cpu(p);
1996
1997         /*
1998          * Ensure we load p->on_rq _after_ p->state, otherwise it would
1999          * be possible to, falsely, observe p->on_rq == 0 and get stuck
2000          * in smp_cond_load_acquire() below.
2001          *
2002          * sched_ttwu_pending()                 try_to_wake_up()
2003          *   [S] p->on_rq = 1;                  [L] P->state
2004          *       UNLOCK rq->lock  -----.
2005          *                              \
2006          *                               +---   RMB
2007          * schedule()                   /
2008          *       LOCK rq->lock    -----'
2009          *       UNLOCK rq->lock
2010          *
2011          * [task p]
2012          *   [S] p->state = UNINTERRUPTIBLE     [L] p->on_rq
2013          *
2014          * Pairs with the UNLOCK+LOCK on rq->lock from the
2015          * last wakeup of our task and the schedule that got our task
2016          * current.
2017          */
2018         smp_rmb();
2019         if (p->on_rq && ttwu_remote(p, wake_flags))
2020                 goto stat;
2021
2022 #ifdef CONFIG_SMP
2023         /*
2024          * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be
2025          * possible to, falsely, observe p->on_cpu == 0.
2026          *
2027          * One must be running (->on_cpu == 1) in order to remove oneself
2028          * from the runqueue.
2029          *
2030          *  [S] ->on_cpu = 1;   [L] ->on_rq
2031          *      UNLOCK rq->lock
2032          *                      RMB
2033          *      LOCK   rq->lock
2034          *  [S] ->on_rq = 0;    [L] ->on_cpu
2035          *
2036          * Pairs with the full barrier implied in the UNLOCK+LOCK on rq->lock
2037          * from the consecutive calls to schedule(); the first switching to our
2038          * task, the second putting it to sleep.
2039          */
2040         smp_rmb();
2041
2042         /*
2043          * If the owning (remote) CPU is still in the middle of schedule() with
2044          * this task as prev, wait until its done referencing the task.
2045          *
2046          * Pairs with the smp_store_release() in finish_task().
2047          *
2048          * This ensures that tasks getting woken will be fully ordered against
2049          * their previous state and preserve Program Order.
2050          */
2051         smp_cond_load_acquire(&p->on_cpu, !VAL);
2052
2053         p->sched_contributes_to_load = !!task_contributes_to_load(p);
2054         p->state = TASK_WAKING;
2055
2056         if (p->in_iowait) {
2057                 delayacct_blkio_end(p);
2058                 atomic_dec(&task_rq(p)->nr_iowait);
2059         }
2060
2061         cpu = select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, wake_flags);
2062         if (task_cpu(p) != cpu) {
2063                 wake_flags |= WF_MIGRATED;
2064                 set_task_cpu(p, cpu);
2065         }
2066
2067 #else /* CONFIG_SMP */
2068
2069         if (p->in_iowait) {
2070                 delayacct_blkio_end(p);
2071                 atomic_dec(&task_rq(p)->nr_iowait);
2072         }
2073
2074 #endif /* CONFIG_SMP */
2075
2076         ttwu_queue(p, cpu, wake_flags);
2077 stat:
2078         ttwu_stat(p, cpu, wake_flags);
2079 out:
2080         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2081
2082         return success;
2083 }
2084
2085 /**
2086  * try_to_wake_up_local - try to wake up a local task with rq lock held
2087  * @p: the thread to be awakened
2088  * @rf: request-queue flags for pinning
2089  *
2090  * Put @p on the run-queue if it's not already there. The caller must
2091  * ensure that this_rq() is locked, @p is bound to this_rq() and not
2092  * the current task.
2093  */
2094 static void try_to_wake_up_local(struct task_struct *p, struct rq_flags *rf)
2095 {
2096         struct rq *rq = task_rq(p);
2097
2098         if (WARN_ON_ONCE(rq != this_rq()) ||
2099             WARN_ON_ONCE(p == current))
2100                 return;
2101
2102         lockdep_assert_held(&rq->lock);
2103
2104         if (!raw_spin_trylock(&p->pi_lock)) {
2105                 /*
2106                  * This is OK, because current is on_cpu, which avoids it being
2107                  * picked for load-balance and preemption/IRQs are still
2108                  * disabled avoiding further scheduler activity on it and we've
2109                  * not yet picked a replacement task.
2110                  */
2111                 rq_unlock(rq, rf);
2112                 raw_spin_lock(&p->pi_lock);
2113                 rq_relock(rq, rf);
2114         }
2115
2116         if (!(p->state & TASK_NORMAL))
2117                 goto out;
2118
2119         trace_sched_waking(p);
2120
2121         if (!task_on_rq_queued(p)) {
2122                 if (p->in_iowait) {
2123                         delayacct_blkio_end(p);
2124                         atomic_dec(&rq->nr_iowait);
2125                 }
2126                 ttwu_activate(rq, p, ENQUEUE_WAKEUP | ENQUEUE_NOCLOCK);
2127         }
2128
2129         ttwu_do_wakeup(rq, p, 0, rf);
2130         ttwu_stat(p, smp_processor_id(), 0);
2131 out:
2132         raw_spin_unlock(&p->pi_lock);
2133 }
2134
2135 /**
2136  * wake_up_process - Wake up a specific process
2137  * @p: The process to be woken up.
2138  *
2139  * Attempt to wake up the nominated process and move it to the set of runnable
2140  * processes.
2141  *
2142  * Return: 1 if the process was woken up, 0 if it was already running.
2143  *
2144  * It may be assumed that this function implies a write memory barrier before
2145  * changing the task state if and only if any tasks are woken up.
2146  */
2147 int wake_up_process(struct task_struct *p)
2148 {
2149         return try_to_wake_up(p, TASK_NORMAL, 0);
2150 }
2151 EXPORT_SYMBOL(wake_up_process);
2152
2153 int wake_up_state(struct task_struct *p, unsigned int state)
2154 {
2155         return try_to_wake_up(p, state, 0);
2156 }
2157
2158 /*
2159  * Perform scheduler related setup for a newly forked process p.
2160  * p is forked by current.
2161  *
2162  * __sched_fork() is basic setup used by init_idle() too:
2163  */
2164 static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
2165 {
2166         p->on_rq                        = 0;
2167
2168         p->se.on_rq                     = 0;
2169         p->se.exec_start                = 0;
2170         p->se.sum_exec_runtime          = 0;
2171         p->se.prev_sum_exec_runtime     = 0;
2172         p->se.nr_migrations             = 0;
2173         p->se.vruntime                  = 0;
2174         INIT_LIST_HEAD(&p->se.group_node);
2175
2176 #ifdef CONFIG_FAIR_GROUP_SCHED
2177         p->se.cfs_rq                    = NULL;
2178 #endif
2179
2180 #ifdef CONFIG_SCHEDSTATS
2181         /* Even if schedstat is disabled, there should not be garbage */
2182         memset(&p->se.statistics, 0, sizeof(p->se.statistics));
2183 #endif
2184
2185         RB_CLEAR_NODE(&p->dl.rb_node);
2186         init_dl_task_timer(&p->dl);
2187         init_dl_inactive_task_timer(&p->dl);
2188         __dl_clear_params(p);
2189
2190         INIT_LIST_HEAD(&p->rt.run_list);
2191         p->rt.timeout           = 0;
2192         p->rt.time_slice        = sched_rr_timeslice;
2193         p->rt.on_rq             = 0;
2194         p->rt.on_list           = 0;
2195
2196 #ifdef CONFIG_PREEMPT_NOTIFIERS
2197         INIT_HLIST_HEAD(&p->preempt_notifiers);
2198 #endif
2199
2200         init_numa_balancing(clone_flags, p);
2201 }
2202
2203 DEFINE_STATIC_KEY_FALSE(sched_numa_balancing);
2204
2205 #ifdef CONFIG_NUMA_BALANCING
2206
2207 void set_numabalancing_state(bool enabled)
2208 {
2209         if (enabled)
2210                 static_branch_enable(&sched_numa_balancing);
2211         else
2212                 static_branch_disable(&sched_numa_balancing);
2213 }
2214
2215 #ifdef CONFIG_PROC_SYSCTL
2216 int sysctl_numa_balancing(struct ctl_table *table, int write,
2217                          void __user *buffer, size_t *lenp, loff_t *ppos)
2218 {
2219         struct ctl_table t;
2220         int err;
2221         int state = static_branch_likely(&sched_numa_balancing);
2222
2223         if (write && !capable(CAP_SYS_ADMIN))
2224                 return -EPERM;
2225
2226         t = *table;
2227         t.data = &state;
2228         err = proc_dointvec_minmax(&t, write, buffer, lenp, ppos);
2229         if (err < 0)
2230                 return err;
2231         if (write)
2232                 set_numabalancing_state(state);
2233         return err;
2234 }
2235 #endif
2236 #endif
2237
2238 #ifdef CONFIG_SCHEDSTATS
2239
2240 DEFINE_STATIC_KEY_FALSE(sched_schedstats);
2241 static bool __initdata __sched_schedstats = false;
2242
2243 static void set_schedstats(bool enabled)
2244 {
2245         if (enabled)
2246                 static_branch_enable(&sched_schedstats);
2247         else
2248                 static_branch_disable(&sched_schedstats);
2249 }
2250
2251 void force_schedstat_enabled(void)
2252 {
2253         if (!schedstat_enabled()) {
2254                 pr_info("kernel profiling enabled schedstats, disable via kernel.sched_schedstats.\n");
2255                 static_branch_enable(&sched_schedstats);
2256         }
2257 }
2258
2259 static int __init setup_schedstats(char *str)
2260 {
2261         int ret = 0;
2262         if (!str)
2263                 goto out;
2264
2265         /*
2266          * This code is called before jump labels have been set up, so we can't
2267          * change the static branch directly just yet.  Instead set a temporary
2268          * variable so init_schedstats() can do it later.
2269          */
2270         if (!strcmp(str, "enable")) {
2271                 __sched_schedstats = true;
2272                 ret = 1;
2273         } else if (!strcmp(str, "disable")) {
2274                 __sched_schedstats = false;
2275                 ret = 1;
2276         }
2277 out:
2278         if (!ret)
2279                 pr_warn("Unable to parse schedstats=\n");
2280
2281         return ret;
2282 }
2283 __setup("schedstats=", setup_schedstats);
2284
2285 static void __init init_schedstats(void)
2286 {
2287         set_schedstats(__sched_schedstats);
2288 }
2289
2290 #ifdef CONFIG_PROC_SYSCTL
2291 int sysctl_schedstats(struct ctl_table *table, int write,
2292                          void __user *buffer, size_t *lenp, loff_t *ppos)
2293 {
2294         struct ctl_table t;
2295         int err;
2296         int state = static_branch_likely(&sched_schedstats);
2297
2298         if (write && !capable(CAP_SYS_ADMIN))
2299                 return -EPERM;
2300
2301         t = *table;
2302         t.data = &state;
2303         err = proc_dointvec_minmax(&t, write, buffer, lenp, ppos);
2304         if (err < 0)
2305                 return err;
2306         if (write)
2307                 set_schedstats(state);
2308         return err;
2309 }
2310 #endif /* CONFIG_PROC_SYSCTL */
2311 #else  /* !CONFIG_SCHEDSTATS */
2312 static inline void init_schedstats(void) {}
2313 #endif /* CONFIG_SCHEDSTATS */
2314
2315 /*
2316  * fork()/clone()-time setup:
2317  */
2318 int sched_fork(unsigned long clone_flags, struct task_struct *p)
2319 {
2320         unsigned long flags;
2321         int cpu = get_cpu();
2322
2323         __sched_fork(clone_flags, p);
2324         /*
2325          * We mark the process as NEW here. This guarantees that
2326          * nobody will actually run it, and a signal or other external
2327          * event cannot wake it up and insert it on the runqueue either.
2328          */
2329         p->state = TASK_NEW;
2330
2331         /*
2332          * Make sure we do not leak PI boosting priority to the child.
2333          */
2334         p->prio = current->normal_prio;
2335
2336         /*
2337          * Revert to default priority/policy on fork if requested.
2338          */
2339         if (unlikely(p->sched_reset_on_fork)) {
2340                 if (task_has_dl_policy(p) || task_has_rt_policy(p)) {
2341                         p->policy = SCHED_NORMAL;
2342                         p->static_prio = NICE_TO_PRIO(0);
2343                         p->rt_priority = 0;
2344                 } else if (PRIO_TO_NICE(p->static_prio) < 0)
2345                         p->static_prio = NICE_TO_PRIO(0);
2346
2347                 p->prio = p->normal_prio = __normal_prio(p);
2348                 set_load_weight(p, false);
2349
2350                 /*
2351                  * We don't need the reset flag anymore after the fork. It has
2352                  * fulfilled its duty:
2353                  */
2354                 p->sched_reset_on_fork = 0;
2355         }
2356
2357         if (dl_prio(p->prio)) {
2358                 put_cpu();
2359                 return -EAGAIN;
2360         } else if (rt_prio(p->prio)) {
2361                 p->sched_class = &rt_sched_class;
2362         } else {
2363                 p->sched_class = &fair_sched_class;
2364         }
2365
2366         init_entity_runnable_average(&p->se);
2367
2368         /*
2369          * The child is not yet in the pid-hash so no cgroup attach races,
2370          * and the cgroup is pinned to this child due to cgroup_fork()
2371          * is ran before sched_fork().
2372          *
2373          * Silence PROVE_RCU.
2374          */
2375         raw_spin_lock_irqsave(&p->pi_lock, flags);
2376         /*
2377          * We're setting the CPU for the first time, we don't migrate,
2378          * so use __set_task_cpu().
2379          */
2380         __set_task_cpu(p, cpu);
2381         if (p->sched_class->task_fork)
2382                 p->sched_class->task_fork(p);
2383         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2384
2385 #ifdef CONFIG_SCHED_INFO
2386         if (likely(sched_info_on()))
2387                 memset(&p->sched_info, 0, sizeof(p->sched_info));
2388 #endif
2389 #if defined(CONFIG_SMP)
2390         p->on_cpu = 0;
2391 #endif
2392         init_task_preempt_count(p);
2393 #ifdef CONFIG_SMP
2394         plist_node_init(&p->pushable_tasks, MAX_PRIO);
2395         RB_CLEAR_NODE(&p->pushable_dl_tasks);
2396 #endif
2397
2398         put_cpu();
2399         return 0;
2400 }
2401
2402 unsigned long to_ratio(u64 period, u64 runtime)
2403 {
2404         if (runtime == RUNTIME_INF)
2405                 return BW_UNIT;
2406
2407         /*
2408          * Doing this here saves a lot of checks in all
2409          * the calling paths, and returning zero seems
2410          * safe for them anyway.
2411          */
2412         if (period == 0)
2413                 return 0;
2414
2415         return div64_u64(runtime << BW_SHIFT, period);
2416 }
2417
2418 /*
2419  * wake_up_new_task - wake up a newly created task for the first time.
2420  *
2421  * This function will do some initial scheduler statistics housekeeping
2422  * that must be done for every newly created context, then puts the task
2423  * on the runqueue and wakes it.
2424  */
2425 void wake_up_new_task(struct task_struct *p)
2426 {
2427         struct rq_flags rf;
2428         struct rq *rq;
2429
2430         raw_spin_lock_irqsave(&p->pi_lock, rf.flags);
2431         p->state = TASK_RUNNING;
2432 #ifdef CONFIG_SMP
2433         /*
2434          * Fork balancing, do it here and not earlier because:
2435          *  - cpus_allowed can change in the fork path
2436          *  - any previously selected CPU might disappear through hotplug
2437          *
2438          * Use __set_task_cpu() to avoid calling sched_class::migrate_task_rq,
2439          * as we're not fully set-up yet.
2440          */
2441         p->recent_used_cpu = task_cpu(p);
2442         __set_task_cpu(p, select_task_rq(p, task_cpu(p), SD_BALANCE_FORK, 0));
2443 #endif
2444         rq = __task_rq_lock(p, &rf);
2445         update_rq_clock(rq);
2446         post_init_entity_util_avg(&p->se);
2447
2448         activate_task(rq, p, ENQUEUE_NOCLOCK);
2449         p->on_rq = TASK_ON_RQ_QUEUED;
2450         trace_sched_wakeup_new(p);
2451         check_preempt_curr(rq, p, WF_FORK);
2452 #ifdef CONFIG_SMP
2453         if (p->sched_class->task_woken) {
2454                 /*
2455                  * Nothing relies on rq->lock after this, so its fine to
2456                  * drop it.
2457                  */
2458                 rq_unpin_lock(rq, &rf);
2459                 p->sched_class->task_woken(rq, p);
2460                 rq_repin_lock(rq, &rf);
2461         }
2462 #endif
2463         task_rq_unlock(rq, p, &rf);
2464 }
2465
2466 #ifdef CONFIG_PREEMPT_NOTIFIERS
2467
2468 static DEFINE_STATIC_KEY_FALSE(preempt_notifier_key);
2469
2470 void preempt_notifier_inc(void)
2471 {
2472         static_branch_inc(&preempt_notifier_key);
2473 }
2474 EXPORT_SYMBOL_GPL(preempt_notifier_inc);
2475
2476 void preempt_notifier_dec(void)
2477 {
2478         static_branch_dec(&preempt_notifier_key);
2479 }
2480 EXPORT_SYMBOL_GPL(preempt_notifier_dec);
2481
2482 /**
2483  * preempt_notifier_register - tell me when current is being preempted & rescheduled
2484  * @notifier: notifier struct to register
2485  */
2486 void preempt_notifier_register(struct preempt_notifier *notifier)
2487 {
2488         if (!static_branch_unlikely(&preempt_notifier_key))
2489                 WARN(1, "registering preempt_notifier while notifiers disabled\n");
2490
2491         hlist_add_head(&notifier->link, &current->preempt_notifiers);
2492 }
2493 EXPORT_SYMBOL_GPL(preempt_notifier_register);
2494
2495 /**
2496  * preempt_notifier_unregister - no longer interested in preemption notifications
2497  * @notifier: notifier struct to unregister
2498  *
2499  * This is *not* safe to call from within a preemption notifier.
2500  */
2501 void preempt_notifier_unregister(struct preempt_notifier *notifier)
2502 {
2503         hlist_del(&notifier->link);
2504 }
2505 EXPORT_SYMBOL_GPL(preempt_notifier_unregister);
2506
2507 static void __fire_sched_in_preempt_notifiers(struct task_struct *curr)
2508 {
2509         struct preempt_notifier *notifier;
2510
2511         hlist_for_each_entry(notifier, &curr->preempt_notifiers, link)
2512                 notifier->ops->sched_in(notifier, raw_smp_processor_id());
2513 }
2514
2515 static __always_inline void fire_sched_in_preempt_notifiers(struct task_struct *curr)
2516 {
2517         if (static_branch_unlikely(&preempt_notifier_key))
2518                 __fire_sched_in_preempt_notifiers(curr);
2519 }
2520
2521 static void
2522 __fire_sched_out_preempt_notifiers(struct task_struct *curr,
2523                                    struct task_struct *next)
2524 {
2525         struct preempt_notifier *notifier;
2526
2527         hlist_for_each_entry(notifier, &curr->preempt_notifiers, link)
2528                 notifier->ops->sched_out(notifier, next);
2529 }
2530
2531 static __always_inline void
2532 fire_sched_out_preempt_notifiers(struct task_struct *curr,
2533                                  struct task_struct *next)
2534 {
2535         if (static_branch_unlikely(&preempt_notifier_key))
2536                 __fire_sched_out_preempt_notifiers(curr, next);
2537 }
2538
2539 #else /* !CONFIG_PREEMPT_NOTIFIERS */
2540
2541 static inline void fire_sched_in_preempt_notifiers(struct task_struct *curr)
2542 {
2543 }
2544
2545 static inline void
2546 fire_sched_out_preempt_notifiers(struct task_struct *curr,
2547                                  struct task_struct *next)
2548 {
2549 }
2550
2551 #endif /* CONFIG_PREEMPT_NOTIFIERS */
2552
2553 static inline void prepare_task(struct task_struct *next)
2554 {
2555 #ifdef CONFIG_SMP
2556         /*
2557          * Claim the task as running, we do this before switching to it
2558          * such that any running task will have this set.
2559          */
2560         next->on_cpu = 1;
2561 #endif
2562 }
2563
2564 static inline void finish_task(struct task_struct *prev)
2565 {
2566 #ifdef CONFIG_SMP
2567         /*
2568          * After ->on_cpu is cleared, the task can be moved to a different CPU.
2569          * We must ensure this doesn't happen until the switch is completely
2570          * finished.
2571          *
2572          * In particular, the load of prev->state in finish_task_switch() must
2573          * happen before this.
2574          *
2575          * Pairs with the smp_cond_load_acquire() in try_to_wake_up().
2576          */
2577         smp_store_release(&prev->on_cpu, 0);
2578 #endif
2579 }
2580
2581 static inline void
2582 prepare_lock_switch(struct rq *rq, struct task_struct *next, struct rq_flags *rf)
2583 {
2584         /*
2585          * Since the runqueue lock will be released by the next
2586          * task (which is an invalid locking op but in the case
2587          * of the scheduler it's an obvious special-case), so we
2588          * do an early lockdep release here:
2589          */
2590         rq_unpin_lock(rq, rf);
2591         spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
2592 #ifdef CONFIG_DEBUG_SPINLOCK
2593         /* this is a valid case when another task releases the spinlock */
2594         rq->lock.owner = next;
2595 #endif
2596 }
2597
2598 static inline void finish_lock_switch(struct rq *rq)
2599 {
2600         /*
2601          * If we are tracking spinlock dependencies then we have to
2602          * fix up the runqueue lock - which gets 'carried over' from
2603          * prev into current:
2604          */
2605         spin_acquire(&rq->lock.dep_map, 0, 0, _THIS_IP_);
2606         raw_spin_unlock_irq(&rq->lock);
2607 }
2608
2609 /*
2610  * NOP if the arch has not defined these:
2611  */
2612
2613 #ifndef prepare_arch_switch
2614 # define prepare_arch_switch(next)      do { } while (0)
2615 #endif
2616
2617 #ifndef finish_arch_post_lock_switch
2618 # define finish_arch_post_lock_switch() do { } while (0)
2619 #endif
2620
2621 /**
2622  * prepare_task_switch - prepare to switch tasks
2623  * @rq: the runqueue preparing to switch
2624  * @prev: the current task that is being switched out
2625  * @next: the task we are going to switch to.
2626  *
2627  * This is called with the rq lock held and interrupts off. It must
2628  * be paired with a subsequent finish_task_switch after the context
2629  * switch.
2630  *
2631  * prepare_task_switch sets up locking and calls architecture specific
2632  * hooks.
2633  */
2634 static inline void
2635 prepare_task_switch(struct rq *rq, struct task_struct *prev,
2636                     struct task_struct *next)
2637 {
2638         kcov_prepare_switch(prev);
2639         sched_info_switch(rq, prev, next);
2640         perf_event_task_sched_out(prev, next);
2641         rseq_preempt(prev);
2642         fire_sched_out_preempt_notifiers(prev, next);
2643         prepare_task(next);
2644         prepare_arch_switch(next);
2645 }
2646
2647 /**
2648  * finish_task_switch - clean up after a task-switch
2649  * @prev: the thread we just switched away from.
2650  *
2651  * finish_task_switch must be called after the context switch, paired
2652  * with a prepare_task_switch call before the context switch.
2653  * finish_task_switch will reconcile locking set up by prepare_task_switch,
2654  * and do any other architecture-specific cleanup actions.
2655  *
2656  * Note that we may have delayed dropping an mm in context_switch(). If
2657  * so, we finish that here outside of the runqueue lock. (Doing it
2658  * with the lock held can cause deadlocks; see schedule() for
2659  * details.)
2660  *
2661  * The context switch have flipped the stack from under us and restored the
2662  * local variables which were saved when this task called schedule() in the
2663  * past. prev == current is still correct but we need to recalculate this_rq
2664  * because prev may have moved to another CPU.
2665  */
2666 static struct rq *finish_task_switch(struct task_struct *prev)
2667         __releases(rq->lock)
2668 {
2669         struct rq *rq = this_rq();
2670         struct mm_struct *mm = rq->prev_mm;
2671         long prev_state;
2672
2673         /*
2674          * The previous task will have left us with a preempt_count of 2
2675          * because it left us after:
2676          *
2677          *      schedule()
2678          *        preempt_disable();                    // 1
2679          *        __schedule()
2680          *          raw_spin_lock_irq(&rq->lock)        // 2
2681          *
2682          * Also, see FORK_PREEMPT_COUNT.
2683          */
2684         if (WARN_ONCE(preempt_count() != 2*PREEMPT_DISABLE_OFFSET,
2685                       "corrupted preempt_count: %s/%d/0x%x\n",
2686                       current->comm, current->pid, preempt_count()))
2687                 preempt_count_set(FORK_PREEMPT_COUNT);
2688
2689         rq->prev_mm = NULL;
2690
2691         /*
2692          * A task struct has one reference for the use as "current".
2693          * If a task dies, then it sets TASK_DEAD in tsk->state and calls
2694          * schedule one last time. The schedule call will never return, and
2695          * the scheduled task must drop that reference.
2696          *
2697          * We must observe prev->state before clearing prev->on_cpu (in
2698          * finish_task), otherwise a concurrent wakeup can get prev
2699          * running on another CPU and we could rave with its RUNNING -> DEAD
2700          * transition, resulting in a double drop.
2701          */
2702         prev_state = prev->state;
2703         vtime_task_switch(prev);
2704         perf_event_task_sched_in(prev, current);
2705         finish_task(prev);
2706         finish_lock_switch(rq);
2707         finish_arch_post_lock_switch();
2708         kcov_finish_switch(current);
2709
2710         fire_sched_in_preempt_notifiers(current);
2711         /*
2712          * When switching through a kernel thread, the loop in
2713          * membarrier_{private,global}_expedited() may have observed that
2714          * kernel thread and not issued an IPI. It is therefore possible to
2715          * schedule between user->kernel->user threads without passing though
2716          * switch_mm(). Membarrier requires a barrier after storing to
2717          * rq->curr, before returning to userspace, so provide them here:
2718          *
2719          * - a full memory barrier for {PRIVATE,GLOBAL}_EXPEDITED, implicitly
2720          *   provided by mmdrop(),
2721          * - a sync_core for SYNC_CORE.
2722          */
2723         if (mm) {
2724                 membarrier_mm_sync_core_before_usermode(mm);
2725                 mmdrop(mm);
2726         }
2727         if (unlikely(prev_state & (TASK_DEAD|TASK_PARKED))) {
2728                 switch (prev_state) {
2729                 case TASK_DEAD:
2730                         if (prev->sched_class->task_dead)
2731                                 prev->sched_class->task_dead(prev);
2732
2733                         /*
2734                          * Remove function-return probe instances associated with this
2735                          * task and put them back on the free list.
2736                          */
2737                         kprobe_flush_task(prev);
2738
2739                         /* Task is done with its stack. */
2740                         put_task_stack(prev);
2741
2742                         put_task_struct(prev);
2743                         break;
2744
2745                 case TASK_PARKED:
2746                         kthread_park_complete(prev);
2747                         break;
2748                 }
2749         }
2750
2751         tick_nohz_task_switch();
2752         return rq;
2753 }
2754
2755 #ifdef CONFIG_SMP
2756
2757 /* rq->lock is NOT held, but preemption is disabled */
2758 static void __balance_callback(struct rq *rq)
2759 {
2760         struct callback_head *head, *next;
2761         void (*func)(struct rq *rq);
2762         unsigned long flags;
2763
2764         raw_spin_lock_irqsave(&rq->lock, flags);
2765         head = rq->balance_callback;
2766         rq->balance_callback = NULL;
2767         while (head) {
2768                 func = (void (*)(struct rq *))head->func;
2769                 next = head->next;
2770                 head->next = NULL;
2771                 head = next;
2772
2773                 func(rq);
2774         }
2775         raw_spin_unlock_irqrestore(&rq->lock, flags);
2776 }
2777
2778 static inline void balance_callback(struct rq *rq)
2779 {
2780         if (unlikely(rq->balance_callback))
2781                 __balance_callback(rq);
2782 }
2783
2784 #else
2785
2786 static inline void balance_callback(struct rq *rq)
2787 {
2788 }
2789
2790 #endif
2791
2792 /**
2793  * schedule_tail - first thing a freshly forked thread must call.
2794  * @prev: the thread we just switched away from.
2795  */
2796 asmlinkage __visible void schedule_tail(struct task_struct *prev)
2797         __releases(rq->lock)
2798 {
2799         struct rq *rq;
2800
2801         /*
2802          * New tasks start with FORK_PREEMPT_COUNT, see there and
2803          * finish_task_switch() for details.
2804          *
2805          * finish_task_switch() will drop rq->lock() and lower preempt_count
2806          * and the preempt_enable() will end up enabling preemption (on
2807          * PREEMPT_COUNT kernels).
2808          */
2809
2810         rq = finish_task_switch(prev);
2811         balance_callback(rq);
2812         preempt_enable();
2813
2814         if (current->set_child_tid)
2815                 put_user(task_pid_vnr(current), current->set_child_tid);
2816 }
2817
2818 /*
2819  * context_switch - switch to the new MM and the new thread's register state.
2820  */
2821 static __always_inline struct rq *
2822 context_switch(struct rq *rq, struct task_struct *prev,
2823                struct task_struct *next, struct rq_flags *rf)
2824 {
2825         struct mm_struct *mm, *oldmm;
2826
2827         prepare_task_switch(rq, prev, next);
2828
2829         mm = next->mm;
2830         oldmm = prev->active_mm;
2831         /*
2832          * For paravirt, this is coupled with an exit in switch_to to
2833          * combine the page table reload and the switch backend into
2834          * one hypercall.
2835          */
2836         arch_start_context_switch(prev);
2837
2838         /*
2839          * If mm is non-NULL, we pass through switch_mm(). If mm is
2840          * NULL, we will pass through mmdrop() in finish_task_switch().
2841          * Both of these contain the full memory barrier required by
2842          * membarrier after storing to rq->curr, before returning to
2843          * user-space.
2844          */
2845         if (!mm) {
2846                 next->active_mm = oldmm;
2847                 mmgrab(oldmm);
2848                 enter_lazy_tlb(oldmm, next);
2849         } else
2850                 switch_mm_irqs_off(oldmm, mm, next);
2851
2852         if (!prev->mm) {
2853                 prev->active_mm = NULL;
2854                 rq->prev_mm = oldmm;
2855         }
2856
2857         rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP);
2858
2859         prepare_lock_switch(rq, next, rf);
2860
2861         /* Here we just switch the register state and the stack. */
2862         switch_to(prev, next, prev);
2863         barrier();
2864
2865         return finish_task_switch(prev);
2866 }
2867
2868 /*
2869  * nr_running and nr_context_switches:
2870  *
2871  * externally visible scheduler statistics: current number of runnable
2872  * threads, total number of context switches performed since bootup.
2873  */
2874 unsigned long nr_running(void)
2875 {
2876         unsigned long i, sum = 0;
2877
2878         for_each_online_cpu(i)
2879                 sum += cpu_rq(i)->nr_running;
2880
2881         return sum;
2882 }
2883
2884 /*
2885  * Check if only the current task is running on the CPU.
2886  *
2887  * Caution: this function does not check that the caller has disabled
2888  * preemption, thus the result might have a time-of-check-to-time-of-use
2889  * race.  The caller is responsible to use it correctly, for example:
2890  *
2891  * - from a non-preemptable section (of course)
2892  *
2893  * - from a thread that is bound to a single CPU
2894  *
2895  * - in a loop with very short iterations (e.g. a polling loop)
2896  */
2897 bool single_task_running(void)
2898 {
2899         return raw_rq()->nr_running == 1;
2900 }
2901 EXPORT_SYMBOL(single_task_running);
2902
2903 unsigned long long nr_context_switches(void)
2904 {
2905         int i;
2906         unsigned long long sum = 0;
2907
2908         for_each_possible_cpu(i)
2909                 sum += cpu_rq(i)->nr_switches;
2910
2911         return sum;
2912 }
2913
2914 /*
2915  * IO-wait accounting, and how its mostly bollocks (on SMP).
2916  *
2917  * The idea behind IO-wait account is to account the idle time that we could
2918  * have spend running if it were not for IO. That is, if we were to improve the
2919  * storage performance, we'd have a proportional reduction in IO-wait time.
2920  *
2921  * This all works nicely on UP, where, when a task blocks on IO, we account
2922  * idle time as IO-wait, because if the storage were faster, it could've been
2923  * running and we'd not be idle.
2924  *
2925  * This has been extended to SMP, by doing the same for each CPU. This however
2926  * is broken.
2927  *
2928  * Imagine for instance the case where two tasks block on one CPU, only the one
2929  * CPU will have IO-wait accounted, while the other has regular idle. Even
2930  * though, if the storage were faster, both could've ran at the same time,
2931  * utilising both CPUs.
2932  *
2933  * This means, that when looking globally, the current IO-wait accounting on
2934  * SMP is a lower bound, by reason of under accounting.
2935  *
2936  * Worse, since the numbers are provided per CPU, they are sometimes
2937  * interpreted per CPU, and that is nonsensical. A blocked task isn't strictly
2938  * associated with any one particular CPU, it can wake to another CPU than it
2939  * blocked on. This means the per CPU IO-wait number is meaningless.
2940  *
2941  * Task CPU affinities can make all that even more 'interesting'.
2942  */
2943
2944 unsigned long nr_iowait(void)
2945 {
2946         unsigned long i, sum = 0;
2947
2948         for_each_possible_cpu(i)
2949                 sum += atomic_read(&cpu_rq(i)->nr_iowait);
2950
2951         return sum;
2952 }
2953
2954 /*
2955  * Consumers of these two interfaces, like for example the cpufreq menu
2956  * governor are using nonsensical data. Boosting frequency for a CPU that has
2957  * IO-wait which might not even end up running the task when it does become
2958  * runnable.
2959  */
2960
2961 unsigned long nr_iowait_cpu(int cpu)
2962 {
2963         struct rq *this = cpu_rq(cpu);
2964         return atomic_read(&this->nr_iowait);
2965 }
2966
2967 void get_iowait_load(unsigned long *nr_waiters, unsigned long *load)
2968 {
2969         struct rq *rq = this_rq();
2970         *nr_waiters = atomic_read(&rq->nr_iowait);
2971         *load = rq->load.weight;
2972 }
2973
2974 #ifdef CONFIG_SMP
2975
2976 /*
2977  * sched_exec - execve() is a valuable balancing opportunity, because at
2978  * this point the task has the smallest effective memory and cache footprint.
2979  */
2980 void sched_exec(void)
2981 {
2982         struct task_struct *p = current;
2983         unsigned long flags;
2984         int dest_cpu;
2985
2986         raw_spin_lock_irqsave(&p->pi_lock, flags);
2987         dest_cpu = p->sched_class->select_task_rq(p, task_cpu(p), SD_BALANCE_EXEC, 0);
2988         if (dest_cpu == smp_processor_id())
2989                 goto unlock;
2990
2991         if (likely(cpu_active(dest_cpu))) {
2992                 struct migration_arg arg = { p, dest_cpu };
2993
2994                 raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2995                 stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg);
2996                 return;
2997         }
2998 unlock:
2999         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
3000 }
3001
3002 #endif
3003
3004 DEFINE_PER_CPU(struct kernel_stat, kstat);
3005 DEFINE_PER_CPU(struct kernel_cpustat, kernel_cpustat);
3006
3007 EXPORT_PER_CPU_SYMBOL(kstat);
3008 EXPORT_PER_CPU_SYMBOL(kernel_cpustat);
3009
3010 /*
3011  * The function fair_sched_class.update_curr accesses the struct curr
3012  * and its field curr->exec_start; when called from task_sched_runtime(),
3013  * we observe a high rate of cache misses in practice.
3014  * Prefetching this data results in improved performance.
3015  */
3016 static inline void prefetch_curr_exec_start(struct task_struct *p)
3017 {
3018 #ifdef CONFIG_FAIR_GROUP_SCHED
3019         struct sched_entity *curr = (&p->se)->cfs_rq->curr;
3020 #else
3021         struct sched_entity *curr = (&task_rq(p)->cfs)->curr;
3022 #endif
3023         prefetch(curr);
3024         prefetch(&curr->exec_start);
3025 }
3026
3027 /*
3028  * Return accounted runtime for the task.
3029  * In case the task is currently running, return the runtime plus current's
3030  * pending runtime that have not been accounted yet.
3031  */
3032 unsigned long long task_sched_runtime(struct task_struct *p)
3033 {
3034         struct rq_flags rf;
3035         struct rq *rq;
3036         u64 ns;
3037
3038 #if defined(CONFIG_64BIT) && defined(CONFIG_SMP)
3039         /*
3040          * 64-bit doesn't need locks to atomically read a 64-bit value.
3041          * So we have a optimization chance when the task's delta_exec is 0.
3042          * Reading ->on_cpu is racy, but this is ok.
3043          *
3044          * If we race with it leaving CPU, we'll take a lock. So we're correct.
3045          * If we race with it entering CPU, unaccounted time is 0. This is
3046          * indistinguishable from the read occurring a few cycles earlier.
3047          * If we see ->on_cpu without ->on_rq, the task is leaving, and has
3048          * been accounted, so we're correct here as well.
3049          */
3050         if (!p->on_cpu || !task_on_rq_queued(p))
3051                 return p->se.sum_exec_runtime;
3052 #endif
3053
3054         rq = task_rq_lock(p, &rf);
3055         /*
3056          * Must be ->curr _and_ ->on_rq.  If dequeued, we would
3057          * project cycles that may never be accounted to this
3058          * thread, breaking clock_gettime().
3059          */
3060         if (task_current(rq, p) && task_on_rq_queued(p)) {
3061                 prefetch_curr_exec_start(p);
3062                 update_rq_clock(rq);
3063                 p->sched_class->update_curr(rq);
3064         }
3065         ns = p->se.sum_exec_runtime;
3066         task_rq_unlock(rq, p, &rf);
3067
3068         return ns;
3069 }
3070
3071 /*
3072  * This function gets called by the timer code, with HZ frequency.
3073  * We call it with interrupts disabled.
3074  */
3075 void scheduler_tick(void)
3076 {
3077         int cpu = smp_processor_id();
3078         struct rq *rq = cpu_rq(cpu);
3079         struct task_struct *curr = rq->curr;
3080         struct rq_flags rf;
3081
3082         sched_clock_tick();
3083
3084         rq_lock(rq, &rf);
3085
3086         update_rq_clock(rq);
3087         curr->sched_class->task_tick(rq, curr, 0);
3088         cpu_load_update_active(rq);
3089         calc_global_load_tick(rq);
3090
3091         rq_unlock(rq, &rf);
3092
3093         perf_event_task_tick();
3094
3095 #ifdef CONFIG_SMP
3096         rq->idle_balance = idle_cpu(cpu);
3097         trigger_load_balance(rq);
3098 #endif
3099 }
3100
3101 #ifdef CONFIG_NO_HZ_FULL
3102
3103 struct tick_work {
3104         int                     cpu;
3105         struct delayed_work     work;
3106 };
3107
3108 static struct tick_work __percpu *tick_work_cpu;
3109
3110 static void sched_tick_remote(struct work_struct *work)
3111 {
3112         struct delayed_work *dwork = to_delayed_work(work);
3113         struct tick_work *twork = container_of(dwork, struct tick_work, work);
3114         int cpu = twork->cpu;
3115         struct rq *rq = cpu_rq(cpu);
3116         struct rq_flags rf;
3117
3118         /*
3119          * Handle the tick only if it appears the remote CPU is running in full
3120          * dynticks mode. The check is racy by nature, but missing a tick or
3121          * having one too much is no big deal because the scheduler tick updates
3122          * statistics and checks timeslices in a time-independent way, regardless
3123          * of when exactly it is running.
3124          */
3125         if (!idle_cpu(cpu) && tick_nohz_tick_stopped_cpu(cpu)) {
3126                 struct task_struct *curr;
3127                 u64 delta;
3128
3129                 rq_lock_irq(rq, &rf);
3130                 update_rq_clock(rq);
3131                 curr = rq->curr;
3132                 delta = rq_clock_task(rq) - curr->se.exec_start;
3133
3134                 /*
3135                  * Make sure the next tick runs within a reasonable
3136                  * amount of time.
3137                  */
3138                 WARN_ON_ONCE(delta > (u64)NSEC_PER_SEC * 3);
3139                 curr->sched_class->task_tick(rq, curr, 0);
3140                 rq_unlock_irq(rq, &rf);
3141         }
3142
3143         /*
3144          * Run the remote tick once per second (1Hz). This arbitrary
3145          * frequency is large enough to avoid overload but short enough
3146          * to keep scheduler internal stats reasonably up to date.
3147          */
3148         queue_delayed_work(system_unbound_wq, dwork, HZ);
3149 }
3150
3151 static void sched_tick_start(int cpu)
3152 {
3153         struct tick_work *twork;
3154
3155         if (housekeeping_cpu(cpu, HK_FLAG_TICK))
3156                 return;
3157
3158         WARN_ON_ONCE(!tick_work_cpu);
3159
3160         twork = per_cpu_ptr(tick_work_cpu, cpu);
3161         twork->cpu = cpu;
3162         INIT_DELAYED_WORK(&twork->work, sched_tick_remote);
3163         queue_delayed_work(system_unbound_wq, &twork->work, HZ);
3164 }
3165
3166 #ifdef CONFIG_HOTPLUG_CPU
3167 static void sched_tick_stop(int cpu)
3168 {
3169         struct tick_work *twork;
3170
3171         if (housekeeping_cpu(cpu, HK_FLAG_TICK))
3172                 return;
3173
3174         WARN_ON_ONCE(!tick_work_cpu);
3175
3176         twork = per_cpu_ptr(tick_work_cpu, cpu);
3177         cancel_delayed_work_sync(&twork->work);
3178 }
3179 #endif /* CONFIG_HOTPLUG_CPU */
3180
3181 int __init sched_tick_offload_init(void)
3182 {
3183         tick_work_cpu = alloc_percpu(struct tick_work);
3184         BUG_ON(!tick_work_cpu);
3185
3186         return 0;
3187 }
3188
3189 #else /* !CONFIG_NO_HZ_FULL */
3190 static inline void sched_tick_start(int cpu) { }
3191 static inline void sched_tick_stop(int cpu) { }
3192 #endif
3193
3194 #if defined(CONFIG_PREEMPT) && (defined(CONFIG_DEBUG_PREEMPT) || \
3195                                 defined(CONFIG_PREEMPT_TRACER))
3196 /*
3197  * If the value passed in is equal to the current preempt count
3198  * then we just disabled preemption. Start timing the latency.
3199  */
3200 static inline void preempt_latency_start(int val)
3201 {
3202         if (preempt_count() == val) {
3203                 unsigned long ip = get_lock_parent_ip();
3204 #ifdef CONFIG_DEBUG_PREEMPT
3205                 current->preempt_disable_ip = ip;
3206 #endif
3207                 trace_preempt_off(CALLER_ADDR0, ip);
3208         }
3209 }
3210
3211 void preempt_count_add(int val)
3212 {
3213 #ifdef CONFIG_DEBUG_PREEMPT
3214         /*
3215          * Underflow?
3216          */
3217         if (DEBUG_LOCKS_WARN_ON((preempt_count() < 0)))
3218                 return;
3219 #endif
3220         __preempt_count_add(val);
3221 #ifdef CONFIG_DEBUG_PREEMPT
3222         /*
3223          * Spinlock count overflowing soon?
3224          */
3225         DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
3226                                 PREEMPT_MASK - 10);
3227 #endif
3228         preempt_latency_start(val);
3229 }
3230 EXPORT_SYMBOL(preempt_count_add);
3231 NOKPROBE_SYMBOL(preempt_count_add);
3232
3233 /*
3234  * If the value passed in equals to the current preempt count
3235  * then we just enabled preemption. Stop timing the latency.
3236  */
3237 static inline void preempt_latency_stop(int val)
3238 {
3239         if (preempt_count() == val)
3240                 trace_preempt_on(CALLER_ADDR0, get_lock_parent_ip());
3241 }
3242
3243 void preempt_count_sub(int val)
3244 {
3245 #ifdef CONFIG_DEBUG_PREEMPT
3246         /*
3247          * Underflow?
3248          */
3249         if (DEBUG_LOCKS_WARN_ON(val > preempt_count()))
3250                 return;
3251         /*
3252          * Is the spinlock portion underflowing?
3253          */
3254         if (DEBUG_LOCKS_WARN_ON((val < PREEMPT_MASK) &&
3255                         !(preempt_count() & PREEMPT_MASK)))
3256                 return;
3257 #endif
3258
3259         preempt_latency_stop(val);
3260         __preempt_count_sub(val);
3261 }
3262 EXPORT_SYMBOL(preempt_count_sub);
3263 NOKPROBE_SYMBOL(preempt_count_sub);
3264
3265 #else
3266 static inline void preempt_latency_start(int val) { }
3267 static inline void preempt_latency_stop(int val) { }
3268 #endif
3269
3270 static inline unsigned long get_preempt_disable_ip(struct task_struct *p)
3271 {
3272 #ifdef CONFIG_DEBUG_PREEMPT
3273         return p->preempt_disable_ip;
3274 #else
3275         return 0;
3276 #endif
3277 }
3278
3279 /*
3280  * Print scheduling while atomic bug:
3281  */
3282 static noinline void __schedule_bug(struct task_struct *prev)
3283 {
3284         /* Save this before calling printk(), since that will clobber it */
3285         unsigned long preempt_disable_ip = get_preempt_disable_ip(current);
3286
3287         if (oops_in_progress)
3288                 return;
3289
3290         printk(KERN_ERR "BUG: scheduling while atomic: %s/%d/0x%08x\n",
3291                 prev->comm, prev->pid, preempt_count());
3292
3293         debug_show_held_locks(prev);
3294         print_modules();
3295         if (irqs_disabled())
3296                 print_irqtrace_events(prev);
3297         if (IS_ENABLED(CONFIG_DEBUG_PREEMPT)
3298             && in_atomic_preempt_off()) {
3299                 pr_err("Preemption disabled at:");
3300                 print_ip_sym(preempt_disable_ip);
3301                 pr_cont("\n");
3302         }
3303         if (panic_on_warn)
3304                 panic("scheduling while atomic\n");
3305
3306         dump_stack();
3307         add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
3308 }
3309
3310 /*
3311  * Various schedule()-time debugging checks and statistics:
3312  */
3313 static inline void schedule_debug(struct task_struct *prev)
3314 {
3315 #ifdef CONFIG_SCHED_STACK_END_CHECK
3316         if (task_stack_end_corrupted(prev))
3317                 panic("corrupted stack end detected inside scheduler\n");
3318 #endif
3319
3320         if (unlikely(in_atomic_preempt_off())) {
3321                 __schedule_bug(prev);
3322                 preempt_count_set(PREEMPT_DISABLED);
3323         }
3324         rcu_sleep_check();
3325
3326         profile_hit(SCHED_PROFILING, __builtin_return_address(0));
3327
3328         schedstat_inc(this_rq()->sched_count);
3329 }
3330
3331 /*
3332  * Pick up the highest-prio task:
3333  */
3334 static inline struct task_struct *
3335 pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
3336 {
3337         const struct sched_class *class;
3338         struct task_struct *p;
3339
3340         /*
3341          * Optimization: we know that if all tasks are in the fair class we can
3342          * call that function directly, but only if the @prev task wasn't of a
3343          * higher scheduling class, because otherwise those loose the
3344          * opportunity to pull in more work from other CPUs.
3345          */
3346         if (likely((prev->sched_class == &idle_sched_class ||
3347                     prev->sched_class == &fair_sched_class) &&
3348                    rq->nr_running == rq->cfs.h_nr_running)) {
3349
3350                 p = fair_sched_class.pick_next_task(rq, prev, rf);
3351                 if (unlikely(p == RETRY_TASK))
3352                         goto again;
3353
3354                 /* Assumes fair_sched_class->next == idle_sched_class */
3355                 if (unlikely(!p))
3356                         p = idle_sched_class.pick_next_task(rq, prev, rf);
3357
3358                 return p;
3359         }
3360
3361 again:
3362         for_each_class(class) {
3363                 p = class->pick_next_task(rq, prev, rf);
3364                 if (p) {
3365                         if (unlikely(p == RETRY_TASK))
3366                                 goto again;
3367                         return p;
3368                 }
3369         }
3370
3371         /* The idle class should always have a runnable task: */
3372         BUG();
3373 }
3374
3375 /*
3376  * __schedule() is the main scheduler function.
3377  *
3378  * The main means of driving the scheduler and thus entering this function are:
3379  *
3380  *   1. Explicit blocking: mutex, semaphore, waitqueue, etc.
3381  *
3382  *   2. TIF_NEED_RESCHED flag is checked on interrupt and userspace return
3383  *      paths. For example, see arch/x86/entry_64.S.
3384  *
3385  *      To drive preemption between tasks, the scheduler sets the flag in timer
3386  *      interrupt handler scheduler_tick().
3387  *
3388  *   3. Wakeups don't really cause entry into schedule(). They add a
3389  *      task to the run-queue and that's it.
3390  *
3391  *      Now, if the new task added to the run-queue preempts the current
3392  *      task, then the wakeup sets TIF_NEED_RESCHED and schedule() gets
3393  *      called on the nearest possible occasion:
3394  *
3395  *       - If the kernel is preemptible (CONFIG_PREEMPT=y):
3396  *
3397  *         - in syscall or exception context, at the next outmost
3398  *           preempt_enable(). (this might be as soon as the wake_up()'s
3399  *           spin_unlock()!)
3400  *
3401  *         - in IRQ context, return from interrupt-handler to
3402  *           preemptible context
3403  *
3404  *       - If the kernel is not preemptible (CONFIG_PREEMPT is not set)
3405  *         then at the next:
3406  *
3407  *          - cond_resched() call
3408  *          - explicit schedule() call
3409  *          - return from syscall or exception to user-space
3410  *          - return from interrupt-handler to user-space
3411  *
3412  * WARNING: must be called with preemption disabled!
3413  */
3414 static void __sched notrace __schedule(bool preempt)
3415 {
3416         struct task_struct *prev, *next;
3417         unsigned long *switch_count;
3418         struct rq_flags rf;
3419         struct rq *rq;
3420         int cpu;
3421
3422         cpu = smp_processor_id();
3423         rq = cpu_rq(cpu);
3424         prev = rq->curr;
3425
3426         schedule_debug(prev);
3427
3428         if (sched_feat(HRTICK))
3429                 hrtick_clear(rq);
3430
3431         local_irq_disable();
3432         rcu_note_context_switch(preempt);
3433
3434         /*
3435          * Make sure that signal_pending_state()->signal_pending() below
3436          * can't be reordered with __set_current_state(TASK_INTERRUPTIBLE)
3437          * done by the caller to avoid the race with signal_wake_up().
3438          *
3439          * The membarrier system call requires a full memory barrier
3440          * after coming from user-space, before storing to rq->curr.
3441          */
3442         rq_lock(rq, &rf);
3443         smp_mb__after_spinlock();
3444
3445         /* Promote REQ to ACT */
3446         rq->clock_update_flags <<= 1;
3447         update_rq_clock(rq);
3448
3449         switch_count = &prev->nivcsw;
3450         if (!preempt && prev->state) {
3451                 if (unlikely(signal_pending_state(prev->state, prev))) {
3452                         prev->state = TASK_RUNNING;
3453                 } else {
3454                         deactivate_task(rq, prev, DEQUEUE_SLEEP | DEQUEUE_NOCLOCK);
3455                         prev->on_rq = 0;
3456
3457                         if (prev->in_iowait) {
3458                                 atomic_inc(&rq->nr_iowait);
3459                                 delayacct_blkio_start();
3460                         }
3461
3462                         /*
3463                          * If a worker went to sleep, notify and ask workqueue
3464                          * whether it wants to wake up a task to maintain
3465                          * concurrency.
3466                          */
3467                         if (prev->flags & PF_WQ_WORKER) {
3468                                 struct task_struct *to_wakeup;
3469
3470                                 to_wakeup = wq_worker_sleeping(prev);
3471                                 if (to_wakeup)
3472                                         try_to_wake_up_local(to_wakeup, &rf);
3473                         }
3474                 }
3475                 switch_count = &prev->nvcsw;
3476         }
3477
3478         next = pick_next_task(rq, prev, &rf);
3479         clear_tsk_need_resched(prev);
3480         clear_preempt_need_resched();
3481
3482         if (likely(prev != next)) {
3483                 rq->nr_switches++;
3484                 rq->curr = next;
3485                 /*
3486                  * The membarrier system call requires each architecture
3487                  * to have a full memory barrier after updating
3488                  * rq->curr, before returning to user-space.
3489                  *
3490                  * Here are the schemes providing that barrier on the
3491                  * various architectures:
3492                  * - mm ? switch_mm() : mmdrop() for x86, s390, sparc, PowerPC.
3493                  *   switch_mm() rely on membarrier_arch_switch_mm() on PowerPC.
3494                  * - finish_lock_switch() for weakly-ordered
3495                  *   architectures where spin_unlock is a full barrier,
3496                  * - switch_to() for arm64 (weakly-ordered, spin_unlock
3497                  *   is a RELEASE barrier),
3498                  */
3499                 ++*switch_count;
3500
3501                 trace_sched_switch(preempt, prev, next);
3502
3503                 /* Also unlocks the rq: */
3504                 rq = context_switch(rq, prev, next, &rf);
3505         } else {
3506                 rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP);
3507                 rq_unlock_irq(rq, &rf);
3508         }
3509
3510         balance_callback(rq);
3511 }
3512
3513 void __noreturn do_task_dead(void)
3514 {
3515         /* Causes final put_task_struct in finish_task_switch(): */
3516         set_special_state(TASK_DEAD);
3517
3518         /* Tell freezer to ignore us: */
3519         current->flags |= PF_NOFREEZE;
3520
3521         __schedule(false);
3522         BUG();
3523
3524         /* Avoid "noreturn function does return" - but don't continue if BUG() is a NOP: */
3525         for (;;)
3526                 cpu_relax();
3527 }
3528
3529 static inline void sched_submit_work(struct task_struct *tsk)
3530 {
3531         if (!tsk->state || tsk_is_pi_blocked(tsk))
3532                 return;
3533         /*
3534          * If we are going to sleep and we have plugged IO queued,
3535          * make sure to submit it to avoid deadlocks.
3536          */
3537         if (blk_needs_flush_plug(tsk))
3538                 blk_schedule_flush_plug(tsk);
3539 }
3540
3541 asmlinkage __visible void __sched schedule(void)
3542 {
3543         struct task_struct *tsk = current;
3544
3545         sched_submit_work(tsk);
3546         do {
3547                 preempt_disable();
3548                 __schedule(false);
3549                 sched_preempt_enable_no_resched();
3550         } while (need_resched());
3551 }
3552 EXPORT_SYMBOL(schedule);
3553
3554 /*
3555  * synchronize_rcu_tasks() makes sure that no task is stuck in preempted
3556  * state (have scheduled out non-voluntarily) by making sure that all
3557  * tasks have either left the run queue or have gone into user space.
3558  * As idle tasks do not do either, they must not ever be preempted
3559  * (schedule out non-voluntarily).
3560  *
3561  * schedule_idle() is similar to schedule_preempt_disable() except that it
3562  * never enables preemption because it does not call sched_submit_work().
3563  */
3564 void __sched schedule_idle(void)
3565 {
3566         /*
3567          * As this skips calling sched_submit_work(), which the idle task does
3568          * regardless because that function is a nop when the task is in a
3569          * TASK_RUNNING state, make sure this isn't used someplace that the
3570          * current task can be in any other state. Note, idle is always in the
3571          * TASK_RUNNING state.
3572          */
3573         WARN_ON_ONCE(current->state);
3574         do {
3575                 __schedule(false);
3576         } while (need_resched());
3577 }
3578
3579 #ifdef CONFIG_CONTEXT_TRACKING
3580 asmlinkage __visible void __sched schedule_user(void)
3581 {
3582         /*
3583          * If we come here after a random call to set_need_resched(),
3584          * or we have been woken up remotely but the IPI has not yet arrived,
3585          * we haven't yet exited the RCU idle mode. Do it here manually until
3586          * we find a better solution.
3587          *
3588          * NB: There are buggy callers of this function.  Ideally we
3589          * should warn if prev_state != CONTEXT_USER, but that will trigger
3590          * too frequently to make sense yet.
3591          */
3592         enum ctx_state prev_state = exception_enter();
3593         schedule();
3594         exception_exit(prev_state);
3595 }
3596 #endif
3597
3598 /**
3599  * schedule_preempt_disabled - called with preemption disabled
3600  *
3601  * Returns with preemption disabled. Note: preempt_count must be 1
3602  */
3603 void __sched schedule_preempt_disabled(void)
3604 {
3605         sched_preempt_enable_no_resched();
3606         schedule();
3607         preempt_disable();
3608 }
3609
3610 static void __sched notrace preempt_schedule_common(void)
3611 {
3612         do {
3613                 /*
3614                  * Because the function tracer can trace preempt_count_sub()
3615                  * and it also uses preempt_enable/disable_notrace(), if
3616                  * NEED_RESCHED is set, the preempt_enable_notrace() called
3617                  * by the function tracer will call this function again and
3618                  * cause infinite recursion.
3619                  *
3620                  * Preemption must be disabled here before the function
3621                  * tracer can trace. Break up preempt_disable() into two
3622                  * calls. One to disable preemption without fear of being
3623                  * traced. The other to still record the preemption latency,
3624                  * which can also be traced by the function tracer.
3625                  */
3626                 preempt_disable_notrace();
3627                 preempt_latency_start(1);
3628                 __schedule(true);
3629                 preempt_latency_stop(1);
3630                 preempt_enable_no_resched_notrace();
3631
3632                 /*
3633                  * Check again in case we missed a preemption opportunity
3634                  * between schedule and now.
3635                  */
3636         } while (need_resched());
3637 }
3638
3639 #ifdef CONFIG_PREEMPT
3640 /*
3641  * this is the entry point to schedule() from in-kernel preemption
3642  * off of preempt_enable. Kernel preemptions off return from interrupt
3643  * occur there and call schedule directly.
3644  */
3645 asmlinkage __visible void __sched notrace preempt_schedule(void)
3646 {
3647         /*
3648          * If there is a non-zero preempt_count or interrupts are disabled,
3649          * we do not want to preempt the current task. Just return..
3650          */
3651         if (likely(!preemptible()))
3652                 return;
3653
3654         preempt_schedule_common();
3655 }
3656 NOKPROBE_SYMBOL(preempt_schedule);
3657 EXPORT_SYMBOL(preempt_schedule);
3658
3659 /**
3660  * preempt_schedule_notrace - preempt_schedule called by tracing
3661  *
3662  * The tracing infrastructure uses preempt_enable_notrace to prevent
3663  * recursion and tracing preempt enabling caused by the tracing
3664  * infrastructure itself. But as tracing can happen in areas coming
3665  * from userspace or just about to enter userspace, a preempt enable
3666  * can occur before user_exit() is called. This will cause the scheduler
3667  * to be called when the system is still in usermode.
3668  *
3669  * To prevent this, the preempt_enable_notrace will use this function
3670  * instead of preempt_schedule() to exit user context if needed before
3671  * calling the scheduler.
3672  */
3673 asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
3674 {
3675         enum ctx_state prev_ctx;
3676
3677         if (likely(!preemptible()))
3678                 return;
3679
3680         do {
3681                 /*
3682                  * Because the function tracer can trace preempt_count_sub()
3683                  * and it also uses preempt_enable/disable_notrace(), if
3684                  * NEED_RESCHED is set, the preempt_enable_notrace() called
3685                  * by the function tracer will call this function again and
3686                  * cause infinite recursion.
3687                  *
3688                  * Preemption must be disabled here before the function
3689                  * tracer can trace. Break up preempt_disable() into two
3690                  * calls. One to disable preemption without fear of being
3691                  * traced. The other to still record the preemption latency,
3692                  * which can also be traced by the function tracer.
3693                  */
3694                 preempt_disable_notrace();
3695                 preempt_latency_start(1);
3696                 /*
3697                  * Needs preempt disabled in case user_exit() is traced
3698                  * and the tracer calls preempt_enable_notrace() causing
3699                  * an infinite recursion.
3700                  */
3701                 prev_ctx = exception_enter();
3702                 __schedule(true);
3703                 exception_exit(prev_ctx);
3704
3705                 preempt_latency_stop(1);
3706                 preempt_enable_no_resched_notrace();
3707         } while (need_resched());
3708 }
3709 EXPORT_SYMBOL_GPL(preempt_schedule_notrace);
3710
3711 #endif /* CONFIG_PREEMPT */
3712
3713 /*
3714  * this is the entry point to schedule() from kernel preemption
3715  * off of irq context.
3716  * Note, that this is called and return with irqs disabled. This will
3717  * protect us against recursive calling from irq.
3718  */
3719 asmlinkage __visible void __sched preempt_schedule_irq(void)
3720 {
3721         enum ctx_state prev_state;
3722
3723         /* Catch callers which need to be fixed */
3724         BUG_ON(preempt_count() || !irqs_disabled());
3725
3726         prev_state = exception_enter();
3727
3728         do {
3729                 preempt_disable();
3730                 local_irq_enable();
3731                 __schedule(true);
3732                 local_irq_disable();
3733                 sched_preempt_enable_no_resched();
3734         } while (need_resched());
3735
3736         exception_exit(prev_state);
3737 }
3738
3739 int default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags,
3740                           void *key)
3741 {
3742         return try_to_wake_up(curr->private, mode, wake_flags);
3743 }
3744 EXPORT_SYMBOL(default_wake_function);
3745
3746 #ifdef CONFIG_RT_MUTEXES
3747
3748 static inline int __rt_effective_prio(struct task_struct *pi_task, int prio)
3749 {
3750         if (pi_task)
3751                 prio = min(prio, pi_task->prio);
3752
3753         return prio;
3754 }
3755
3756 static inline int rt_effective_prio(struct task_struct *p, int prio)
3757 {
3758         struct task_struct *pi_task = rt_mutex_get_top_task(p);
3759
3760         return __rt_effective_prio(pi_task, prio);
3761 }
3762
3763 /*
3764  * rt_mutex_setprio - set the current priority of a task
3765  * @p: task to boost
3766  * @pi_task: donor task
3767  *
3768  * This function changes the 'effective' priority of a task. It does
3769  * not touch ->normal_prio like __setscheduler().
3770  *
3771  * Used by the rt_mutex code to implement priority inheritance
3772  * logic. Call site only calls if the priority of the task changed.
3773  */
3774 void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
3775 {
3776         int prio, oldprio, queued, running, queue_flag =
3777                 DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
3778         const struct sched_class *prev_class;
3779         struct rq_flags rf;
3780         struct rq *rq;
3781
3782         /* XXX used to be waiter->prio, not waiter->task->prio */
3783         prio = __rt_effective_prio(pi_task, p->normal_prio);
3784
3785         /*
3786          * If nothing changed; bail early.
3787          */
3788         if (p->pi_top_task == pi_task && prio == p->prio && !dl_prio(prio))
3789                 return;
3790
3791         rq = __task_rq_lock(p, &rf);
3792         update_rq_clock(rq);
3793         /*
3794          * Set under pi_lock && rq->lock, such that the value can be used under
3795          * either lock.
3796          *
3797          * Note that there is loads of tricky to make this pointer cache work
3798          * right. rt_mutex_slowunlock()+rt_mutex_postunlock() work together to
3799          * ensure a task is de-boosted (pi_task is set to NULL) before the
3800          * task is allowed to run again (and can exit). This ensures the pointer
3801          * points to a blocked task -- which guaratees the task is present.
3802          */
3803         p->pi_top_task = pi_task;
3804
3805         /*
3806          * For FIFO/RR we only need to set prio, if that matches we're done.
3807          */
3808         if (prio == p->prio && !dl_prio(prio))
3809                 goto out_unlock;
3810
3811         /*
3812          * Idle task boosting is a nono in general. There is one
3813          * exception, when PREEMPT_RT and NOHZ is active:
3814          *
3815          * The idle task calls get_next_timer_interrupt() and holds
3816          * the timer wheel base->lock on the CPU and another CPU wants
3817          * to access the timer (probably to cancel it). We can safely
3818          * ignore the boosting request, as the idle CPU runs this code
3819          * with interrupts disabled and will complete the lock
3820          * protected section without being interrupted. So there is no
3821          * real need to boost.
3822          */
3823         if (unlikely(p == rq->idle)) {
3824                 WARN_ON(p != rq->curr);
3825                 WARN_ON(p->pi_blocked_on);
3826                 goto out_unlock;
3827         }
3828
3829         trace_sched_pi_setprio(p, pi_task);
3830         oldprio = p->prio;
3831
3832         if (oldprio == prio)
3833                 queue_flag &= ~DEQUEUE_MOVE;
3834
3835         prev_class = p->sched_class;
3836         queued = task_on_rq_queued(p);
3837         running = task_current(rq, p);
3838         if (queued)
3839                 dequeue_task(rq, p, queue_flag);
3840         if (running)
3841                 put_prev_task(rq, p);
3842
3843         /*
3844          * Boosting condition are:
3845          * 1. -rt task is running and holds mutex A
3846          *      --> -dl task blocks on mutex A
3847          *
3848          * 2. -dl task is running and holds mutex A
3849          *      --> -dl task blocks on mutex A and could preempt the
3850          *          running task
3851          */
3852         if (dl_prio(prio)) {
3853                 if (!dl_prio(p->normal_prio) ||
3854                     (pi_task && dl_entity_preempt(&pi_task->dl, &p->dl))) {
3855                         p->dl.dl_boosted = 1;
3856                         queue_flag |= ENQUEUE_REPLENISH;
3857                 } else
3858                         p->dl.dl_boosted = 0;
3859                 p->sched_class = &dl_sched_class;
3860         } else if (rt_prio(prio)) {
3861                 if (dl_prio(oldprio))
3862                         p->dl.dl_boosted = 0;
3863                 if (oldprio < prio)
3864                         queue_flag |= ENQUEUE_HEAD;
3865                 p->sched_class = &rt_sched_class;
3866         } else {
3867                 if (dl_prio(oldprio))
3868                         p->dl.dl_boosted = 0;
3869                 if (rt_prio(oldprio))
3870                         p->rt.timeout = 0;
3871                 p->sched_class = &fair_sched_class;
3872         }
3873
3874         p->prio = prio;
3875
3876         if (queued)
3877                 enqueue_task(rq, p, queue_flag);
3878         if (running)
3879                 set_curr_task(rq, p);
3880
3881         check_class_changed(rq, p, prev_class, oldprio);
3882 out_unlock:
3883         /* Avoid rq from going away on us: */
3884         preempt_disable();
3885         __task_rq_unlock(rq, &rf);
3886
3887         balance_callback(rq);
3888         preempt_enable();
3889 }
3890 #else
3891 static inline int rt_effective_prio(struct task_struct *p, int prio)
3892 {
3893         return prio;
3894 }
3895 #endif
3896
3897 void set_user_nice(struct task_struct *p, long nice)
3898 {
3899         bool queued, running;
3900         int old_prio, delta;
3901         struct rq_flags rf;
3902         struct rq *rq;
3903
3904         if (task_nice(p) == nice || nice < MIN_NICE || nice > MAX_NICE)
3905                 return;
3906         /*
3907          * We have to be careful, if called from sys_setpriority(),
3908          * the task might be in the middle of scheduling on another CPU.
3909          */
3910         rq = task_rq_lock(p, &rf);
3911         update_rq_clock(rq);
3912
3913         /*
3914          * The RT priorities are set via sched_setscheduler(), but we still
3915          * allow the 'normal' nice value to be set - but as expected
3916          * it wont have any effect on scheduling until the task is
3917          * SCHED_DEADLINE, SCHED_FIFO or SCHED_RR:
3918          */
3919         if (task_has_dl_policy(p) || task_has_rt_policy(p)) {
3920                 p->static_prio = NICE_TO_PRIO(nice);
3921                 goto out_unlock;
3922         }
3923         queued = task_on_rq_queued(p);
3924         running = task_current(rq, p);
3925         if (queued)
3926                 dequeue_task(rq, p, DEQUEUE_SAVE | DEQUEUE_NOCLOCK);
3927         if (running)
3928                 put_prev_task(rq, p);
3929
3930         p->static_prio = NICE_TO_PRIO(nice);
3931         set_load_weight(p, true);
3932         old_prio = p->prio;
3933         p->prio = effective_prio(p);
3934         delta = p->prio - old_prio;
3935
3936         if (queued) {
3937                 enqueue_task(rq, p, ENQUEUE_RESTORE | ENQUEUE_NOCLOCK);
3938                 /*
3939                  * If the task increased its priority or is running and
3940                  * lowered its priority, then reschedule its CPU:
3941                  */
3942                 if (delta < 0 || (delta > 0 && task_running(rq, p)))
3943                         resched_curr(rq);
3944         }
3945         if (running)
3946                 set_curr_task(rq, p);
3947 out_unlock:
3948         task_rq_unlock(rq, p, &rf);
3949 }
3950 EXPORT_SYMBOL(set_user_nice);
3951
3952 /*
3953  * can_nice - check if a task can reduce its nice value
3954  * @p: task
3955  * @nice: nice value
3956  */
3957 int can_nice(const struct task_struct *p, const int nice)
3958 {
3959         /* Convert nice value [19,-20] to rlimit style value [1,40]: */
3960         int nice_rlim = nice_to_rlimit(nice);
3961
3962         return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
3963                 capable(CAP_SYS_NICE));
3964 }
3965
3966 #ifdef __ARCH_WANT_SYS_NICE
3967
3968 /*
3969  * sys_nice - change the priority of the current process.
3970  * @increment: priority increment
3971  *
3972  * sys_setpriority is a more generic, but much slower function that
3973  * does similar things.
3974  */
3975 SYSCALL_DEFINE1(nice, int, increment)
3976 {
3977         long nice, retval;
3978
3979         /*
3980          * Setpriority might change our priority at the same moment.
3981          * We don't have to worry. Conceptually one call occurs first
3982          * and we have a single winner.
3983          */
3984         increment = clamp(increment, -NICE_WIDTH, NICE_WIDTH);
3985         nice = task_nice(current) + increment;
3986
3987         nice = clamp_val(nice, MIN_NICE, MAX_NICE);
3988         if (increment < 0 && !can_nice(current, nice))
3989                 return -EPERM;
3990
3991         retval = security_task_setnice(current, nice);
3992         if (retval)
3993                 return retval;
3994
3995         set_user_nice(current, nice);
3996         return 0;
3997 }
3998
3999 #endif
4000
4001 /**
4002  * task_prio - return the priority value of a given task.
4003  * @p: the task in question.
4004  *
4005  * Return: The priority value as seen by users in /proc.
4006  * RT tasks are offset by -200. Normal tasks are centered
4007  * around 0, value goes from -16 to +15.
4008  */
4009 int task_prio(const struct task_struct *p)
4010 {
4011         return p->prio - MAX_RT_PRIO;
4012 }
4013
4014 /**
4015  * idle_cpu - is a given CPU idle currently?
4016  * @cpu: the processor in question.
4017  *
4018  * Return: 1 if the CPU is currently idle. 0 otherwise.
4019  */
4020 int idle_cpu(int cpu)
4021 {
4022         struct rq *rq = cpu_rq(cpu);
4023
4024         if (rq->curr != rq->idle)
4025                 return 0;
4026
4027         if (rq->nr_running)
4028                 return 0;
4029
4030 #ifdef CONFIG_SMP
4031         if (!llist_empty(&rq->wake_list))
4032                 return 0;
4033 #endif
4034
4035         return 1;
4036 }
4037
4038 /**
4039  * available_idle_cpu - is a given CPU idle for enqueuing work.
4040  * @cpu: the CPU in question.
4041  *
4042  * Return: 1 if the CPU is currently idle. 0 otherwise.
4043  */
4044 int available_idle_cpu(int cpu)
4045 {
4046         if (!idle_cpu(cpu))
4047                 return 0;
4048
4049         if (vcpu_is_preempted(cpu))
4050                 return 0;
4051
4052         return 1;
4053 }
4054
4055 /**
4056  * idle_task - return the idle task for a given CPU.
4057  * @cpu: the processor in question.
4058  *
4059  * Return: The idle task for the CPU @cpu.
4060  */
4061 struct task_struct *idle_task(int cpu)
4062 {
4063         return cpu_rq(cpu)->idle;
4064 }
4065
4066 /**
4067  * find_process_by_pid - find a process with a matching PID value.
4068  * @pid: the pid in question.
4069  *
4070  * The task of @pid, if found. %NULL otherwise.
4071  */
4072 static struct task_struct *find_process_by_pid(pid_t pid)
4073 {
4074         return pid ? find_task_by_vpid(pid) : current;
4075 }
4076
4077 /*
4078  * sched_setparam() passes in -1 for its policy, to let the functions
4079  * it calls know not to change it.
4080  */
4081 #define SETPARAM_POLICY -1
4082
4083 static void __setscheduler_params(struct task_struct *p,
4084                 const struct sched_attr *attr)
4085 {
4086         int policy = attr->sched_policy;
4087
4088         if (policy == SETPARAM_POLICY)
4089                 policy = p->policy;
4090
4091         p->policy = policy;
4092
4093         if (dl_policy(policy))
4094                 __setparam_dl(p, attr);
4095         else if (fair_policy(policy))
4096                 p->static_prio = NICE_TO_PRIO(attr->sched_nice);
4097
4098         /*
4099          * __sched_setscheduler() ensures attr->sched_priority == 0 when
4100          * !rt_policy. Always setting this ensures that things like
4101          * getparam()/getattr() don't report silly values for !rt tasks.
4102          */
4103         p->rt_priority = attr->sched_priority;
4104         p->normal_prio = normal_prio(p);
4105         set_load_weight(p, true);
4106 }
4107
4108 /* Actually do priority change: must hold pi & rq lock. */
4109 static void __setscheduler(struct rq *rq, struct task_struct *p,
4110                            const struct sched_attr *attr, bool keep_boost)
4111 {
4112         __setscheduler_params(p, attr);
4113
4114         /*
4115          * Keep a potential priority boosting if called from
4116          * sched_setscheduler().
4117          */
4118         p->prio = normal_prio(p);
4119         if (keep_boost)
4120                 p->prio = rt_effective_prio(p, p->prio);
4121
4122         if (dl_prio(p->prio))
4123                 p->sched_class = &dl_sched_class;
4124         else if (rt_prio(p->prio))
4125                 p->sched_class = &rt_sched_class;
4126         else
4127                 p->sched_class = &fair_sched_class;
4128 }
4129
4130 /*
4131  * Check the target process has a UID that matches the current process's:
4132  */
4133 static bool check_same_owner(struct task_struct *p)
4134 {
4135         const struct cred *cred = current_cred(), *pcred;
4136         bool match;
4137
4138         rcu_read_lock();
4139         pcred = __task_cred(p);
4140         match = (uid_eq(cred->euid, pcred->euid) ||
4141                  uid_eq(cred->euid, pcred->uid));
4142         rcu_read_unlock();
4143         return match;
4144 }
4145
4146 static int __sched_setscheduler(struct task_struct *p,
4147                                 const struct sched_attr *attr,
4148                                 bool user, bool pi)
4149 {
4150         int newprio = dl_policy(attr->sched_policy) ? MAX_DL_PRIO - 1 :
4151                       MAX_RT_PRIO - 1 - attr->sched_priority;
4152         int retval, oldprio, oldpolicy = -1, queued, running;
4153         int new_effective_prio, policy = attr->sched_policy;
4154         const struct sched_class *prev_class;
4155         struct rq_flags rf;
4156         int reset_on_fork;
4157         int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
4158         struct rq *rq;
4159
4160         /* The pi code expects interrupts enabled */
4161         BUG_ON(pi && in_interrupt());
4162 recheck:
4163         /* Double check policy once rq lock held: */
4164         if (policy < 0) {
4165                 reset_on_fork = p->sched_reset_on_fork;
4166                 policy = oldpolicy = p->policy;
4167         } else {
4168                 reset_on_fork = !!(attr->sched_flags & SCHED_FLAG_RESET_ON_FORK);
4169
4170                 if (!valid_policy(policy))
4171                         return -EINVAL;
4172         }
4173
4174         if (attr->sched_flags & ~(SCHED_FLAG_ALL | SCHED_FLAG_SUGOV))
4175                 return -EINVAL;
4176
4177         /*
4178          * Valid priorities for SCHED_FIFO and SCHED_RR are
4179          * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL,
4180          * SCHED_BATCH and SCHED_IDLE is 0.
4181          */
4182         if ((p->mm && attr->sched_priority > MAX_USER_RT_PRIO-1) ||
4183             (!p->mm && attr->sched_priority > MAX_RT_PRIO-1))
4184                 return -EINVAL;
4185         if ((dl_policy(policy) && !__checkparam_dl(attr)) ||
4186             (rt_policy(policy) != (attr->sched_priority != 0)))
4187                 return -EINVAL;
4188
4189         /*
4190          * Allow unprivileged RT tasks to decrease priority:
4191          */
4192         if (user && !capable(CAP_SYS_NICE)) {
4193                 if (fair_policy(policy)) {
4194                         if (attr->sched_nice < task_nice(p) &&
4195                             !can_nice(p, attr->sched_nice))
4196                                 return -EPERM;
4197                 }
4198
4199                 if (rt_policy(policy)) {
4200                         unsigned long rlim_rtprio =
4201                                         task_rlimit(p, RLIMIT_RTPRIO);
4202
4203                         /* Can't set/change the rt policy: */
4204                         if (policy != p->policy && !rlim_rtprio)
4205                                 return -EPERM;
4206
4207                         /* Can't increase priority: */
4208                         if (attr->sched_priority > p->rt_priority &&
4209                             attr->sched_priority > rlim_rtprio)
4210                                 return -EPERM;
4211                 }
4212
4213                  /*
4214                   * Can't set/change SCHED_DEADLINE policy at all for now
4215                   * (safest behavior); in the future we would like to allow
4216                   * unprivileged DL tasks to increase their relative deadline
4217                   * or reduce their runtime (both ways reducing utilization)
4218                   */
4219                 if (dl_policy(policy))
4220                         return -EPERM;
4221
4222                 /*
4223                  * Treat SCHED_IDLE as nice 20. Only allow a switch to
4224                  * SCHED_NORMAL if the RLIMIT_NICE would normally permit it.
4225                  */
4226                 if (idle_policy(p->policy) && !idle_policy(policy)) {
4227                         if (!can_nice(p, task_nice(p)))
4228                                 return -EPERM;
4229                 }
4230
4231                 /* Can't change other user's priorities: */
4232                 if (!check_same_owner(p))
4233                         return -EPERM;
4234
4235                 /* Normal users shall not reset the sched_reset_on_fork flag: */
4236                 if (p->sched_reset_on_fork && !reset_on_fork)
4237                         return -EPERM;
4238         }
4239
4240         if (user) {
4241                 if (attr->sched_flags & SCHED_FLAG_SUGOV)
4242                         return -EINVAL;
4243
4244                 retval = security_task_setscheduler(p);
4245                 if (retval)
4246                         return retval;
4247         }
4248
4249         /*
4250          * Make sure no PI-waiters arrive (or leave) while we are
4251          * changing the priority of the task:
4252          *
4253          * To be able to change p->policy safely, the appropriate
4254          * runqueue lock must be held.
4255          */
4256         rq = task_rq_lock(p, &rf);
4257         update_rq_clock(rq);
4258
4259         /*
4260          * Changing the policy of the stop threads its a very bad idea:
4261          */
4262         if (p == rq->stop) {
4263                 task_rq_unlock(rq, p, &rf);
4264                 return -EINVAL;
4265         }
4266
4267         /*
4268          * If not changing anything there's no need to proceed further,
4269          * but store a possible modification of reset_on_fork.
4270          */
4271         if (unlikely(policy == p->policy)) {
4272                 if (fair_policy(policy) && attr->sched_nice != task_nice(p))
4273                         goto change;
4274                 if (rt_policy(policy) && attr->sched_priority != p->rt_priority)
4275                         goto change;
4276                 if (dl_policy(policy) && dl_param_changed(p, attr))
4277                         goto change;
4278
4279                 p->sched_reset_on_fork = reset_on_fork;
4280                 task_rq_unlock(rq, p, &rf);
4281                 return 0;
4282         }
4283 change:
4284
4285         if (user) {
4286 #ifdef CONFIG_RT_GROUP_SCHED
4287                 /*
4288                  * Do not allow realtime tasks into groups that have no runtime
4289                  * assigned.
4290                  */
4291                 if (rt_bandwidth_enabled() && rt_policy(policy) &&
4292                                 task_group(p)->rt_bandwidth.rt_runtime == 0 &&
4293                                 !task_group_is_autogroup(task_group(p))) {
4294                         task_rq_unlock(rq, p, &rf);
4295                         return -EPERM;
4296                 }
4297 #endif
4298 #ifdef CONFIG_SMP
4299                 if (dl_bandwidth_enabled() && dl_policy(policy) &&
4300                                 !(attr->sched_flags & SCHED_FLAG_SUGOV)) {
4301                         cpumask_t *span = rq->rd->span;
4302
4303                         /*
4304                          * Don't allow tasks with an affinity mask smaller than
4305                          * the entire root_domain to become SCHED_DEADLINE. We
4306                          * will also fail if there's no bandwidth available.
4307                          */
4308                         if (!cpumask_subset(span, &p->cpus_allowed) ||
4309                             rq->rd->dl_bw.bw == 0) {
4310                                 task_rq_unlock(rq, p, &rf);
4311                                 return -EPERM;
4312                         }
4313                 }
4314 #endif
4315         }
4316
4317         /* Re-check policy now with rq lock held: */
4318         if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
4319                 policy = oldpolicy = -1;
4320                 task_rq_unlock(rq, p, &rf);
4321                 goto recheck;
4322         }
4323
4324         /*
4325          * If setscheduling to SCHED_DEADLINE (or changing the parameters
4326          * of a SCHED_DEADLINE task) we need to check if enough bandwidth
4327          * is available.
4328          */
4329         if ((dl_policy(policy) || dl_task(p)) && sched_dl_overflow(p, policy, attr)) {
4330                 task_rq_unlock(rq, p, &rf);
4331                 return -EBUSY;
4332         }
4333
4334         p->sched_reset_on_fork = reset_on_fork;
4335         oldprio = p->prio;
4336
4337         if (pi) {
4338                 /*
4339                  * Take priority boosted tasks into account. If the new
4340                  * effective priority is unchanged, we just store the new
4341                  * normal parameters and do not touch the scheduler class and
4342                  * the runqueue. This will be done when the task deboost
4343                  * itself.
4344                  */
4345                 new_effective_prio = rt_effective_prio(p, newprio);
4346                 if (new_effective_prio == oldprio)
4347                         queue_flags &= ~DEQUEUE_MOVE;
4348         }
4349
4350         queued = task_on_rq_queued(p);
4351         running = task_current(rq, p);
4352         if (queued)
4353                 dequeue_task(rq, p, queue_flags);
4354         if (running)
4355                 put_prev_task(rq, p);
4356
4357         prev_class = p->sched_class;
4358         __setscheduler(rq, p, attr, pi);
4359
4360         if (queued) {
4361                 /*
4362                  * We enqueue to tail when the priority of a task is
4363                  * increased (user space view).
4364                  */
4365                 if (oldprio < p->prio)
4366                         queue_flags |= ENQUEUE_HEAD;
4367
4368                 enqueue_task(rq, p, queue_flags);
4369         }
4370         if (running)
4371                 set_curr_task(rq, p);
4372
4373         check_class_changed(rq, p, prev_class, oldprio);
4374
4375         /* Avoid rq from going away on us: */
4376         preempt_disable();
4377         task_rq_unlock(rq, p, &rf);
4378
4379         if (pi)
4380                 rt_mutex_adjust_pi(p);
4381
4382         /* Run balance callbacks after we've adjusted the PI chain: */
4383         balance_callback(rq);
4384         preempt_enable();
4385
4386         return 0;
4387 }
4388
4389 static int _sched_setscheduler(struct task_struct *p, int policy,
4390                                const struct sched_param *param, bool check)
4391 {
4392         struct sched_attr attr = {
4393                 .sched_policy   = policy,
4394                 .sched_priority = param->sched_priority,
4395                 .sched_nice     = PRIO_TO_NICE(p->static_prio),
4396         };
4397
4398         /* Fixup the legacy SCHED_RESET_ON_FORK hack. */
4399         if ((policy != SETPARAM_POLICY) && (policy & SCHED_RESET_ON_FORK)) {
4400                 attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
4401                 policy &= ~SCHED_RESET_ON_FORK;
4402                 attr.sched_policy = policy;
4403         }
4404
4405         return __sched_setscheduler(p, &attr, check, true);
4406 }
4407 /**
4408  * sched_setscheduler - change the scheduling policy and/or RT priority of a thread.
4409  * @p: the task in question.
4410  * @policy: new policy.
4411  * @param: structure containing the new RT priority.
4412  *
4413  * Return: 0 on success. An error code otherwise.
4414  *
4415  * NOTE that the task may be already dead.
4416  */
4417 int sched_setscheduler(struct task_struct *p, int policy,
4418                        const struct sched_param *param)
4419 {
4420         return _sched_setscheduler(p, policy, param, true);
4421 }
4422 EXPORT_SYMBOL_GPL(sched_setscheduler);
4423
4424 int sched_setattr(struct task_struct *p, const struct sched_attr *attr)
4425 {
4426         return __sched_setscheduler(p, attr, true, true);
4427 }
4428 EXPORT_SYMBOL_GPL(sched_setattr);
4429
4430 int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr)
4431 {
4432         return __sched_setscheduler(p, attr, false, true);
4433 }
4434
4435 /**
4436  * sched_setscheduler_nocheck - change the scheduling policy and/or RT priority of a thread from kernelspace.
4437  * @p: the task in question.
4438  * @policy: new policy.
4439  * @param: structure containing the new RT priority.
4440  *
4441  * Just like sched_setscheduler, only don't bother checking if the
4442  * current context has permission.  For example, this is needed in
4443  * stop_machine(): we create temporary high priority worker threads,
4444  * but our caller might not have that capability.
4445  *
4446  * Return: 0 on success. An error code otherwise.
4447  */
4448 int sched_setscheduler_nocheck(struct task_struct *p, int policy,
4449                                const struct sched_param *param)
4450 {
4451         return _sched_setscheduler(p, policy, param, false);
4452 }
4453 EXPORT_SYMBOL_GPL(sched_setscheduler_nocheck);
4454
4455 static int
4456 do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
4457 {
4458         struct sched_param lparam;
4459         struct task_struct *p;
4460         int retval;
4461
4462         if (!param || pid < 0)
4463                 return -EINVAL;
4464         if (copy_from_user(&lparam, param, sizeof(struct sched_param)))
4465                 return -EFAULT;
4466
4467         rcu_read_lock();
4468         retval = -ESRCH;
4469         p = find_process_by_pid(pid);
4470         if (p != NULL)
4471                 retval = sched_setscheduler(p, policy, &lparam);
4472         rcu_read_unlock();
4473
4474         return retval;
4475 }
4476
4477 /*
4478  * Mimics kernel/events/core.c perf_copy_attr().
4479  */
4480 static int sched_copy_attr(struct sched_attr __user *uattr, struct sched_attr *attr)
4481 {
4482         u32 size;
4483         int ret;
4484
4485         if (!access_ok(VERIFY_WRITE, uattr, SCHED_ATTR_SIZE_VER0))
4486                 return -EFAULT;
4487
4488         /* Zero the full structure, so that a short copy will be nice: */
4489         memset(attr, 0, sizeof(*attr));
4490
4491         ret = get_user(size, &uattr->size);
4492         if (ret)
4493                 return ret;
4494
4495         /* Bail out on silly large: */
4496         if (size > PAGE_SIZE)
4497                 goto err_size;
4498
4499         /* ABI compatibility quirk: */
4500         if (!size)
4501                 size = SCHED_ATTR_SIZE_VER0;
4502
4503         if (size < SCHED_ATTR_SIZE_VER0)
4504                 goto err_size;
4505
4506         /*
4507          * If we're handed a bigger struct than we know of,
4508          * ensure all the unknown bits are 0 - i.e. new
4509          * user-space does not rely on any kernel feature
4510          * extensions we dont know about yet.
4511          */
4512         if (size > sizeof(*attr)) {
4513                 unsigned char __user *addr;
4514                 unsigned char __user *end;
4515                 unsigned char val;
4516
4517                 addr = (void __user *)uattr + sizeof(*attr);
4518                 end  = (void __user *)uattr + size;
4519
4520                 for (; addr < end; addr++) {
4521                         ret = get_user(val, addr);
4522                         if (ret)
4523                                 return ret;
4524                         if (val)
4525                                 goto err_size;
4526                 }
4527                 size = sizeof(*attr);
4528         }
4529
4530         ret = copy_from_user(attr, uattr, size);
4531         if (ret)
4532                 return -EFAULT;
4533
4534         /*
4535          * XXX: Do we want to be lenient like existing syscalls; or do we want
4536          * to be strict and return an error on out-of-bounds values?
4537          */
4538         attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE);
4539
4540         return 0;
4541
4542 err_size:
4543         put_user(sizeof(*attr), &uattr->size);
4544         return -E2BIG;
4545 }
4546
4547 /**
4548  * sys_sched_setscheduler - set/change the scheduler policy and RT priority
4549  * @pid: the pid in question.
4550  * @policy: new policy.
4551  * @param: structure containing the new RT priority.
4552  *
4553  * Return: 0 on success. An error code otherwise.
4554  */
4555 SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param)
4556 {
4557         if (policy < 0)
4558                 return -EINVAL;
4559
4560         return do_sched_setscheduler(pid, policy, param);
4561 }
4562
4563 /**
4564  * sys_sched_setparam - set/change the RT priority of a thread
4565  * @pid: the pid in question.
4566  * @param: structure containing the new RT priority.
4567  *
4568  * Return: 0 on success. An error code otherwise.
4569  */
4570 SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param)
4571 {
4572         return do_sched_setscheduler(pid, SETPARAM_POLICY, param);
4573 }
4574
4575 /**
4576  * sys_sched_setattr - same as above, but with extended sched_attr
4577  * @pid: the pid in question.
4578  * @uattr: structure containing the extended parameters.
4579  * @flags: for future extension.
4580  */
4581 SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr,
4582                                unsigned int, flags)
4583 {
4584         struct sched_attr attr;
4585         struct task_struct *p;
4586         int retval;
4587
4588         if (!uattr || pid < 0 || flags)
4589                 return -EINVAL;
4590
4591         retval = sched_copy_attr(uattr, &attr);
4592         if (retval)
4593                 return retval;
4594
4595         if ((int)attr.sched_policy < 0)
4596                 return -EINVAL;
4597
4598         rcu_read_lock();
4599         retval = -ESRCH;
4600         p = find_process_by_pid(pid);
4601         if (p != NULL)
4602                 retval = sched_setattr(p, &attr);
4603         rcu_read_unlock();
4604
4605         return retval;
4606 }
4607
4608 /**
4609  * sys_sched_getscheduler - get the policy (scheduling class) of a thread
4610  * @pid: the pid in question.
4611  *
4612  * Return: On success, the policy of the thread. Otherwise, a negative error
4613  * code.
4614  */
4615 SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
4616 {
4617         struct task_struct *p;
4618         int retval;
4619
4620         if (pid < 0)
4621                 return -EINVAL;
4622
4623         retval = -ESRCH;
4624         rcu_read_lock();
4625         p = find_process_by_pid(pid);
4626         if (p) {
4627                 retval = security_task_getscheduler(p);
4628                 if (!retval)
4629                         retval = p->policy
4630                                 | (p->sched_reset_on_fork ? SCHED_RESET_ON_FORK : 0);
4631         }
4632         rcu_read_unlock();
4633         return retval;
4634 }
4635
4636 /**
4637  * sys_sched_getparam - get the RT priority of a thread
4638  * @pid: the pid in question.
4639  * @param: structure containing the RT priority.
4640  *
4641  * Return: On success, 0 and the RT priority is in @param. Otherwise, an error
4642  * code.
4643  */
4644 SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param)
4645 {
4646         struct sched_param lp = { .sched_priority = 0 };
4647         struct task_struct *p;
4648         int retval;
4649
4650         if (!param || pid < 0)
4651                 return -EINVAL;
4652
4653         rcu_read_lock();
4654         p = find_process_by_pid(pid);
4655         retval = -ESRCH;
4656         if (!p)
4657                 goto out_unlock;
4658
4659         retval = security_task_getscheduler(p);
4660         if (retval)
4661                 goto out_unlock;
4662
4663         if (task_has_rt_policy(p))
4664                 lp.sched_priority = p->rt_priority;
4665         rcu_read_unlock();
4666
4667         /*
4668          * This one might sleep, we cannot do it with a spinlock held ...
4669          */
4670         retval = copy_to_user(param, &lp, sizeof(*param)) ? -EFAULT : 0;
4671
4672         return retval;
4673
4674 out_unlock:
4675         rcu_read_unlock();
4676         return retval;
4677 }
4678
4679 static int sched_read_attr(struct sched_attr __user *uattr,
4680                            struct sched_attr *attr,
4681                            unsigned int usize)
4682 {
4683         int ret;
4684
4685         if (!access_ok(VERIFY_WRITE, uattr, usize))
4686                 return -EFAULT;
4687
4688         /*
4689          * If we're handed a smaller struct than we know of,
4690          * ensure all the unknown bits are 0 - i.e. old
4691          * user-space does not get uncomplete information.
4692          */
4693         if (usize < sizeof(*attr)) {
4694                 unsigned char *addr;
4695                 unsigned char *end;
4696
4697                 addr = (void *)attr + usize;
4698                 end  = (void *)attr + sizeof(*attr);
4699
4700                 for (; addr < end; addr++) {
4701                         if (*addr)
4702                                 return -EFBIG;
4703                 }
4704
4705                 attr->size = usize;
4706         }
4707
4708         ret = copy_to_user(uattr, attr, attr->size);
4709         if (ret)
4710                 return -EFAULT;
4711
4712         return 0;
4713 }
4714
4715 /**
4716  * sys_sched_getattr - similar to sched_getparam, but with sched_attr
4717  * @pid: the pid in question.
4718  * @uattr: structure containing the extended parameters.
4719  * @size: sizeof(attr) for fwd/bwd comp.
4720  * @flags: for future extension.
4721  */
4722 SYSCALL_DEFINE4(sched_getattr, pid_t, pid, struct sched_attr __user *, uattr,
4723                 unsigned int, size, unsigned int, flags)
4724 {
4725         struct sched_attr attr = {
4726                 .size = sizeof(struct sched_attr),
4727         };
4728         struct task_struct *p;
4729         int retval;
4730
4731         if (!uattr || pid < 0 || size > PAGE_SIZE ||
4732             size < SCHED_ATTR_SIZE_VER0 || flags)
4733                 return -EINVAL;
4734
4735         rcu_read_lock();
4736         p = find_process_by_pid(pid);
4737         retval = -ESRCH;
4738         if (!p)
4739                 goto out_unlock;
4740
4741         retval = security_task_getscheduler(p);
4742         if (retval)
4743                 goto out_unlock;
4744
4745         attr.sched_policy = p->policy;
4746         if (p->sched_reset_on_fork)
4747                 attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
4748         if (task_has_dl_policy(p))
4749                 __getparam_dl(p, &attr);
4750         else if (task_has_rt_policy(p))
4751                 attr.sched_priority = p->rt_priority;
4752         else
4753                 attr.sched_nice = task_nice(p);
4754
4755         rcu_read_unlock();
4756
4757         retval = sched_read_attr(uattr, &attr, size);
4758         return retval;
4759
4760 out_unlock:
4761         rcu_read_unlock();
4762         return retval;
4763 }
4764
4765 long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
4766 {
4767         cpumask_var_t cpus_allowed, new_mask;
4768         struct task_struct *p;
4769         int retval;
4770
4771         rcu_read_lock();
4772
4773         p = find_process_by_pid(pid);
4774         if (!p) {
4775                 rcu_read_unlock();
4776                 return -ESRCH;
4777         }
4778
4779         /* Prevent p going away */
4780         get_task_struct(p);
4781         rcu_read_unlock();
4782
4783         if (p->flags & PF_NO_SETAFFINITY) {
4784                 retval = -EINVAL;
4785                 goto out_put_task;
4786         }
4787         if (!alloc_cpumask_var(&cpus_allowed, GFP_KERNEL)) {
4788                 retval = -ENOMEM;
4789                 goto out_put_task;
4790         }
4791         if (!alloc_cpumask_var(&new_mask, GFP_KERNEL)) {
4792                 retval = -ENOMEM;
4793                 goto out_free_cpus_allowed;
4794         }
4795         retval = -EPERM;
4796         if (!check_same_owner(p)) {
4797                 rcu_read_lock();
4798                 if (!ns_capable(__task_cred(p)->user_ns, CAP_SYS_NICE)) {
4799                         rcu_read_unlock();
4800                         goto out_free_new_mask;
4801                 }
4802                 rcu_read_unlock();
4803         }
4804
4805         retval = security_task_setscheduler(p);
4806         if (retval)
4807                 goto out_free_new_mask;
4808
4809
4810         cpuset_cpus_allowed(p, cpus_allowed);
4811         cpumask_and(new_mask, in_mask, cpus_allowed);
4812
4813         /*
4814          * Since bandwidth control happens on root_domain basis,
4815          * if admission test is enabled, we only admit -deadline
4816          * tasks allowed to run on all the CPUs in the task's
4817          * root_domain.
4818          */
4819 #ifdef CONFIG_SMP
4820         if (task_has_dl_policy(p) && dl_bandwidth_enabled()) {
4821                 rcu_read_lock();
4822                 if (!cpumask_subset(task_rq(p)->rd->span, new_mask)) {
4823                         retval = -EBUSY;
4824                         rcu_read_unlock();
4825                         goto out_free_new_mask;
4826                 }
4827                 rcu_read_unlock();
4828         }
4829 #endif
4830 again:
4831         retval = __set_cpus_allowed_ptr(p, new_mask, true);
4832
4833         if (!retval) {
4834                 cpuset_cpus_allowed(p, cpus_allowed);
4835                 if (!cpumask_subset(new_mask, cpus_allowed)) {
4836                         /*
4837                          * We must have raced with a concurrent cpuset
4838                          * update. Just reset the cpus_allowed to the
4839                          * cpuset's cpus_allowed
4840                          */
4841                         cpumask_copy(new_mask, cpus_allowed);
4842                         goto again;
4843                 }
4844         }
4845 out_free_new_mask:
4846         free_cpumask_var(new_mask);
4847 out_free_cpus_allowed:
4848         free_cpumask_var(cpus_allowed);
4849 out_put_task:
4850         put_task_struct(p);
4851         return retval;
4852 }
4853
4854 static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
4855                              struct cpumask *new_mask)
4856 {
4857         if (len < cpumask_size())
4858                 cpumask_clear(new_mask);
4859         else if (len > cpumask_size())
4860                 len = cpumask_size();
4861
4862         return copy_from_user(new_mask, user_mask_ptr, len) ? -EFAULT : 0;
4863 }
4864
4865 /**
4866  * sys_sched_setaffinity - set the CPU affinity of a process
4867  * @pid: pid of the process
4868  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4869  * @user_mask_ptr: user-space pointer to the new CPU mask
4870  *
4871  * Return: 0 on success. An error code otherwise.
4872  */
4873 SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len,
4874                 unsigned long __user *, user_mask_ptr)
4875 {
4876         cpumask_var_t new_mask;
4877         int retval;
4878
4879         if (!alloc_cpumask_var(&new_mask, GFP_KERNEL))
4880                 return -ENOMEM;
4881
4882         retval = get_user_cpu_mask(user_mask_ptr, len, new_mask);
4883         if (retval == 0)
4884                 retval = sched_setaffinity(pid, new_mask);
4885         free_cpumask_var(new_mask);
4886         return retval;
4887 }
4888
4889 long sched_getaffinity(pid_t pid, struct cpumask *mask)
4890 {
4891         struct task_struct *p;
4892         unsigned long flags;
4893         int retval;
4894
4895         rcu_read_lock();
4896
4897         retval = -ESRCH;
4898         p = find_process_by_pid(pid);
4899         if (!p)
4900                 goto out_unlock;
4901
4902         retval = security_task_getscheduler(p);
4903         if (retval)
4904                 goto out_unlock;
4905
4906         raw_spin_lock_irqsave(&p->pi_lock, flags);
4907         cpumask_and(mask, &p->cpus_allowed, cpu_active_mask);
4908         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
4909
4910 out_unlock:
4911         rcu_read_unlock();
4912
4913         return retval;
4914 }
4915
4916 /**
4917  * sys_sched_getaffinity - get the CPU affinity of a process
4918  * @pid: pid of the process
4919  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4920  * @user_mask_ptr: user-space pointer to hold the current CPU mask
4921  *
4922  * Return: size of CPU mask copied to user_mask_ptr on success. An
4923  * error code otherwise.
4924  */
4925 SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
4926                 unsigned long __user *, user_mask_ptr)
4927 {
4928         int ret;
4929         cpumask_var_t mask;
4930
4931         if ((len * BITS_PER_BYTE) < nr_cpu_ids)
4932                 return -EINVAL;
4933         if (len & (sizeof(unsigned long)-1))
4934                 return -EINVAL;
4935
4936         if (!alloc_cpumask_var(&mask, GFP_KERNEL))
4937                 return -ENOMEM;
4938
4939         ret = sched_getaffinity(pid, mask);
4940         if (ret == 0) {
4941                 unsigned int retlen = min(len, cpumask_size());
4942
4943                 if (copy_to_user(user_mask_ptr, mask, retlen))
4944                         ret = -EFAULT;
4945                 else
4946                         ret = retlen;
4947         }
4948         free_cpumask_var(mask);
4949
4950         return ret;
4951 }
4952
4953 /**
4954  * sys_sched_yield - yield the current processor to other threads.
4955  *
4956  * This function yields the current CPU to other tasks. If there are no
4957  * other threads running on this CPU then this function will return.
4958  *
4959  * Return: 0.
4960  */
4961 static void do_sched_yield(void)
4962 {
4963         struct rq_flags rf;
4964         struct rq *rq;
4965
4966         local_irq_disable();
4967         rq = this_rq();
4968         rq_lock(rq, &rf);
4969
4970         schedstat_inc(rq->yld_count);
4971         current->sched_class->yield_task(rq);
4972
4973         /*
4974          * Since we are going to call schedule() anyway, there's
4975          * no need to preempt or enable interrupts:
4976          */
4977         preempt_disable();
4978         rq_unlock(rq, &rf);
4979         sched_preempt_enable_no_resched();
4980
4981         schedule();
4982 }
4983
4984 SYSCALL_DEFINE0(sched_yield)
4985 {
4986         do_sched_yield();
4987         return 0;
4988 }
4989
4990 #ifndef CONFIG_PREEMPT
4991 int __sched _cond_resched(void)
4992 {
4993         if (should_resched(0)) {
4994                 preempt_schedule_common();
4995                 return 1;
4996         }
4997         rcu_all_qs();
4998         return 0;
4999 }
5000 EXPORT_SYMBOL(_cond_resched);
5001 #endif
5002
5003 /*
5004  * __cond_resched_lock() - if a reschedule is pending, drop the given lock,
5005  * call schedule, and on return reacquire the lock.
5006  *
5007  * This works OK both with and without CONFIG_PREEMPT. We do strange low-level
5008  * operations here to prevent schedule() from being called twice (once via
5009  * spin_unlock(), once by hand).
5010  */
5011 int __cond_resched_lock(spinlock_t *lock)
5012 {
5013         int resched = should_resched(PREEMPT_LOCK_OFFSET);
5014         int ret = 0;
5015
5016         lockdep_assert_held(lock);
5017
5018         if (spin_needbreak(lock) || resched) {
5019                 spin_unlock(lock);
5020                 if (resched)
5021                         preempt_schedule_common();
5022                 else
5023                         cpu_relax();
5024                 ret = 1;
5025                 spin_lock(lock);
5026         }
5027         return ret;
5028 }
5029 EXPORT_SYMBOL(__cond_resched_lock);
5030
5031 /**
5032  * yield - yield the current processor to other threads.
5033  *
5034  * Do not ever use this function, there's a 99% chance you're doing it wrong.
5035  *
5036  * The scheduler is at all times free to pick the calling task as the most
5037  * eligible task to run, if removing the yield() call from your code breaks
5038  * it, its already broken.
5039  *
5040  * Typical broken usage is:
5041  *
5042  * while (!event)
5043  *      yield();
5044  *
5045  * where one assumes that yield() will let 'the other' process run that will
5046  * make event true. If the current task is a SCHED_FIFO task that will never
5047  * happen. Never use yield() as a progress guarantee!!
5048  *
5049  * If you want to use yield() to wait for something, use wait_event().
5050  * If you want to use yield() to be 'nice' for others, use cond_resched().
5051  * If you still want to use yield(), do not!
5052  */
5053 void __sched yield(void)
5054 {
5055         set_current_state(TASK_RUNNING);
5056         do_sched_yield();
5057 }
5058 EXPORT_SYMBOL(yield);
5059
5060 /**
5061  * yield_to - yield the current processor to another thread in
5062  * your thread group, or accelerate that thread toward the
5063  * processor it's on.
5064  * @p: target task
5065  * @preempt: whether task preemption is allowed or not
5066  *
5067  * It's the caller's job to ensure that the target task struct
5068  * can't go away on us before we can do any checks.
5069  *
5070  * Return:
5071  *      true (>0) if we indeed boosted the target task.
5072  *      false (0) if we failed to boost the target.
5073  *      -ESRCH if there's no task to yield to.
5074  */
5075 int __sched yield_to(struct task_struct *p, bool preempt)
5076 {
5077         struct task_struct *curr = current;
5078         struct rq *rq, *p_rq;
5079         unsigned long flags;
5080         int yielded = 0;
5081
5082         local_irq_save(flags);
5083         rq = this_rq();
5084
5085 again:
5086         p_rq = task_rq(p);
5087         /*
5088          * If we're the only runnable task on the rq and target rq also
5089          * has only one task, there's absolutely no point in yielding.
5090          */
5091         if (rq->nr_running == 1 && p_rq->nr_running == 1) {
5092                 yielded = -ESRCH;
5093                 goto out_irq;
5094         }
5095
5096         double_rq_lock(rq, p_rq);
5097         if (task_rq(p) != p_rq) {
5098                 double_rq_unlock(rq, p_rq);
5099                 goto again;
5100         }
5101
5102         if (!curr->sched_class->yield_to_task)
5103                 goto out_unlock;
5104
5105         if (curr->sched_class != p->sched_class)
5106                 goto out_unlock;
5107
5108         if (task_running(p_rq, p) || p->state)
5109                 goto out_unlock;
5110
5111         yielded = curr->sched_class->yield_to_task(rq, p, preempt);
5112         if (yielded) {
5113                 schedstat_inc(rq->yld_count);
5114                 /*
5115                  * Make p's CPU reschedule; pick_next_entity takes care of
5116                  * fairness.
5117                  */
5118                 if (preempt && rq != p_rq)
5119                         resched_curr(p_rq);
5120         }
5121
5122 out_unlock:
5123         double_rq_unlock(rq, p_rq);
5124 out_irq:
5125         local_irq_restore(flags);
5126
5127         if (yielded > 0)
5128                 schedule();
5129
5130         return yielded;
5131 }
5132 EXPORT_SYMBOL_GPL(yield_to);
5133
5134 int io_schedule_prepare(void)
5135 {
5136         int old_iowait = current->in_iowait;
5137
5138         current->in_iowait = 1;
5139         blk_schedule_flush_plug(current);
5140
5141         return old_iowait;
5142 }
5143
5144 void io_schedule_finish(int token)
5145 {
5146         current->in_iowait = token;
5147 }
5148
5149 /*
5150  * This task is about to go to sleep on IO. Increment rq->nr_iowait so
5151  * that process accounting knows that this is a task in IO wait state.
5152  */
5153 long __sched io_schedule_timeout(long timeout)
5154 {
5155         int token;
5156         long ret;
5157
5158         token = io_schedule_prepare();
5159         ret = schedule_timeout(timeout);
5160         io_schedule_finish(token);
5161
5162         return ret;
5163 }
5164 EXPORT_SYMBOL(io_schedule_timeout);
5165
5166 void io_schedule(void)
5167 {
5168         int token;
5169
5170         token = io_schedule_prepare();
5171         schedule();
5172         io_schedule_finish(token);
5173 }
5174 EXPORT_SYMBOL(io_schedule);
5175
5176 /**
5177  * sys_sched_get_priority_max - return maximum RT priority.
5178  * @policy: scheduling class.
5179  *
5180  * Return: On success, this syscall returns the maximum
5181  * rt_priority that can be used by a given scheduling class.
5182  * On failure, a negative error code is returned.
5183  */
5184 SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
5185 {
5186         int ret = -EINVAL;
5187
5188         switch (policy) {
5189         case SCHED_FIFO:
5190         case SCHED_RR:
5191                 ret = MAX_USER_RT_PRIO-1;
5192                 break;
5193         case SCHED_DEADLINE:
5194         case SCHED_NORMAL:
5195         case SCHED_BATCH:
5196         case SCHED_IDLE:
5197                 ret = 0;
5198                 break;
5199         }
5200         return ret;
5201 }
5202
5203 /**
5204  * sys_sched_get_priority_min - return minimum RT priority.
5205  * @policy: scheduling class.
5206  *
5207  * Return: On success, this syscall returns the minimum
5208  * rt_priority that can be used by a given scheduling class.
5209  * On failure, a negative error code is returned.
5210  */
5211 SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
5212 {
5213         int ret = -EINVAL;
5214
5215         switch (policy) {
5216         case SCHED_FIFO:
5217         case SCHED_RR:
5218                 ret = 1;
5219                 break;
5220         case SCHED_DEADLINE:
5221         case SCHED_NORMAL:
5222         case SCHED_BATCH:
5223         case SCHED_IDLE:
5224                 ret = 0;
5225         }
5226         return ret;
5227 }
5228
5229 static int sched_rr_get_interval(pid_t pid, struct timespec64 *t)
5230 {
5231         struct task_struct *p;
5232         unsigned int time_slice;
5233         struct rq_flags rf;
5234         struct rq *rq;
5235         int retval;
5236
5237         if (pid < 0)
5238                 return -EINVAL;
5239
5240         retval = -ESRCH;
5241         rcu_read_lock();
5242         p = find_process_by_pid(pid);
5243         if (!p)
5244                 goto out_unlock;
5245
5246         retval = security_task_getscheduler(p);
5247         if (retval)
5248                 goto out_unlock;
5249
5250         rq = task_rq_lock(p, &rf);
5251         time_slice = 0;
5252         if (p->sched_class->get_rr_interval)
5253                 time_slice = p->sched_class->get_rr_interval(rq, p);
5254         task_rq_unlock(rq, p, &rf);
5255
5256         rcu_read_unlock();
5257         jiffies_to_timespec64(time_slice, t);
5258         return 0;
5259
5260 out_unlock:
5261         rcu_read_unlock();
5262         return retval;
5263 }
5264
5265 /**
5266  * sys_sched_rr_get_interval - return the default timeslice of a process.
5267  * @pid: pid of the process.
5268  * @interval: userspace pointer to the timeslice value.
5269  *
5270  * this syscall writes the default timeslice value of a given process
5271  * into the user-space timespec buffer. A value of '0' means infinity.
5272  *
5273  * Return: On success, 0 and the timeslice is in @interval. Otherwise,
5274  * an error code.
5275  */
5276 SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
5277                 struct timespec __user *, interval)
5278 {
5279         struct timespec64 t;
5280         int retval = sched_rr_get_interval(pid, &t);
5281
5282         if (retval == 0)
5283                 retval = put_timespec64(&t, interval);
5284
5285         return retval;
5286 }
5287
5288 #ifdef CONFIG_COMPAT
5289 COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
5290                        compat_pid_t, pid,
5291                        struct compat_timespec __user *, interval)
5292 {
5293         struct timespec64 t;
5294         int retval = sched_rr_get_interval(pid, &t);
5295
5296         if (retval == 0)
5297                 retval = compat_put_timespec64(&t, interval);
5298         return retval;
5299 }
5300 #endif
5301
5302 void sched_show_task(struct task_struct *p)
5303 {
5304         unsigned long free = 0;
5305         int ppid;
5306
5307         if (!try_get_task_stack(p))
5308                 return;
5309
5310         printk(KERN_INFO "%-15.15s %c", p->comm, task_state_to_char(p));
5311
5312         if (p->state == TASK_RUNNING)
5313                 printk(KERN_CONT "  running task    ");
5314 #ifdef CONFIG_DEBUG_STACK_USAGE
5315         free = stack_not_used(p);
5316 #endif
5317         ppid = 0;
5318         rcu_read_lock();
5319         if (pid_alive(p))
5320                 ppid = task_pid_nr(rcu_dereference(p->real_parent));
5321         rcu_read_unlock();
5322         printk(KERN_CONT "%5lu %5d %6d 0x%08lx\n", free,
5323                 task_pid_nr(p), ppid,
5324                 (unsigned long)task_thread_info(p)->flags);
5325
5326         print_worker_info(KERN_INFO, p);
5327         show_stack(p, NULL);
5328         put_task_stack(p);
5329 }
5330 EXPORT_SYMBOL_GPL(sched_show_task);
5331
5332 static inline bool
5333 state_filter_match(unsigned long state_filter, struct task_struct *p)
5334 {
5335         /* no filter, everything matches */
5336         if (!state_filter)
5337                 return true;
5338
5339         /* filter, but doesn't match */
5340         if (!(p->state & state_filter))
5341                 return false;
5342
5343         /*
5344          * When looking for TASK_UNINTERRUPTIBLE skip TASK_IDLE (allows
5345          * TASK_KILLABLE).
5346          */
5347         if (state_filter == TASK_UNINTERRUPTIBLE && p->state == TASK_IDLE)
5348                 return false;
5349
5350         return true;
5351 }
5352
5353
5354 void show_state_filter(unsigned long state_filter)
5355 {
5356         struct task_struct *g, *p;
5357
5358 #if BITS_PER_LONG == 32
5359         printk(KERN_INFO
5360                 "  task                PC stack   pid father\n");
5361 #else
5362         printk(KERN_INFO
5363                 "  task                        PC stack   pid father\n");
5364 #endif
5365         rcu_read_lock();
5366         for_each_process_thread(g, p) {
5367                 /*
5368                  * reset the NMI-timeout, listing all files on a slow
5369                  * console might take a lot of time:
5370                  * Also, reset softlockup watchdogs on all CPUs, because
5371                  * another CPU might be blocked waiting for us to process
5372                  * an IPI.
5373                  */
5374                 touch_nmi_watchdog();
5375                 touch_all_softlockup_watchdogs();
5376                 if (state_filter_match(state_filter, p))
5377                         sched_show_task(p);
5378         }
5379
5380 #ifdef CONFIG_SCHED_DEBUG
5381         if (!state_filter)
5382                 sysrq_sched_debug_show();
5383 #endif
5384         rcu_read_unlock();
5385         /*
5386          * Only show locks if all tasks are dumped:
5387          */
5388         if (!state_filter)
5389                 debug_show_all_locks();
5390 }
5391
5392 /**
5393  * init_idle - set up an idle thread for a given CPU
5394  * @idle: task in question
5395  * @cpu: CPU the idle task belongs to
5396  *
5397  * NOTE: this function does not set the idle thread's NEED_RESCHED
5398  * flag, to make booting more robust.
5399  */
5400 void init_idle(struct task_struct *idle, int cpu)
5401 {
5402         struct rq *rq = cpu_rq(cpu);
5403         unsigned long flags;
5404
5405         raw_spin_lock_irqsave(&idle->pi_lock, flags);
5406         raw_spin_lock(&rq->lock);
5407
5408         __sched_fork(0, idle);
5409         idle->state = TASK_RUNNING;
5410         idle->se.exec_start = sched_clock();
5411         idle->flags |= PF_IDLE;
5412
5413         kasan_unpoison_task_stack(idle);
5414
5415 #ifdef CONFIG_SMP
5416         /*
5417          * Its possible that init_idle() gets called multiple times on a task,
5418          * in that case do_set_cpus_allowed() will not do the right thing.
5419          *
5420          * And since this is boot we can forgo the serialization.
5421          */
5422         set_cpus_allowed_common(idle, cpumask_of(cpu));
5423 #endif
5424         /*
5425          * We're having a chicken and egg problem, even though we are
5426          * holding rq->lock, the CPU isn't yet set to this CPU so the
5427          * lockdep check in task_group() will fail.
5428          *
5429          * Similar case to sched_fork(). / Alternatively we could
5430          * use task_rq_lock() here and obtain the other rq->lock.
5431          *
5432          * Silence PROVE_RCU
5433          */
5434         rcu_read_lock();
5435         __set_task_cpu(idle, cpu);
5436         rcu_read_unlock();
5437
5438         rq->curr = rq->idle = idle;
5439         idle->on_rq = TASK_ON_RQ_QUEUED;
5440 #ifdef CONFIG_SMP
5441         idle->on_cpu = 1;
5442 #endif
5443         raw_spin_unlock(&rq->lock);
5444         raw_spin_unlock_irqrestore(&idle->pi_lock, flags);
5445
5446         /* Set the preempt count _outside_ the spinlocks! */
5447         init_idle_preempt_count(idle, cpu);
5448
5449         /*
5450          * The idle tasks have their own, simple scheduling class:
5451          */
5452         idle->sched_class = &idle_sched_class;
5453         ftrace_graph_init_idle_task(idle, cpu);
5454         vtime_init_idle(idle, cpu);
5455 #ifdef CONFIG_SMP
5456         sprintf(idle->comm, "%s/%d", INIT_TASK_COMM, cpu);
5457 #endif
5458 }
5459
5460 #ifdef CONFIG_SMP
5461
5462 int cpuset_cpumask_can_shrink(const struct cpumask *cur,
5463                               const struct cpumask *trial)
5464 {
5465         int ret = 1;
5466
5467         if (!cpumask_weight(cur))
5468                 return ret;
5469
5470         ret = dl_cpuset_cpumask_can_shrink(cur, trial);
5471
5472         return ret;
5473 }
5474
5475 int task_can_attach(struct task_struct *p,
5476                     const struct cpumask *cs_cpus_allowed)
5477 {
5478         int ret = 0;
5479
5480         /*
5481          * Kthreads which disallow setaffinity shouldn't be moved
5482          * to a new cpuset; we don't want to change their CPU
5483          * affinity and isolating such threads by their set of
5484          * allowed nodes is unnecessary.  Thus, cpusets are not
5485          * applicable for such threads.  This prevents checking for
5486          * success of set_cpus_allowed_ptr() on all attached tasks
5487          * before cpus_allowed may be changed.
5488          */
5489         if (p->flags & PF_NO_SETAFFINITY) {
5490                 ret = -EINVAL;
5491                 goto out;
5492         }
5493
5494         if (dl_task(p) && !cpumask_intersects(task_rq(p)->rd->span,
5495                                               cs_cpus_allowed))
5496                 ret = dl_task_can_attach(p, cs_cpus_allowed);
5497
5498 out:
5499         return ret;
5500 }
5501
5502 bool sched_smp_initialized __read_mostly;
5503
5504 #ifdef CONFIG_NUMA_BALANCING
5505 /* Migrate current task p to target_cpu */
5506 int migrate_task_to(struct task_struct *p, int target_cpu)
5507 {
5508         struct migration_arg arg = { p, target_cpu };
5509         int curr_cpu = task_cpu(p);
5510
5511         if (curr_cpu == target_cpu)
5512                 return 0;
5513
5514         if (!cpumask_test_cpu(target_cpu, &p->cpus_allowed))
5515                 return -EINVAL;
5516
5517         /* TODO: This is not properly updating schedstats */
5518
5519         trace_sched_move_numa(p, curr_cpu, target_cpu);
5520         return stop_one_cpu(curr_cpu, migration_cpu_stop, &arg);
5521 }
5522
5523 /*
5524  * Requeue a task on a given node and accurately track the number of NUMA
5525  * tasks on the runqueues
5526  */
5527 void sched_setnuma(struct task_struct *p, int nid)
5528 {
5529         bool queued, running;
5530         struct rq_flags rf;
5531         struct rq *rq;
5532
5533         rq = task_rq_lock(p, &rf);
5534         queued = task_on_rq_queued(p);
5535         running = task_current(rq, p);
5536
5537         if (queued)
5538                 dequeue_task(rq, p, DEQUEUE_SAVE);
5539         if (running)
5540                 put_prev_task(rq, p);
5541
5542         p->numa_preferred_nid = nid;
5543
5544         if (queued)
5545                 enqueue_task(rq, p, ENQUEUE_RESTORE | ENQUEUE_NOCLOCK);
5546         if (running)
5547                 set_curr_task(rq, p);
5548         task_rq_unlock(rq, p, &rf);
5549 }
5550 #endif /* CONFIG_NUMA_BALANCING */
5551
5552 #ifdef CONFIG_HOTPLUG_CPU
5553 /*
5554  * Ensure that the idle task is using init_mm right before its CPU goes
5555  * offline.
5556  */
5557 void idle_task_exit(void)
5558 {
5559         struct mm_struct *mm = current->active_mm;
5560
5561         BUG_ON(cpu_online(smp_processor_id()));
5562
5563         if (mm != &init_mm) {
5564                 switch_mm(mm, &init_mm, current);
5565                 current->active_mm = &init_mm;
5566                 finish_arch_post_lock_switch();
5567         }
5568         mmdrop(mm);
5569 }
5570
5571 /*
5572  * Since this CPU is going 'away' for a while, fold any nr_active delta
5573  * we might have. Assumes we're called after migrate_tasks() so that the
5574  * nr_active count is stable. We need to take the teardown thread which
5575  * is calling this into account, so we hand in adjust = 1 to the load
5576  * calculation.
5577  *
5578  * Also see the comment "Global load-average calculations".
5579  */
5580 static void calc_load_migrate(struct rq *rq)
5581 {
5582         long delta = calc_load_fold_active(rq, 1);
5583         if (delta)
5584                 atomic_long_add(delta, &calc_load_tasks);
5585 }
5586
5587 static void put_prev_task_fake(struct rq *rq, struct task_struct *prev)
5588 {
5589 }
5590
5591 static const struct sched_class fake_sched_class = {
5592         .put_prev_task = put_prev_task_fake,
5593 };
5594
5595 static struct task_struct fake_task = {
5596         /*
5597          * Avoid pull_{rt,dl}_task()
5598          */
5599         .prio = MAX_PRIO + 1,
5600         .sched_class = &fake_sched_class,
5601 };
5602
5603 /*
5604  * Migrate all tasks from the rq, sleeping tasks will be migrated by
5605  * try_to_wake_up()->select_task_rq().
5606  *
5607  * Called with rq->lock held even though we'er in stop_machine() and
5608  * there's no concurrency possible, we hold the required locks anyway
5609  * because of lock validation efforts.
5610  */
5611 static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf)
5612 {
5613         struct rq *rq = dead_rq;
5614         struct task_struct *next, *stop = rq->stop;
5615         struct rq_flags orf = *rf;
5616         int dest_cpu;
5617
5618         /*
5619          * Fudge the rq selection such that the below task selection loop
5620          * doesn't get stuck on the currently eligible stop task.
5621          *
5622          * We're currently inside stop_machine() and the rq is either stuck
5623          * in the stop_machine_cpu_stop() loop, or we're executing this code,
5624          * either way we should never end up calling schedule() until we're
5625          * done here.
5626          */
5627         rq->stop = NULL;
5628
5629         /*
5630          * put_prev_task() and pick_next_task() sched
5631          * class method both need to have an up-to-date
5632          * value of rq->clock[_task]
5633          */
5634         update_rq_clock(rq);
5635
5636         for (;;) {
5637                 /*
5638                  * There's this thread running, bail when that's the only
5639                  * remaining thread:
5640                  */
5641                 if (rq->nr_running == 1)
5642                         break;
5643
5644                 /*
5645                  * pick_next_task() assumes pinned rq->lock:
5646                  */
5647                 next = pick_next_task(rq, &fake_task, rf);
5648                 BUG_ON(!next);
5649                 put_prev_task(rq, next);
5650
5651                 /*
5652                  * Rules for changing task_struct::cpus_allowed are holding
5653                  * both pi_lock and rq->lock, such that holding either
5654                  * stabilizes the mask.
5655                  *
5656                  * Drop rq->lock is not quite as disastrous as it usually is
5657                  * because !cpu_active at this point, which means load-balance
5658                  * will not interfere. Also, stop-machine.
5659                  */
5660                 rq_unlock(rq, rf);
5661                 raw_spin_lock(&next->pi_lock);
5662                 rq_relock(rq, rf);
5663
5664                 /*
5665                  * Since we're inside stop-machine, _nothing_ should have
5666                  * changed the task, WARN if weird stuff happened, because in
5667                  * that case the above rq->lock drop is a fail too.
5668                  */
5669                 if (WARN_ON(task_rq(next) != rq || !task_on_rq_queued(next))) {
5670                         raw_spin_unlock(&next->pi_lock);
5671                         continue;
5672                 }
5673
5674                 /* Find suitable destination for @next, with force if needed. */
5675                 dest_cpu = select_fallback_rq(dead_rq->cpu, next);
5676                 rq = __migrate_task(rq, rf, next, dest_cpu);
5677                 if (rq != dead_rq) {
5678                         rq_unlock(rq, rf);
5679                         rq = dead_rq;
5680                         *rf = orf;
5681                         rq_relock(rq, rf);
5682                 }
5683                 raw_spin_unlock(&next->pi_lock);
5684         }
5685
5686         rq->stop = stop;
5687 }
5688 #endif /* CONFIG_HOTPLUG_CPU */
5689
5690 void set_rq_online(struct rq *rq)
5691 {
5692         if (!rq->online) {
5693                 const struct sched_class *class;
5694
5695                 cpumask_set_cpu(rq->cpu, rq->rd->online);
5696                 rq->online = 1;
5697
5698                 for_each_class(class) {
5699                         if (class->rq_online)
5700                                 class->rq_online(rq);
5701                 }
5702         }
5703 }
5704
5705 void set_rq_offline(struct rq *rq)
5706 {
5707         if (rq->online) {
5708                 const struct sched_class *class;
5709
5710                 for_each_class(class) {
5711                         if (class->rq_offline)
5712                                 class->rq_offline(rq);
5713                 }
5714
5715                 cpumask_clear_cpu(rq->cpu, rq->rd->online);
5716                 rq->online = 0;
5717         }
5718 }
5719
5720 static void set_cpu_rq_start_time(unsigned int cpu)
5721 {
5722         struct rq *rq = cpu_rq(cpu);
5723
5724         rq->age_stamp = sched_clock_cpu(cpu);
5725 }
5726
5727 /*
5728  * used to mark begin/end of suspend/resume:
5729  */
5730 static int num_cpus_frozen;
5731
5732 /*
5733  * Update cpusets according to cpu_active mask.  If cpusets are
5734  * disabled, cpuset_update_active_cpus() becomes a simple wrapper
5735  * around partition_sched_domains().
5736  *
5737  * If we come here as part of a suspend/resume, don't touch cpusets because we
5738  * want to restore it back to its original state upon resume anyway.
5739  */
5740 static void cpuset_cpu_active(void)
5741 {
5742         if (cpuhp_tasks_frozen) {
5743                 /*
5744                  * num_cpus_frozen tracks how many CPUs are involved in suspend
5745                  * resume sequence. As long as this is not the last online
5746                  * operation in the resume sequence, just build a single sched
5747                  * domain, ignoring cpusets.
5748                  */
5749                 partition_sched_domains(1, NULL, NULL);
5750                 if (--num_cpus_frozen)
5751                         return;
5752                 /*
5753                  * This is the last CPU online operation. So fall through and
5754                  * restore the original sched domains by considering the
5755                  * cpuset configurations.
5756                  */
5757                 cpuset_force_rebuild();
5758         }
5759         cpuset_update_active_cpus();
5760 }
5761
5762 static int cpuset_cpu_inactive(unsigned int cpu)
5763 {
5764         if (!cpuhp_tasks_frozen) {
5765                 if (dl_cpu_busy(cpu))
5766                         return -EBUSY;
5767                 cpuset_update_active_cpus();
5768         } else {
5769                 num_cpus_frozen++;
5770                 partition_sched_domains(1, NULL, NULL);
5771         }
5772         return 0;
5773 }
5774
5775 int sched_cpu_activate(unsigned int cpu)
5776 {
5777         struct rq *rq = cpu_rq(cpu);
5778         struct rq_flags rf;
5779
5780         set_cpu_active(cpu, true);
5781
5782         if (sched_smp_initialized) {
5783                 sched_domains_numa_masks_set(cpu);
5784                 cpuset_cpu_active();
5785         }
5786
5787         /*
5788          * Put the rq online, if not already. This happens:
5789          *
5790          * 1) In the early boot process, because we build the real domains
5791          *    after all CPUs have been brought up.
5792          *
5793          * 2) At runtime, if cpuset_cpu_active() fails to rebuild the
5794          *    domains.
5795          */
5796         rq_lock_irqsave(rq, &rf);
5797         if (rq->rd) {
5798                 BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
5799                 set_rq_online(rq);
5800         }
5801         rq_unlock_irqrestore(rq, &rf);
5802
5803         update_max_interval();
5804
5805         return 0;
5806 }
5807
5808 int sched_cpu_deactivate(unsigned int cpu)
5809 {
5810         int ret;
5811
5812         set_cpu_active(cpu, false);
5813         /*
5814          * We've cleared cpu_active_mask, wait for all preempt-disabled and RCU
5815          * users of this state to go away such that all new such users will
5816          * observe it.
5817          *
5818          * Do sync before park smpboot threads to take care the rcu boost case.
5819          */
5820         synchronize_rcu_mult(call_rcu, call_rcu_sched);
5821
5822         if (!sched_smp_initialized)
5823                 return 0;
5824
5825         ret = cpuset_cpu_inactive(cpu);
5826         if (ret) {
5827                 set_cpu_active(cpu, true);
5828                 return ret;
5829         }
5830         sched_domains_numa_masks_clear(cpu);
5831         return 0;
5832 }
5833
5834 static void sched_rq_cpu_starting(unsigned int cpu)
5835 {
5836         struct rq *rq = cpu_rq(cpu);
5837
5838         rq->calc_load_update = calc_load_update;
5839         update_max_interval();
5840 }
5841
5842 int sched_cpu_starting(unsigned int cpu)
5843 {
5844         set_cpu_rq_start_time(cpu);
5845         sched_rq_cpu_starting(cpu);
5846         sched_tick_start(cpu);
5847         return 0;
5848 }
5849
5850 #ifdef CONFIG_HOTPLUG_CPU
5851 int sched_cpu_dying(unsigned int cpu)
5852 {
5853         struct rq *rq = cpu_rq(cpu);
5854         struct rq_flags rf;
5855
5856         /* Handle pending wakeups and then migrate everything off */
5857         sched_ttwu_pending();
5858         sched_tick_stop(cpu);
5859
5860         rq_lock_irqsave(rq, &rf);
5861         if (rq->rd) {
5862                 BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
5863                 set_rq_offline(rq);
5864         }
5865         migrate_tasks(rq, &rf);
5866         BUG_ON(rq->nr_running != 1);
5867         rq_unlock_irqrestore(rq, &rf);
5868
5869         calc_load_migrate(rq);
5870         update_max_interval();
5871         nohz_balance_exit_idle(rq);
5872         hrtick_clear(rq);
5873         return 0;
5874 }
5875 #endif
5876
5877 #ifdef CONFIG_SCHED_SMT
5878 DEFINE_STATIC_KEY_FALSE(sched_smt_present);
5879
5880 static void sched_init_smt(void)
5881 {
5882         /*
5883          * We've enumerated all CPUs and will assume that if any CPU
5884          * has SMT siblings, CPU0 will too.
5885          */
5886         if (cpumask_weight(cpu_smt_mask(0)) > 1)
5887                 static_branch_enable(&sched_smt_present);
5888 }
5889 #else
5890 static inline void sched_init_smt(void) { }
5891 #endif
5892
5893 void __init sched_init_smp(void)
5894 {
5895         sched_init_numa();
5896
5897         /*
5898          * There's no userspace yet to cause hotplug operations; hence all the
5899          * CPU masks are stable and all blatant races in the below code cannot
5900          * happen.
5901          */
5902         mutex_lock(&sched_domains_mutex);
5903         sched_init_domains(cpu_active_mask);
5904         mutex_unlock(&sched_domains_mutex);
5905
5906         /* Move init over to a non-isolated CPU */
5907         if (set_cpus_allowed_ptr(current, housekeeping_cpumask(HK_FLAG_DOMAIN)) < 0)
5908                 BUG();
5909         sched_init_granularity();
5910
5911         init_sched_rt_class();
5912         init_sched_dl_class();
5913
5914         sched_init_smt();
5915
5916         sched_smp_initialized = true;
5917 }
5918
5919 static int __init migration_init(void)
5920 {
5921         sched_rq_cpu_starting(smp_processor_id());
5922         return 0;
5923 }
5924 early_initcall(migration_init);
5925
5926 #else
5927 void __init sched_init_smp(void)
5928 {
5929         sched_init_granularity();
5930 }
5931 #endif /* CONFIG_SMP */
5932
5933 int in_sched_functions(unsigned long addr)
5934 {
5935         return in_lock_functions(addr) ||
5936                 (addr >= (unsigned long)__sched_text_start
5937                 && addr < (unsigned long)__sched_text_end);
5938 }
5939
5940 #ifdef CONFIG_CGROUP_SCHED
5941 /*
5942  * Default task group.
5943  * Every task in system belongs to this group at bootup.
5944  */
5945 struct task_group root_task_group;
5946 LIST_HEAD(task_groups);
5947
5948 /* Cacheline aligned slab cache for task_group */
5949 static struct kmem_cache *task_group_cache __read_mostly;
5950 #endif
5951
5952 DECLARE_PER_CPU(cpumask_var_t, load_balance_mask);
5953 DECLARE_PER_CPU(cpumask_var_t, select_idle_mask);
5954
5955 void __init sched_init(void)
5956 {
5957         int i, j;
5958         unsigned long alloc_size = 0, ptr;
5959
5960         sched_clock_init();
5961         wait_bit_init();
5962
5963 #ifdef CONFIG_FAIR_GROUP_SCHED
5964         alloc_size += 2 * nr_cpu_ids * sizeof(void **);
5965 #endif
5966 #ifdef CONFIG_RT_GROUP_SCHED
5967         alloc_size += 2 * nr_cpu_ids * sizeof(void **);
5968 #endif
5969         if (alloc_size) {
5970                 ptr = (unsigned long)kzalloc(alloc_size, GFP_NOWAIT);
5971
5972 #ifdef CONFIG_FAIR_GROUP_SCHED
5973                 root_task_group.se = (struct sched_entity **)ptr;
5974                 ptr += nr_cpu_ids * sizeof(void **);
5975
5976                 root_task_group.cfs_rq = (struct cfs_rq **)ptr;
5977                 ptr += nr_cpu_ids * sizeof(void **);
5978
5979 #endif /* CONFIG_FAIR_GROUP_SCHED */
5980 #ifdef CONFIG_RT_GROUP_SCHED
5981                 root_task_group.rt_se = (struct sched_rt_entity **)ptr;
5982                 ptr += nr_cpu_ids * sizeof(void **);
5983
5984                 root_task_group.rt_rq = (struct rt_rq **)ptr;
5985                 ptr += nr_cpu_ids * sizeof(void **);
5986
5987 #endif /* CONFIG_RT_GROUP_SCHED */
5988         }
5989 #ifdef CONFIG_CPUMASK_OFFSTACK
5990         for_each_possible_cpu(i) {
5991                 per_cpu(load_balance_mask, i) = (cpumask_var_t)kzalloc_node(
5992                         cpumask_size(), GFP_KERNEL, cpu_to_node(i));
5993                 per_cpu(select_idle_mask, i) = (cpumask_var_t)kzalloc_node(
5994                         cpumask_size(), GFP_KERNEL, cpu_to_node(i));
5995         }
5996 #endif /* CONFIG_CPUMASK_OFFSTACK */
5997
5998         init_rt_bandwidth(&def_rt_bandwidth, global_rt_period(), global_rt_runtime());
5999         init_dl_bandwidth(&def_dl_bandwidth, global_rt_period(), global_rt_runtime());
6000
6001 #ifdef CONFIG_SMP
6002         init_defrootdomain();
6003 #endif
6004
6005 #ifdef CONFIG_RT_GROUP_SCHED
6006         init_rt_bandwidth(&root_task_group.rt_bandwidth,
6007                         global_rt_period(), global_rt_runtime());
6008 #endif /* CONFIG_RT_GROUP_SCHED */
6009
6010 #ifdef CONFIG_CGROUP_SCHED
6011         task_group_cache = KMEM_CACHE(task_group, 0);
6012
6013         list_add(&root_task_group.list, &task_groups);
6014         INIT_LIST_HEAD(&root_task_group.children);
6015         INIT_LIST_HEAD(&root_task_group.siblings);
6016         autogroup_init(&init_task);
6017 #endif /* CONFIG_CGROUP_SCHED */
6018
6019         for_each_possible_cpu(i) {
6020                 struct rq *rq;
6021
6022                 rq = cpu_rq(i);
6023                 raw_spin_lock_init(&rq->lock);
6024                 rq->nr_running = 0;
6025                 rq->calc_load_active = 0;
6026                 rq->calc_load_update = jiffies + LOAD_FREQ;
6027                 init_cfs_rq(&rq->cfs);
6028                 init_rt_rq(&rq->rt);
6029                 init_dl_rq(&rq->dl);
6030 #ifdef CONFIG_FAIR_GROUP_SCHED
6031                 root_task_group.shares = ROOT_TASK_GROUP_LOAD;
6032                 INIT_LIST_HEAD(&rq->leaf_cfs_rq_list);
6033                 rq->tmp_alone_branch = &rq->leaf_cfs_rq_list;
6034                 /*
6035                  * How much CPU bandwidth does root_task_group get?
6036                  *
6037                  * In case of task-groups formed thr' the cgroup filesystem, it
6038                  * gets 100% of the CPU resources in the system. This overall
6039                  * system CPU resource is divided among the tasks of
6040                  * root_task_group and its child task-groups in a fair manner,
6041                  * based on each entity's (task or task-group's) weight
6042                  * (se->load.weight).
6043                  *
6044                  * In other words, if root_task_group has 10 tasks of weight
6045                  * 1024) and two child groups A0 and A1 (of weight 1024 each),
6046                  * then A0's share of the CPU resource is:
6047                  *
6048                  *      A0's bandwidth = 1024 / (10*1024 + 1024 + 1024) = 8.33%
6049                  *
6050                  * We achieve this by letting root_task_group's tasks sit
6051                  * directly in rq->cfs (i.e root_task_group->se[] = NULL).
6052                  */
6053                 init_cfs_bandwidth(&root_task_group.cfs_bandwidth);
6054                 init_tg_cfs_entry(&root_task_group, &rq->cfs, NULL, i, NULL);
6055 #endif /* CONFIG_FAIR_GROUP_SCHED */
6056
6057                 rq->rt.rt_runtime = def_rt_bandwidth.rt_runtime;
6058 #ifdef CONFIG_RT_GROUP_SCHED
6059                 init_tg_rt_entry(&root_task_group, &rq->rt, NULL, i, NULL);
6060 #endif
6061
6062                 for (j = 0; j < CPU_LOAD_IDX_MAX; j++)
6063                         rq->cpu_load[j] = 0;
6064
6065 #ifdef CONFIG_SMP
6066                 rq->sd = NULL;
6067                 rq->rd = NULL;
6068                 rq->cpu_capacity = rq->cpu_capacity_orig = SCHED_CAPACITY_SCALE;
6069                 rq->balance_callback = NULL;
6070                 rq->active_balance = 0;
6071                 rq->next_balance = jiffies;
6072                 rq->push_cpu = 0;
6073                 rq->cpu = i;
6074                 rq->online = 0;
6075                 rq->idle_stamp = 0;
6076                 rq->avg_idle = 2*sysctl_sched_migration_cost;
6077                 rq->max_idle_balance_cost = sysctl_sched_migration_cost;
6078
6079                 INIT_LIST_HEAD(&rq->cfs_tasks);
6080
6081                 rq_attach_root(rq, &def_root_domain);
6082 #ifdef CONFIG_NO_HZ_COMMON
6083                 rq->last_load_update_tick = jiffies;
6084                 rq->last_blocked_load_update_tick = jiffies;
6085                 atomic_set(&rq->nohz_flags, 0);
6086 #endif
6087 #endif /* CONFIG_SMP */
6088                 hrtick_rq_init(rq);
6089                 atomic_set(&rq->nr_iowait, 0);
6090         }
6091
6092         set_load_weight(&init_task, false);
6093
6094         /*
6095          * The boot idle thread does lazy MMU switching as well:
6096          */
6097         mmgrab(&init_mm);
6098         enter_lazy_tlb(&init_mm, current);
6099
6100         /*
6101          * Make us the idle thread. Technically, schedule() should not be
6102          * called from this thread, however somewhere below it might be,
6103          * but because we are the idle thread, we just pick up running again
6104          * when this runqueue becomes "idle".
6105          */
6106         init_idle(current, smp_processor_id());
6107
6108         calc_load_update = jiffies + LOAD_FREQ;
6109
6110 #ifdef CONFIG_SMP
6111         idle_thread_set_boot_cpu();
6112         set_cpu_rq_start_time(smp_processor_id());
6113 #endif
6114         init_sched_fair_class();
6115
6116         init_schedstats();
6117
6118         scheduler_running = 1;
6119 }
6120
6121 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
6122 static inline int preempt_count_equals(int preempt_offset)
6123 {
6124         int nested = preempt_count() + rcu_preempt_depth();
6125
6126         return (nested == preempt_offset);
6127 }
6128
6129 void __might_sleep(const char *file, int line, int preempt_offset)
6130 {
6131         /*
6132          * Blocking primitives will set (and therefore destroy) current->state,
6133          * since we will exit with TASK_RUNNING make sure we enter with it,
6134          * otherwise we will destroy state.
6135          */
6136         WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change,
6137                         "do not call blocking ops when !TASK_RUNNING; "
6138                         "state=%lx set at [<%p>] %pS\n",
6139                         current->state,
6140                         (void *)current->task_state_change,
6141                         (void *)current->task_state_change);
6142
6143         ___might_sleep(file, line, preempt_offset);
6144 }
6145 EXPORT_SYMBOL(__might_sleep);
6146
6147 void ___might_sleep(const char *file, int line, int preempt_offset)
6148 {
6149         /* Ratelimiting timestamp: */
6150         static unsigned long prev_jiffy;
6151
6152         unsigned long preempt_disable_ip;
6153
6154         /* WARN_ON_ONCE() by default, no rate limit required: */
6155         rcu_sleep_check();
6156
6157         if ((preempt_count_equals(preempt_offset) && !irqs_disabled() &&
6158              !is_idle_task(current)) ||
6159             system_state == SYSTEM_BOOTING || system_state > SYSTEM_RUNNING ||
6160             oops_in_progress)
6161                 return;
6162
6163         if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
6164                 return;
6165         prev_jiffy = jiffies;
6166
6167         /* Save this before calling printk(), since that will clobber it: */
6168         preempt_disable_ip = get_preempt_disable_ip(current);
6169
6170         printk(KERN_ERR
6171                 "BUG: sleeping function called from invalid context at %s:%d\n",
6172                         file, line);
6173         printk(KERN_ERR
6174                 "in_atomic(): %d, irqs_disabled(): %d, pid: %d, name: %s\n",
6175                         in_atomic(), irqs_disabled(),
6176                         current->pid, current->comm);
6177
6178         if (task_stack_end_corrupted(current))
6179                 printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
6180
6181         debug_show_held_locks(current);
6182         if (irqs_disabled())
6183                 print_irqtrace_events(current);
6184         if (IS_ENABLED(CONFIG_DEBUG_PREEMPT)
6185             && !preempt_count_equals(preempt_offset)) {
6186                 pr_err("Preemption disabled at:");
6187                 print_ip_sym(preempt_disable_ip);
6188                 pr_cont("\n");
6189         }
6190         dump_stack();
6191         add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
6192 }
6193 EXPORT_SYMBOL(___might_sleep);
6194 #endif
6195
6196 #ifdef CONFIG_MAGIC_SYSRQ
6197 void normalize_rt_tasks(void)
6198 {
6199         struct task_struct *g, *p;
6200         struct sched_attr attr = {
6201                 .sched_policy = SCHED_NORMAL,
6202         };
6203
6204         read_lock(&tasklist_lock);
6205         for_each_process_thread(g, p) {
6206                 /*
6207                  * Only normalize user tasks:
6208                  */
6209                 if (p->flags & PF_KTHREAD)
6210                         continue;
6211
6212                 p->se.exec_start = 0;
6213                 schedstat_set(p->se.statistics.wait_start,  0);
6214                 schedstat_set(p->se.statistics.sleep_start, 0);
6215                 schedstat_set(p->se.statistics.block_start, 0);
6216
6217                 if (!dl_task(p) && !rt_task(p)) {
6218                         /*
6219                          * Renice negative nice level userspace
6220                          * tasks back to 0:
6221                          */
6222                         if (task_nice(p) < 0)
6223                                 set_user_nice(p, 0);
6224                         continue;
6225                 }
6226
6227                 __sched_setscheduler(p, &attr, false, false);
6228         }
6229         read_unlock(&tasklist_lock);
6230 }
6231
6232 #endif /* CONFIG_MAGIC_SYSRQ */
6233
6234 #if defined(CONFIG_IA64) || defined(CONFIG_KGDB_KDB)
6235 /*
6236  * These functions are only useful for the IA64 MCA handling, or kdb.
6237  *
6238  * They can only be called when the whole system has been
6239  * stopped - every CPU needs to be quiescent, and no scheduling
6240  * activity can take place. Using them for anything else would
6241  * be a serious bug, and as a result, they aren't even visible
6242  * under any other configuration.
6243  */
6244
6245 /**
6246  * curr_task - return the current task for a given CPU.
6247  * @cpu: the processor in question.
6248  *
6249  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
6250  *
6251  * Return: The current task for @cpu.
6252  */
6253 struct task_struct *curr_task(int cpu)
6254 {
6255         return cpu_curr(cpu);
6256 }
6257
6258 #endif /* defined(CONFIG_IA64) || defined(CONFIG_KGDB_KDB) */
6259
6260 #ifdef CONFIG_IA64
6261 /**
6262  * set_curr_task - set the current task for a given CPU.
6263  * @cpu: the processor in question.
6264  * @p: the task pointer to set.
6265  *
6266  * Description: This function must only be used when non-maskable interrupts
6267  * are serviced on a separate stack. It allows the architecture to switch the
6268  * notion of the current task on a CPU in a non-blocking manner. This function
6269  * must be called with all CPU's synchronized, and interrupts disabled, the
6270  * and caller must save the original value of the current task (see
6271  * curr_task() above) and restore that value before reenabling interrupts and
6272  * re-starting the system.
6273  *
6274  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
6275  */
6276 void ia64_set_curr_task(int cpu, struct task_struct *p)
6277 {
6278         cpu_curr(cpu) = p;
6279 }
6280
6281 #endif
6282
6283 #ifdef CONFIG_CGROUP_SCHED
6284 /* task_group_lock serializes the addition/removal of task groups */
6285 static DEFINE_SPINLOCK(task_group_lock);
6286
6287 static void sched_free_group(struct task_group *tg)
6288 {
6289         free_fair_sched_group(tg);
6290         free_rt_sched_group(tg);
6291         autogroup_free(tg);
6292         kmem_cache_free(task_group_cache, tg);
6293 }
6294
6295 /* allocate runqueue etc for a new task group */
6296 struct task_group *sched_create_group(struct task_group *parent)
6297 {
6298         struct task_group *tg;
6299
6300         tg = kmem_cache_alloc(task_group_cache, GFP_KERNEL | __GFP_ZERO);
6301         if (!tg)
6302                 return ERR_PTR(-ENOMEM);
6303
6304         if (!alloc_fair_sched_group(tg, parent))
6305                 goto err;
6306
6307         if (!alloc_rt_sched_group(tg, parent))
6308                 goto err;
6309
6310         return tg;
6311
6312 err:
6313         sched_free_group(tg);
6314         return ERR_PTR(-ENOMEM);
6315 }
6316
6317 void sched_online_group(struct task_group *tg, struct task_group *parent)
6318 {
6319         unsigned long flags;
6320
6321         spin_lock_irqsave(&task_group_lock, flags);
6322         list_add_rcu(&tg->list, &task_groups);
6323
6324         /* Root should already exist: */
6325         WARN_ON(!parent);
6326
6327         tg->parent = parent;
6328         INIT_LIST_HEAD(&tg->children);
6329         list_add_rcu(&tg->siblings, &parent->children);
6330         spin_unlock_irqrestore(&task_group_lock, flags);
6331
6332         online_fair_sched_group(tg);
6333 }
6334
6335 /* rcu callback to free various structures associated with a task group */
6336 static void sched_free_group_rcu(struct rcu_head *rhp)
6337 {
6338         /* Now it should be safe to free those cfs_rqs: */
6339         sched_free_group(container_of(rhp, struct task_group, rcu));
6340 }
6341
6342 void sched_destroy_group(struct task_group *tg)
6343 {
6344         /* Wait for possible concurrent references to cfs_rqs complete: */
6345         call_rcu(&tg->rcu, sched_free_group_rcu);
6346 }
6347
6348 void sched_offline_group(struct task_group *tg)
6349 {
6350         unsigned long flags;
6351
6352         /* End participation in shares distribution: */
6353         unregister_fair_sched_group(tg);
6354
6355         spin_lock_irqsave(&task_group_lock, flags);
6356         list_del_rcu(&tg->list);
6357         list_del_rcu(&tg->siblings);
6358         spin_unlock_irqrestore(&task_group_lock, flags);
6359 }
6360
6361 static void sched_change_group(struct task_struct *tsk, int type)
6362 {
6363         struct task_group *tg;
6364
6365         /*
6366          * All callers are synchronized by task_rq_lock(); we do not use RCU
6367          * which is pointless here. Thus, we pass "true" to task_css_check()
6368          * to prevent lockdep warnings.
6369          */
6370         tg = container_of(task_css_check(tsk, cpu_cgrp_id, true),
6371                           struct task_group, css);
6372         tg = autogroup_task_group(tsk, tg);
6373         tsk->sched_task_group = tg;
6374
6375 #ifdef CONFIG_FAIR_GROUP_SCHED
6376         if (tsk->sched_class->task_change_group)
6377                 tsk->sched_class->task_change_group(tsk, type);
6378         else
6379 #endif
6380                 set_task_rq(tsk, task_cpu(tsk));
6381 }
6382
6383 /*
6384  * Change task's runqueue when it moves between groups.
6385  *
6386  * The caller of this function should have put the task in its new group by
6387  * now. This function just updates tsk->se.cfs_rq and tsk->se.parent to reflect
6388  * its new group.
6389  */
6390 void sched_move_task(struct task_struct *tsk)
6391 {
6392         int queued, running, queue_flags =
6393                 DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
6394         struct rq_flags rf;
6395         struct rq *rq;
6396
6397         rq = task_rq_lock(tsk, &rf);
6398         update_rq_clock(rq);
6399
6400         running = task_current(rq, tsk);
6401         queued = task_on_rq_queued(tsk);
6402
6403         if (queued)
6404                 dequeue_task(rq, tsk, queue_flags);
6405         if (running)
6406                 put_prev_task(rq, tsk);
6407
6408         sched_change_group(tsk, TASK_MOVE_GROUP);
6409
6410         if (queued)
6411                 enqueue_task(rq, tsk, queue_flags);
6412         if (running)
6413                 set_curr_task(rq, tsk);
6414
6415         task_rq_unlock(rq, tsk, &rf);
6416 }
6417
6418 static inline struct task_group *css_tg(struct cgroup_subsys_state *css)
6419 {
6420         return css ? container_of(css, struct task_group, css) : NULL;
6421 }
6422
6423 static struct cgroup_subsys_state *
6424 cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
6425 {
6426         struct task_group *parent = css_tg(parent_css);
6427         struct task_group *tg;
6428
6429         if (!parent) {
6430                 /* This is early initialization for the top cgroup */
6431                 return &root_task_group.css;
6432         }
6433
6434         tg = sched_create_group(parent);
6435         if (IS_ERR(tg))
6436                 return ERR_PTR(-ENOMEM);
6437
6438         return &tg->css;
6439 }
6440
6441 /* Expose task group only after completing cgroup initialization */
6442 static int cpu_cgroup_css_online(struct cgroup_subsys_state *css)
6443 {
6444         struct task_group *tg = css_tg(css);
6445         struct task_group *parent = css_tg(css->parent);
6446
6447         if (parent)
6448                 sched_online_group(tg, parent);
6449         return 0;
6450 }
6451
6452 static void cpu_cgroup_css_released(struct cgroup_subsys_state *css)
6453 {
6454         struct task_group *tg = css_tg(css);
6455
6456         sched_offline_group(tg);
6457 }
6458
6459 static void cpu_cgroup_css_free(struct cgroup_subsys_state *css)
6460 {
6461         struct task_group *tg = css_tg(css);
6462
6463         /*
6464          * Relies on the RCU grace period between css_released() and this.
6465          */
6466         sched_free_group(tg);
6467 }
6468
6469 /*
6470  * This is called before wake_up_new_task(), therefore we really only
6471  * have to set its group bits, all the other stuff does not apply.
6472  */
6473 static void cpu_cgroup_fork(struct task_struct *task)
6474 {
6475         struct rq_flags rf;
6476         struct rq *rq;
6477
6478         rq = task_rq_lock(task, &rf);
6479
6480         update_rq_clock(rq);
6481         sched_change_group(task, TASK_SET_GROUP);
6482
6483         task_rq_unlock(rq, task, &rf);
6484 }
6485
6486 static int cpu_cgroup_can_attach(struct cgroup_taskset *tset)
6487 {
6488         struct task_struct *task;
6489         struct cgroup_subsys_state *css;
6490         int ret = 0;
6491
6492         cgroup_taskset_for_each(task, css, tset) {
6493 #ifdef CONFIG_RT_GROUP_SCHED
6494                 if (!sched_rt_can_attach(css_tg(css), task))
6495                         return -EINVAL;
6496 #else
6497                 /* We don't support RT-tasks being in separate groups */
6498                 if (task->sched_class != &fair_sched_class)
6499                         return -EINVAL;
6500 #endif
6501                 /*
6502                  * Serialize against wake_up_new_task() such that if its
6503                  * running, we're sure to observe its full state.
6504                  */
6505                 raw_spin_lock_irq(&task->pi_lock);
6506                 /*
6507                  * Avoid calling sched_move_task() before wake_up_new_task()
6508                  * has happened. This would lead to problems with PELT, due to
6509                  * move wanting to detach+attach while we're not attached yet.
6510                  */
6511                 if (task->state == TASK_NEW)
6512                         ret = -EINVAL;
6513                 raw_spin_unlock_irq(&task->pi_lock);
6514
6515                 if (ret)
6516                         break;
6517         }
6518         return ret;
6519 }
6520
6521 static void cpu_cgroup_attach(struct cgroup_taskset *tset)
6522 {
6523         struct task_struct *task;
6524         struct cgroup_subsys_state *css;
6525
6526         cgroup_taskset_for_each(task, css, tset)
6527                 sched_move_task(task);
6528 }
6529
6530 #ifdef CONFIG_FAIR_GROUP_SCHED
6531 static int cpu_shares_write_u64(struct cgroup_subsys_state *css,
6532                                 struct cftype *cftype, u64 shareval)
6533 {
6534         return sched_group_set_shares(css_tg(css), scale_load(shareval));
6535 }
6536
6537 static u64 cpu_shares_read_u64(struct cgroup_subsys_state *css,
6538                                struct cftype *cft)
6539 {
6540         struct task_group *tg = css_tg(css);
6541
6542         return (u64) scale_load_down(tg->shares);
6543 }
6544
6545 #ifdef CONFIG_CFS_BANDWIDTH
6546 static DEFINE_MUTEX(cfs_constraints_mutex);
6547
6548 const u64 max_cfs_quota_period = 1 * NSEC_PER_SEC; /* 1s */
6549 const u64 min_cfs_quota_period = 1 * NSEC_PER_MSEC; /* 1ms */
6550
6551 static int __cfs_schedulable(struct task_group *tg, u64 period, u64 runtime);
6552
6553 static int tg_set_cfs_bandwidth(struct task_group *tg, u64 period, u64 quota)
6554 {
6555         int i, ret = 0, runtime_enabled, runtime_was_enabled;
6556         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
6557
6558         if (tg == &root_task_group)
6559                 return -EINVAL;
6560
6561         /*
6562          * Ensure we have at some amount of bandwidth every period.  This is
6563          * to prevent reaching a state of large arrears when throttled via
6564          * entity_tick() resulting in prolonged exit starvation.
6565          */
6566         if (quota < min_cfs_quota_period || period < min_cfs_quota_period)
6567                 return -EINVAL;
6568
6569         /*
6570          * Likewise, bound things on the otherside by preventing insane quota
6571          * periods.  This also allows us to normalize in computing quota
6572          * feasibility.
6573          */
6574         if (period > max_cfs_quota_period)
6575                 return -EINVAL;
6576
6577         /*
6578          * Prevent race between setting of cfs_rq->runtime_enabled and
6579          * unthrottle_offline_cfs_rqs().
6580          */
6581         get_online_cpus();
6582         mutex_lock(&cfs_constraints_mutex);
6583         ret = __cfs_schedulable(tg, period, quota);
6584         if (ret)
6585                 goto out_unlock;
6586
6587         runtime_enabled = quota != RUNTIME_INF;
6588         runtime_was_enabled = cfs_b->quota != RUNTIME_INF;
6589         /*
6590          * If we need to toggle cfs_bandwidth_used, off->on must occur
6591          * before making related changes, and on->off must occur afterwards
6592          */
6593         if (runtime_enabled && !runtime_was_enabled)
6594                 cfs_bandwidth_usage_inc();
6595         raw_spin_lock_irq(&cfs_b->lock);
6596         cfs_b->period = ns_to_ktime(period);
6597         cfs_b->quota = quota;
6598
6599         __refill_cfs_bandwidth_runtime(cfs_b);
6600
6601         /* Restart the period timer (if active) to handle new period expiry: */
6602         if (runtime_enabled)
6603                 start_cfs_bandwidth(cfs_b);
6604
6605         raw_spin_unlock_irq(&cfs_b->lock);
6606
6607         for_each_online_cpu(i) {
6608                 struct cfs_rq *cfs_rq = tg->cfs_rq[i];
6609                 struct rq *rq = cfs_rq->rq;
6610                 struct rq_flags rf;
6611
6612                 rq_lock_irq(rq, &rf);
6613                 cfs_rq->runtime_enabled = runtime_enabled;
6614                 cfs_rq->runtime_remaining = 0;
6615
6616                 if (cfs_rq->throttled)
6617                         unthrottle_cfs_rq(cfs_rq);
6618                 rq_unlock_irq(rq, &rf);
6619         }
6620         if (runtime_was_enabled && !runtime_enabled)
6621                 cfs_bandwidth_usage_dec();
6622 out_unlock:
6623         mutex_unlock(&cfs_constraints_mutex);
6624         put_online_cpus();
6625
6626         return ret;
6627 }
6628
6629 int tg_set_cfs_quota(struct task_group *tg, long cfs_quota_us)
6630 {
6631         u64 quota, period;
6632
6633         period = ktime_to_ns(tg->cfs_bandwidth.period);
6634         if (cfs_quota_us < 0)
6635                 quota = RUNTIME_INF;
6636         else
6637                 quota = (u64)cfs_quota_us * NSEC_PER_USEC;
6638
6639         return tg_set_cfs_bandwidth(tg, period, quota);
6640 }
6641
6642 long tg_get_cfs_quota(struct task_group *tg)
6643 {
6644         u64 quota_us;
6645
6646         if (tg->cfs_bandwidth.quota == RUNTIME_INF)
6647                 return -1;
6648
6649         quota_us = tg->cfs_bandwidth.quota;
6650         do_div(quota_us, NSEC_PER_USEC);
6651
6652         return quota_us;
6653 }
6654
6655 int tg_set_cfs_period(struct task_group *tg, long cfs_period_us)
6656 {
6657         u64 quota, period;
6658
6659         period = (u64)cfs_period_us * NSEC_PER_USEC;
6660         quota = tg->cfs_bandwidth.quota;
6661
6662         return tg_set_cfs_bandwidth(tg, period, quota);
6663 }
6664
6665 long tg_get_cfs_period(struct task_group *tg)
6666 {
6667         u64 cfs_period_us;
6668
6669         cfs_period_us = ktime_to_ns(tg->cfs_bandwidth.period);
6670         do_div(cfs_period_us, NSEC_PER_USEC);
6671
6672         return cfs_period_us;
6673 }
6674
6675 static s64 cpu_cfs_quota_read_s64(struct cgroup_subsys_state *css,
6676                                   struct cftype *cft)
6677 {
6678         return tg_get_cfs_quota(css_tg(css));
6679 }
6680
6681 static int cpu_cfs_quota_write_s64(struct cgroup_subsys_state *css,
6682                                    struct cftype *cftype, s64 cfs_quota_us)
6683 {
6684         return tg_set_cfs_quota(css_tg(css), cfs_quota_us);
6685 }
6686
6687 static u64 cpu_cfs_period_read_u64(struct cgroup_subsys_state *css,
6688                                    struct cftype *cft)
6689 {
6690         return tg_get_cfs_period(css_tg(css));
6691 }
6692
6693 static int cpu_cfs_period_write_u64(struct cgroup_subsys_state *css,
6694                                     struct cftype *cftype, u64 cfs_period_us)
6695 {
6696         return tg_set_cfs_period(css_tg(css), cfs_period_us);
6697 }
6698
6699 struct cfs_schedulable_data {
6700         struct task_group *tg;
6701         u64 period, quota;
6702 };
6703
6704 /*
6705  * normalize group quota/period to be quota/max_period
6706  * note: units are usecs
6707  */
6708 static u64 normalize_cfs_quota(struct task_group *tg,
6709                                struct cfs_schedulable_data *d)
6710 {
6711         u64 quota, period;
6712
6713         if (tg == d->tg) {
6714                 period = d->period;
6715                 quota = d->quota;
6716         } else {
6717                 period = tg_get_cfs_period(tg);
6718                 quota = tg_get_cfs_quota(tg);
6719         }
6720
6721         /* note: these should typically be equivalent */
6722         if (quota == RUNTIME_INF || quota == -1)
6723                 return RUNTIME_INF;
6724
6725         return to_ratio(period, quota);
6726 }
6727
6728 static int tg_cfs_schedulable_down(struct task_group *tg, void *data)
6729 {
6730         struct cfs_schedulable_data *d = data;
6731         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
6732         s64 quota = 0, parent_quota = -1;
6733
6734         if (!tg->parent) {
6735                 quota = RUNTIME_INF;
6736         } else {
6737                 struct cfs_bandwidth *parent_b = &tg->parent->cfs_bandwidth;
6738
6739                 quota = normalize_cfs_quota(tg, d);
6740                 parent_quota = parent_b->hierarchical_quota;
6741
6742                 /*
6743                  * Ensure max(child_quota) <= parent_quota.  On cgroup2,
6744                  * always take the min.  On cgroup1, only inherit when no
6745                  * limit is set:
6746                  */
6747                 if (cgroup_subsys_on_dfl(cpu_cgrp_subsys)) {
6748                         quota = min(quota, parent_quota);
6749                 } else {
6750                         if (quota == RUNTIME_INF)
6751                                 quota = parent_quota;
6752                         else if (parent_quota != RUNTIME_INF && quota > parent_quota)
6753                                 return -EINVAL;
6754                 }
6755         }
6756         cfs_b->hierarchical_quota = quota;
6757
6758         return 0;
6759 }
6760
6761 static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota)
6762 {
6763         int ret;
6764         struct cfs_schedulable_data data = {
6765                 .tg = tg,
6766                 .period = period,
6767                 .quota = quota,
6768         };
6769
6770         if (quota != RUNTIME_INF) {
6771                 do_div(data.period, NSEC_PER_USEC);
6772                 do_div(data.quota, NSEC_PER_USEC);
6773         }
6774
6775         rcu_read_lock();
6776         ret = walk_tg_tree(tg_cfs_schedulable_down, tg_nop, &data);
6777         rcu_read_unlock();
6778
6779         return ret;
6780 }
6781
6782 static int cpu_cfs_stat_show(struct seq_file *sf, void *v)
6783 {
6784         struct task_group *tg = css_tg(seq_css(sf));
6785         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
6786
6787         seq_printf(sf, "nr_periods %d\n", cfs_b->nr_periods);
6788         seq_printf(sf, "nr_throttled %d\n", cfs_b->nr_throttled);
6789         seq_printf(sf, "throttled_time %llu\n", cfs_b->throttled_time);
6790
6791         return 0;
6792 }
6793 #endif /* CONFIG_CFS_BANDWIDTH */
6794 #endif /* CONFIG_FAIR_GROUP_SCHED */
6795
6796 #ifdef CONFIG_RT_GROUP_SCHED
6797 static int cpu_rt_runtime_write(struct cgroup_subsys_state *css,
6798                                 struct cftype *cft, s64 val)
6799 {
6800         return sched_group_set_rt_runtime(css_tg(css), val);
6801 }
6802
6803 static s64 cpu_rt_runtime_read(struct cgroup_subsys_state *css,
6804                                struct cftype *cft)
6805 {
6806         return sched_group_rt_runtime(css_tg(css));
6807 }
6808
6809 static int cpu_rt_period_write_uint(struct cgroup_subsys_state *css,
6810                                     struct cftype *cftype, u64 rt_period_us)
6811 {
6812         return sched_group_set_rt_period(css_tg(css), rt_period_us);
6813 }
6814
6815 static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css,
6816                                    struct cftype *cft)
6817 {
6818         return sched_group_rt_period(css_tg(css));
6819 }
6820 #endif /* CONFIG_RT_GROUP_SCHED */
6821
6822 static struct cftype cpu_legacy_files[] = {
6823 #ifdef CONFIG_FAIR_GROUP_SCHED
6824         {
6825                 .name = "shares",
6826                 .read_u64 = cpu_shares_read_u64,
6827                 .write_u64 = cpu_shares_write_u64,
6828         },
6829 #endif
6830 #ifdef CONFIG_CFS_BANDWIDTH
6831         {
6832                 .name = "cfs_quota_us",
6833                 .read_s64 = cpu_cfs_quota_read_s64,
6834                 .write_s64 = cpu_cfs_quota_write_s64,
6835         },
6836         {
6837                 .name = "cfs_period_us",
6838                 .read_u64 = cpu_cfs_period_read_u64,
6839                 .write_u64 = cpu_cfs_period_write_u64,
6840         },
6841         {
6842                 .name = "stat",
6843                 .seq_show = cpu_cfs_stat_show,
6844         },
6845 #endif
6846 #ifdef CONFIG_RT_GROUP_SCHED
6847         {
6848                 .name = "rt_runtime_us",
6849                 .read_s64 = cpu_rt_runtime_read,
6850                 .write_s64 = cpu_rt_runtime_write,
6851         },
6852         {
6853                 .name = "rt_period_us",
6854                 .read_u64 = cpu_rt_period_read_uint,
6855                 .write_u64 = cpu_rt_period_write_uint,
6856         },
6857 #endif
6858         { }     /* Terminate */
6859 };
6860
6861 static int cpu_extra_stat_show(struct seq_file *sf,
6862                                struct cgroup_subsys_state *css)
6863 {
6864 #ifdef CONFIG_CFS_BANDWIDTH
6865         {
6866                 struct task_group *tg = css_tg(css);
6867                 struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
6868                 u64 throttled_usec;
6869
6870                 throttled_usec = cfs_b->throttled_time;
6871                 do_div(throttled_usec, NSEC_PER_USEC);
6872
6873                 seq_printf(sf, "nr_periods %d\n"
6874                            "nr_throttled %d\n"
6875                            "throttled_usec %llu\n",
6876                            cfs_b->nr_periods, cfs_b->nr_throttled,
6877                            throttled_usec);
6878         }
6879 #endif
6880         return 0;
6881 }
6882
6883 #ifdef CONFIG_FAIR_GROUP_SCHED
6884 static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css,
6885                                struct cftype *cft)
6886 {
6887         struct task_group *tg = css_tg(css);
6888         u64 weight = scale_load_down(tg->shares);
6889
6890         return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024);
6891 }
6892
6893 static int cpu_weight_write_u64(struct cgroup_subsys_state *css,
6894                                 struct cftype *cft, u64 weight)
6895 {
6896         /*
6897          * cgroup weight knobs should use the common MIN, DFL and MAX
6898          * values which are 1, 100 and 10000 respectively.  While it loses
6899          * a bit of range on both ends, it maps pretty well onto the shares
6900          * value used by scheduler and the round-trip conversions preserve
6901          * the original value over the entire range.
6902          */
6903         if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX)
6904                 return -ERANGE;
6905
6906         weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL);
6907
6908         return sched_group_set_shares(css_tg(css), scale_load(weight));
6909 }
6910
6911 static s64 cpu_weight_nice_read_s64(struct cgroup_subsys_state *css,
6912                                     struct cftype *cft)
6913 {
6914         unsigned long weight = scale_load_down(css_tg(css)->shares);
6915         int last_delta = INT_MAX;
6916         int prio, delta;
6917
6918         /* find the closest nice value to the current weight */
6919         for (prio = 0; prio < ARRAY_SIZE(sched_prio_to_weight); prio++) {
6920                 delta = abs(sched_prio_to_weight[prio] - weight);
6921                 if (delta >= last_delta)
6922                         break;
6923                 last_delta = delta;
6924         }
6925
6926         return PRIO_TO_NICE(prio - 1 + MAX_RT_PRIO);
6927 }
6928
6929 static int cpu_weight_nice_write_s64(struct cgroup_subsys_state *css,
6930                                      struct cftype *cft, s64 nice)
6931 {
6932         unsigned long weight;
6933         int idx;
6934
6935         if (nice < MIN_NICE || nice > MAX_NICE)
6936                 return -ERANGE;
6937
6938         idx = NICE_TO_PRIO(nice) - MAX_RT_PRIO;
6939         idx = array_index_nospec(idx, 40);
6940         weight = sched_prio_to_weight[idx];
6941
6942         return sched_group_set_shares(css_tg(css), scale_load(weight));
6943 }
6944 #endif
6945
6946 static void __maybe_unused cpu_period_quota_print(struct seq_file *sf,
6947                                                   long period, long quota)
6948 {
6949         if (quota < 0)
6950                 seq_puts(sf, "max");
6951         else
6952                 seq_printf(sf, "%ld", quota);
6953
6954         seq_printf(sf, " %ld\n", period);
6955 }
6956
6957 /* caller should put the current value in *@periodp before calling */
6958 static int __maybe_unused cpu_period_quota_parse(char *buf,
6959                                                  u64 *periodp, u64 *quotap)
6960 {
6961         char tok[21];   /* U64_MAX */
6962
6963         if (!sscanf(buf, "%s %llu", tok, periodp))
6964                 return -EINVAL;
6965
6966         *periodp *= NSEC_PER_USEC;
6967
6968         if (sscanf(tok, "%llu", quotap))
6969                 *quotap *= NSEC_PER_USEC;
6970         else if (!strcmp(tok, "max"))
6971                 *quotap = RUNTIME_INF;
6972         else
6973                 return -EINVAL;
6974
6975         return 0;
6976 }
6977
6978 #ifdef CONFIG_CFS_BANDWIDTH
6979 static int cpu_max_show(struct seq_file *sf, void *v)
6980 {
6981         struct task_group *tg = css_tg(seq_css(sf));
6982
6983         cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg));
6984         return 0;
6985 }
6986
6987 static ssize_t cpu_max_write(struct kernfs_open_file *of,
6988                              char *buf, size_t nbytes, loff_t off)
6989 {
6990         struct task_group *tg = css_tg(of_css(of));
6991         u64 period = tg_get_cfs_period(tg);
6992         u64 quota;
6993         int ret;
6994
6995         ret = cpu_period_quota_parse(buf, &period, &quota);
6996         if (!ret)
6997                 ret = tg_set_cfs_bandwidth(tg, period, quota);
6998         return ret ?: nbytes;
6999 }
7000 #endif
7001
7002 static struct cftype cpu_files[] = {
7003 #ifdef CONFIG_FAIR_GROUP_SCHED
7004         {
7005                 .name = "weight",
7006                 .flags = CFTYPE_NOT_ON_ROOT,
7007                 .read_u64 = cpu_weight_read_u64,
7008                 .write_u64 = cpu_weight_write_u64,
7009         },
7010         {
7011                 .name = "weight.nice",
7012                 .flags = CFTYPE_NOT_ON_ROOT,
7013                 .read_s64 = cpu_weight_nice_read_s64,
7014                 .write_s64 = cpu_weight_nice_write_s64,
7015         },
7016 #endif
7017 #ifdef CONFIG_CFS_BANDWIDTH
7018         {
7019                 .name = "max",
7020                 .flags = CFTYPE_NOT_ON_ROOT,
7021                 .seq_show = cpu_max_show,
7022                 .write = cpu_max_write,
7023         },
7024 #endif
7025         { }     /* terminate */
7026 };
7027
7028 struct cgroup_subsys cpu_cgrp_subsys = {
7029         .css_alloc      = cpu_cgroup_css_alloc,
7030         .css_online     = cpu_cgroup_css_online,
7031         .css_released   = cpu_cgroup_css_released,
7032         .css_free       = cpu_cgroup_css_free,
7033         .css_extra_stat_show = cpu_extra_stat_show,
7034         .fork           = cpu_cgroup_fork,
7035         .can_attach     = cpu_cgroup_can_attach,
7036         .attach         = cpu_cgroup_attach,
7037         .legacy_cftypes = cpu_legacy_files,
7038         .dfl_cftypes    = cpu_files,
7039         .early_init     = true,
7040         .threaded       = true,
7041 };
7042
7043 #endif  /* CONFIG_CGROUP_SCHED */
7044
7045 void dump_cpu_task(int cpu)
7046 {
7047         pr_info("Task dump for CPU %d:\n", cpu);
7048         sched_show_task(cpu_curr(cpu));
7049 }
7050
7051 /*
7052  * Nice levels are multiplicative, with a gentle 10% change for every
7053  * nice level changed. I.e. when a CPU-bound task goes from nice 0 to
7054  * nice 1, it will get ~10% less CPU time than another CPU-bound task
7055  * that remained on nice 0.
7056  *
7057  * The "10% effect" is relative and cumulative: from _any_ nice level,
7058  * if you go up 1 level, it's -10% CPU usage, if you go down 1 level
7059  * it's +10% CPU usage. (to achieve that we use a multiplier of 1.25.
7060  * If a task goes up by ~10% and another task goes down by ~10% then
7061  * the relative distance between them is ~25%.)
7062  */
7063 const int sched_prio_to_weight[40] = {
7064  /* -20 */     88761,     71755,     56483,     46273,     36291,
7065  /* -15 */     29154,     23254,     18705,     14949,     11916,
7066  /* -10 */      9548,      7620,      6100,      4904,      3906,
7067  /*  -5 */      3121,      2501,      1991,      1586,      1277,
7068  /*   0 */      1024,       820,       655,       526,       423,
7069  /*   5 */       335,       272,       215,       172,       137,
7070  /*  10 */       110,        87,        70,        56,        45,
7071  /*  15 */        36,        29,        23,        18,        15,
7072 };
7073
7074 /*
7075  * Inverse (2^32/x) values of the sched_prio_to_weight[] array, precalculated.
7076  *
7077  * In cases where the weight does not change often, we can use the
7078  * precalculated inverse to speed up arithmetics by turning divisions
7079  * into multiplications:
7080  */
7081 const u32 sched_prio_to_wmult[40] = {
7082  /* -20 */     48388,     59856,     76040,     92818,    118348,
7083  /* -15 */    147320,    184698,    229616,    287308,    360437,
7084  /* -10 */    449829,    563644,    704093,    875809,   1099582,
7085  /*  -5 */   1376151,   1717300,   2157191,   2708050,   3363326,
7086  /*   0 */   4194304,   5237765,   6557202,   8165337,  10153587,
7087  /*   5 */  12820798,  15790321,  19976592,  24970740,  31350126,
7088  /*  10 */  39045157,  49367440,  61356676,  76695844,  95443717,
7089  /*  15 */ 119304647, 148102320, 186737708, 238609294, 286331153,
7090 };
7091
7092 #undef CREATE_TRACE_POINTS