OSDN Git Service

Merge 4.4.111 into android-4.4
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / kernel / sched / core.c
1 /*
2  *  kernel/sched/core.c
3  *
4  *  Kernel scheduler and related syscalls
5  *
6  *  Copyright (C) 1991-2002  Linus Torvalds
7  *
8  *  1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and
9  *              make semaphores SMP safe
10  *  1998-11-19  Implemented schedule_timeout() and related stuff
11  *              by Andrea Arcangeli
12  *  2002-01-04  New ultra-scalable O(1) scheduler by Ingo Molnar:
13  *              hybrid priority-list and round-robin design with
14  *              an array-switch method of distributing timeslices
15  *              and per-CPU runqueues.  Cleanups and useful suggestions
16  *              by Davide Libenzi, preemptible kernel bits by Robert Love.
17  *  2003-09-03  Interactivity tuning by Con Kolivas.
18  *  2004-04-02  Scheduler domains code by Nick Piggin
19  *  2007-04-15  Work begun on replacing all interactivity tuning with a
20  *              fair scheduling design by Con Kolivas.
21  *  2007-05-05  Load balancing (smp-nice) and other improvements
22  *              by Peter Williams
23  *  2007-05-06  Interactivity improvements to CFS by Mike Galbraith
24  *  2007-07-01  Group scheduling enhancements by Srivatsa Vaddagiri
25  *  2007-11-29  RT balancing improvements by Steven Rostedt, Gregory Haskins,
26  *              Thomas Gleixner, Mike Kravetz
27  */
28
29 #include <linux/mm.h>
30 #include <linux/module.h>
31 #include <linux/nmi.h>
32 #include <linux/init.h>
33 #include <linux/uaccess.h>
34 #include <linux/highmem.h>
35 #include <linux/mmu_context.h>
36 #include <linux/interrupt.h>
37 #include <linux/capability.h>
38 #include <linux/completion.h>
39 #include <linux/kernel_stat.h>
40 #include <linux/debug_locks.h>
41 #include <linux/perf_event.h>
42 #include <linux/security.h>
43 #include <linux/notifier.h>
44 #include <linux/profile.h>
45 #include <linux/freezer.h>
46 #include <linux/vmalloc.h>
47 #include <linux/blkdev.h>
48 #include <linux/delay.h>
49 #include <linux/pid_namespace.h>
50 #include <linux/smp.h>
51 #include <linux/threads.h>
52 #include <linux/timer.h>
53 #include <linux/rcupdate.h>
54 #include <linux/cpu.h>
55 #include <linux/cpuset.h>
56 #include <linux/percpu.h>
57 #include <linux/proc_fs.h>
58 #include <linux/seq_file.h>
59 #include <linux/sysctl.h>
60 #include <linux/syscalls.h>
61 #include <linux/times.h>
62 #include <linux/tsacct_kern.h>
63 #include <linux/kprobes.h>
64 #include <linux/delayacct.h>
65 #include <linux/unistd.h>
66 #include <linux/pagemap.h>
67 #include <linux/hrtimer.h>
68 #include <linux/tick.h>
69 #include <linux/debugfs.h>
70 #include <linux/ctype.h>
71 #include <linux/ftrace.h>
72 #include <linux/slab.h>
73 #include <linux/init_task.h>
74 #include <linux/binfmts.h>
75 #include <linux/context_tracking.h>
76 #include <linux/compiler.h>
77
78 #include <asm/switch_to.h>
79 #include <asm/tlb.h>
80 #include <asm/irq_regs.h>
81 #include <asm/mutex.h>
82 #ifdef CONFIG_PARAVIRT
83 #include <asm/paravirt.h>
84 #endif
85
86 #include "sched.h"
87 #include "../workqueue_internal.h"
88 #include "../smpboot.h"
89
90 #define CREATE_TRACE_POINTS
91 #include <trace/events/sched.h>
92 #include "walt.h"
93
94 DEFINE_MUTEX(sched_domains_mutex);
95 DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
96
97 static void update_rq_clock_task(struct rq *rq, s64 delta);
98
99 void update_rq_clock(struct rq *rq)
100 {
101         s64 delta;
102
103         lockdep_assert_held(&rq->lock);
104
105         if (rq->clock_skip_update & RQCF_ACT_SKIP)
106                 return;
107
108         delta = sched_clock_cpu(cpu_of(rq)) - rq->clock;
109         if (delta < 0)
110                 return;
111         rq->clock += delta;
112         update_rq_clock_task(rq, delta);
113 }
114
115 /*
116  * Debugging: various feature bits
117  */
118
119 #define SCHED_FEAT(name, enabled)       \
120         (1UL << __SCHED_FEAT_##name) * enabled |
121
122 const_debug unsigned int sysctl_sched_features =
123 #include "features.h"
124         0;
125
126 #undef SCHED_FEAT
127
128 #ifdef CONFIG_SCHED_DEBUG
129 #define SCHED_FEAT(name, enabled)       \
130         #name ,
131
132 static const char * const sched_feat_names[] = {
133 #include "features.h"
134 };
135
136 #undef SCHED_FEAT
137
138 static int sched_feat_show(struct seq_file *m, void *v)
139 {
140         int i;
141
142         for (i = 0; i < __SCHED_FEAT_NR; i++) {
143                 if (!(sysctl_sched_features & (1UL << i)))
144                         seq_puts(m, "NO_");
145                 seq_printf(m, "%s ", sched_feat_names[i]);
146         }
147         seq_puts(m, "\n");
148
149         return 0;
150 }
151
152 #ifdef HAVE_JUMP_LABEL
153
154 #define jump_label_key__true  STATIC_KEY_INIT_TRUE
155 #define jump_label_key__false STATIC_KEY_INIT_FALSE
156
157 #define SCHED_FEAT(name, enabled)       \
158         jump_label_key__##enabled ,
159
160 struct static_key sched_feat_keys[__SCHED_FEAT_NR] = {
161 #include "features.h"
162 };
163
164 #undef SCHED_FEAT
165
166 static void sched_feat_disable(int i)
167 {
168         static_key_disable(&sched_feat_keys[i]);
169 }
170
171 static void sched_feat_enable(int i)
172 {
173         static_key_enable(&sched_feat_keys[i]);
174 }
175 #else
176 static void sched_feat_disable(int i) { };
177 static void sched_feat_enable(int i) { };
178 #endif /* HAVE_JUMP_LABEL */
179
180 static int sched_feat_set(char *cmp)
181 {
182         int i;
183         int neg = 0;
184
185         if (strncmp(cmp, "NO_", 3) == 0) {
186                 neg = 1;
187                 cmp += 3;
188         }
189
190         for (i = 0; i < __SCHED_FEAT_NR; i++) {
191                 if (strcmp(cmp, sched_feat_names[i]) == 0) {
192                         if (neg) {
193                                 sysctl_sched_features &= ~(1UL << i);
194                                 sched_feat_disable(i);
195                         } else {
196                                 sysctl_sched_features |= (1UL << i);
197                                 sched_feat_enable(i);
198                         }
199                         break;
200                 }
201         }
202
203         return i;
204 }
205
206 static ssize_t
207 sched_feat_write(struct file *filp, const char __user *ubuf,
208                 size_t cnt, loff_t *ppos)
209 {
210         char buf[64];
211         char *cmp;
212         int i;
213         struct inode *inode;
214
215         if (cnt > 63)
216                 cnt = 63;
217
218         if (copy_from_user(&buf, ubuf, cnt))
219                 return -EFAULT;
220
221         buf[cnt] = 0;
222         cmp = strstrip(buf);
223
224         /* Ensure the static_key remains in a consistent state */
225         inode = file_inode(filp);
226         mutex_lock(&inode->i_mutex);
227         i = sched_feat_set(cmp);
228         mutex_unlock(&inode->i_mutex);
229         if (i == __SCHED_FEAT_NR)
230                 return -EINVAL;
231
232         *ppos += cnt;
233
234         return cnt;
235 }
236
237 static int sched_feat_open(struct inode *inode, struct file *filp)
238 {
239         return single_open(filp, sched_feat_show, NULL);
240 }
241
242 static const struct file_operations sched_feat_fops = {
243         .open           = sched_feat_open,
244         .write          = sched_feat_write,
245         .read           = seq_read,
246         .llseek         = seq_lseek,
247         .release        = single_release,
248 };
249
250 static __init int sched_init_debug(void)
251 {
252         debugfs_create_file("sched_features", 0644, NULL, NULL,
253                         &sched_feat_fops);
254
255         return 0;
256 }
257 late_initcall(sched_init_debug);
258 #endif /* CONFIG_SCHED_DEBUG */
259
260 /*
261  * Number of tasks to iterate in a single balance run.
262  * Limited because this is done with IRQs disabled.
263  */
264 const_debug unsigned int sysctl_sched_nr_migrate = 32;
265
266 /*
267  * period over which we average the RT time consumption, measured
268  * in ms.
269  *
270  * default: 1s
271  */
272 const_debug unsigned int sysctl_sched_time_avg = MSEC_PER_SEC;
273
274 /*
275  * period over which we measure -rt task cpu usage in us.
276  * default: 1s
277  */
278 unsigned int sysctl_sched_rt_period = 1000000;
279
280 __read_mostly int scheduler_running;
281
282 /*
283  * part of the period that we allow rt tasks to run in us.
284  * default: 0.95s
285  */
286 int sysctl_sched_rt_runtime = 950000;
287
288 /* cpus with isolated domains */
289 cpumask_var_t cpu_isolated_map;
290
291 struct rq *
292 lock_rq_of(struct task_struct *p, unsigned long *flags)
293 {
294         return task_rq_lock(p, flags);
295 }
296
297 void
298 unlock_rq_of(struct rq *rq, struct task_struct *p, unsigned long *flags)
299 {
300         task_rq_unlock(rq, p, flags);
301 }
302
303 /*
304  * this_rq_lock - lock this runqueue and disable interrupts.
305  */
306 static struct rq *this_rq_lock(void)
307         __acquires(rq->lock)
308 {
309         struct rq *rq;
310
311         local_irq_disable();
312         rq = this_rq();
313         raw_spin_lock(&rq->lock);
314
315         return rq;
316 }
317
318 #ifdef CONFIG_SCHED_HRTICK
319 /*
320  * Use HR-timers to deliver accurate preemption points.
321  */
322
323 static void hrtick_clear(struct rq *rq)
324 {
325         if (hrtimer_active(&rq->hrtick_timer))
326                 hrtimer_cancel(&rq->hrtick_timer);
327 }
328
329 /*
330  * High-resolution timer tick.
331  * Runs from hardirq context with interrupts disabled.
332  */
333 static enum hrtimer_restart hrtick(struct hrtimer *timer)
334 {
335         struct rq *rq = container_of(timer, struct rq, hrtick_timer);
336
337         WARN_ON_ONCE(cpu_of(rq) != smp_processor_id());
338
339         raw_spin_lock(&rq->lock);
340         update_rq_clock(rq);
341         rq->curr->sched_class->task_tick(rq, rq->curr, 1);
342         raw_spin_unlock(&rq->lock);
343
344         return HRTIMER_NORESTART;
345 }
346
347 #ifdef CONFIG_SMP
348
349 static void __hrtick_restart(struct rq *rq)
350 {
351         struct hrtimer *timer = &rq->hrtick_timer;
352
353         hrtimer_start_expires(timer, HRTIMER_MODE_ABS_PINNED);
354 }
355
356 /*
357  * called from hardirq (IPI) context
358  */
359 static void __hrtick_start(void *arg)
360 {
361         struct rq *rq = arg;
362
363         raw_spin_lock(&rq->lock);
364         __hrtick_restart(rq);
365         rq->hrtick_csd_pending = 0;
366         raw_spin_unlock(&rq->lock);
367 }
368
369 /*
370  * Called to set the hrtick timer state.
371  *
372  * called with rq->lock held and irqs disabled
373  */
374 void hrtick_start(struct rq *rq, u64 delay)
375 {
376         struct hrtimer *timer = &rq->hrtick_timer;
377         ktime_t time;
378         s64 delta;
379
380         /*
381          * Don't schedule slices shorter than 10000ns, that just
382          * doesn't make sense and can cause timer DoS.
383          */
384         delta = max_t(s64, delay, 10000LL);
385         time = ktime_add_ns(timer->base->get_time(), delta);
386
387         hrtimer_set_expires(timer, time);
388
389         if (rq == this_rq()) {
390                 __hrtick_restart(rq);
391         } else if (!rq->hrtick_csd_pending) {
392                 smp_call_function_single_async(cpu_of(rq), &rq->hrtick_csd);
393                 rq->hrtick_csd_pending = 1;
394         }
395 }
396
397 static int
398 hotplug_hrtick(struct notifier_block *nfb, unsigned long action, void *hcpu)
399 {
400         int cpu = (int)(long)hcpu;
401
402         switch (action) {
403         case CPU_UP_CANCELED:
404         case CPU_UP_CANCELED_FROZEN:
405         case CPU_DOWN_PREPARE:
406         case CPU_DOWN_PREPARE_FROZEN:
407         case CPU_DEAD:
408         case CPU_DEAD_FROZEN:
409                 hrtick_clear(cpu_rq(cpu));
410                 return NOTIFY_OK;
411         }
412
413         return NOTIFY_DONE;
414 }
415
416 static __init void init_hrtick(void)
417 {
418         hotcpu_notifier(hotplug_hrtick, 0);
419 }
420 #else
421 /*
422  * Called to set the hrtick timer state.
423  *
424  * called with rq->lock held and irqs disabled
425  */
426 void hrtick_start(struct rq *rq, u64 delay)
427 {
428         /*
429          * Don't schedule slices shorter than 10000ns, that just
430          * doesn't make sense. Rely on vruntime for fairness.
431          */
432         delay = max_t(u64, delay, 10000LL);
433         hrtimer_start(&rq->hrtick_timer, ns_to_ktime(delay),
434                       HRTIMER_MODE_REL_PINNED);
435 }
436
437 static inline void init_hrtick(void)
438 {
439 }
440 #endif /* CONFIG_SMP */
441
442 static void init_rq_hrtick(struct rq *rq)
443 {
444 #ifdef CONFIG_SMP
445         rq->hrtick_csd_pending = 0;
446
447         rq->hrtick_csd.flags = 0;
448         rq->hrtick_csd.func = __hrtick_start;
449         rq->hrtick_csd.info = rq;
450 #endif
451
452         hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
453         rq->hrtick_timer.function = hrtick;
454 }
455 #else   /* CONFIG_SCHED_HRTICK */
456 static inline void hrtick_clear(struct rq *rq)
457 {
458 }
459
460 static inline void init_rq_hrtick(struct rq *rq)
461 {
462 }
463
464 static inline void init_hrtick(void)
465 {
466 }
467 #endif  /* CONFIG_SCHED_HRTICK */
468
469 /*
470  * cmpxchg based fetch_or, macro so it works for different integer types
471  */
472 #define fetch_or(ptr, val)                                              \
473 ({      typeof(*(ptr)) __old, __val = *(ptr);                           \
474         for (;;) {                                                      \
475                 __old = cmpxchg((ptr), __val, __val | (val));           \
476                 if (__old == __val)                                     \
477                         break;                                          \
478                 __val = __old;                                          \
479         }                                                               \
480         __old;                                                          \
481 })
482
483 #if defined(CONFIG_SMP) && defined(TIF_POLLING_NRFLAG)
484 /*
485  * Atomically set TIF_NEED_RESCHED and test for TIF_POLLING_NRFLAG,
486  * this avoids any races wrt polling state changes and thereby avoids
487  * spurious IPIs.
488  */
489 static bool set_nr_and_not_polling(struct task_struct *p)
490 {
491         struct thread_info *ti = task_thread_info(p);
492         return !(fetch_or(&ti->flags, _TIF_NEED_RESCHED) & _TIF_POLLING_NRFLAG);
493 }
494
495 /*
496  * Atomically set TIF_NEED_RESCHED if TIF_POLLING_NRFLAG is set.
497  *
498  * If this returns true, then the idle task promises to call
499  * sched_ttwu_pending() and reschedule soon.
500  */
501 static bool set_nr_if_polling(struct task_struct *p)
502 {
503         struct thread_info *ti = task_thread_info(p);
504         typeof(ti->flags) old, val = READ_ONCE(ti->flags);
505
506         for (;;) {
507                 if (!(val & _TIF_POLLING_NRFLAG))
508                         return false;
509                 if (val & _TIF_NEED_RESCHED)
510                         return true;
511                 old = cmpxchg(&ti->flags, val, val | _TIF_NEED_RESCHED);
512                 if (old == val)
513                         break;
514                 val = old;
515         }
516         return true;
517 }
518
519 #else
520 static bool set_nr_and_not_polling(struct task_struct *p)
521 {
522         set_tsk_need_resched(p);
523         return true;
524 }
525
526 #ifdef CONFIG_SMP
527 static bool set_nr_if_polling(struct task_struct *p)
528 {
529         return false;
530 }
531 #endif
532 #endif
533
534 void wake_q_add(struct wake_q_head *head, struct task_struct *task)
535 {
536         struct wake_q_node *node = &task->wake_q;
537
538         /*
539          * Atomically grab the task, if ->wake_q is !nil already it means
540          * its already queued (either by us or someone else) and will get the
541          * wakeup due to that.
542          *
543          * This cmpxchg() implies a full barrier, which pairs with the write
544          * barrier implied by the wakeup in wake_up_list().
545          */
546         if (cmpxchg(&node->next, NULL, WAKE_Q_TAIL))
547                 return;
548
549         head->count++;
550
551         get_task_struct(task);
552
553         /*
554          * The head is context local, there can be no concurrency.
555          */
556         *head->lastp = node;
557         head->lastp = &node->next;
558 }
559
560 static int
561 try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags,
562                int sibling_count_hint);
563
564 void wake_up_q(struct wake_q_head *head)
565 {
566         struct wake_q_node *node = head->first;
567
568         while (node != WAKE_Q_TAIL) {
569                 struct task_struct *task;
570
571                 task = container_of(node, struct task_struct, wake_q);
572                 BUG_ON(!task);
573                 /* task can safely be re-inserted now */
574                 node = node->next;
575                 task->wake_q.next = NULL;
576
577                 /*
578                  * try_to_wake_up() implies a wmb() to pair with the queueing
579                  * in wake_q_add() so as not to miss wakeups.
580                  */
581                 try_to_wake_up(task, TASK_NORMAL, 0, head->count);
582                 put_task_struct(task);
583         }
584 }
585
586 /*
587  * resched_curr - mark rq's current task 'to be rescheduled now'.
588  *
589  * On UP this means the setting of the need_resched flag, on SMP it
590  * might also involve a cross-CPU call to trigger the scheduler on
591  * the target CPU.
592  */
593 void resched_curr(struct rq *rq)
594 {
595         struct task_struct *curr = rq->curr;
596         int cpu;
597
598         lockdep_assert_held(&rq->lock);
599
600         if (test_tsk_need_resched(curr))
601                 return;
602
603         cpu = cpu_of(rq);
604
605         if (cpu == smp_processor_id()) {
606                 set_tsk_need_resched(curr);
607                 set_preempt_need_resched();
608                 return;
609         }
610
611         if (set_nr_and_not_polling(curr))
612                 smp_send_reschedule(cpu);
613         else
614                 trace_sched_wake_idle_without_ipi(cpu);
615 }
616
617 void resched_cpu(int cpu)
618 {
619         struct rq *rq = cpu_rq(cpu);
620         unsigned long flags;
621
622         raw_spin_lock_irqsave(&rq->lock, flags);
623         resched_curr(rq);
624         raw_spin_unlock_irqrestore(&rq->lock, flags);
625 }
626
627 #ifdef CONFIG_SMP
628 #ifdef CONFIG_NO_HZ_COMMON
629 /*
630  * In the semi idle case, use the nearest busy cpu for migrating timers
631  * from an idle cpu.  This is good for power-savings.
632  *
633  * We don't do similar optimization for completely idle system, as
634  * selecting an idle cpu will add more delays to the timers than intended
635  * (as that cpu's timer base may not be uptodate wrt jiffies etc).
636  */
637 int get_nohz_timer_target(void)
638 {
639         int i, cpu = smp_processor_id();
640         struct sched_domain *sd;
641
642         if (!idle_cpu(cpu) && is_housekeeping_cpu(cpu))
643                 return cpu;
644
645         rcu_read_lock();
646         for_each_domain(cpu, sd) {
647                 for_each_cpu(i, sched_domain_span(sd)) {
648                         if (cpu == i)
649                                 continue;
650
651                         if (!idle_cpu(i) && is_housekeeping_cpu(i)) {
652                                 cpu = i;
653                                 goto unlock;
654                         }
655                 }
656         }
657
658         if (!is_housekeeping_cpu(cpu))
659                 cpu = housekeeping_any_cpu();
660 unlock:
661         rcu_read_unlock();
662         return cpu;
663 }
664 /*
665  * When add_timer_on() enqueues a timer into the timer wheel of an
666  * idle CPU then this timer might expire before the next timer event
667  * which is scheduled to wake up that CPU. In case of a completely
668  * idle system the next event might even be infinite time into the
669  * future. wake_up_idle_cpu() ensures that the CPU is woken up and
670  * leaves the inner idle loop so the newly added timer is taken into
671  * account when the CPU goes back to idle and evaluates the timer
672  * wheel for the next timer event.
673  */
674 static void wake_up_idle_cpu(int cpu)
675 {
676         struct rq *rq = cpu_rq(cpu);
677
678         if (cpu == smp_processor_id())
679                 return;
680
681         if (set_nr_and_not_polling(rq->idle))
682                 smp_send_reschedule(cpu);
683         else
684                 trace_sched_wake_idle_without_ipi(cpu);
685 }
686
687 static bool wake_up_full_nohz_cpu(int cpu)
688 {
689         /*
690          * We just need the target to call irq_exit() and re-evaluate
691          * the next tick. The nohz full kick at least implies that.
692          * If needed we can still optimize that later with an
693          * empty IRQ.
694          */
695         if (tick_nohz_full_cpu(cpu)) {
696                 if (cpu != smp_processor_id() ||
697                     tick_nohz_tick_stopped())
698                         tick_nohz_full_kick_cpu(cpu);
699                 return true;
700         }
701
702         return false;
703 }
704
705 void wake_up_nohz_cpu(int cpu)
706 {
707         if (!wake_up_full_nohz_cpu(cpu))
708                 wake_up_idle_cpu(cpu);
709 }
710
711 static inline bool got_nohz_idle_kick(void)
712 {
713         int cpu = smp_processor_id();
714
715         if (!test_bit(NOHZ_BALANCE_KICK, nohz_flags(cpu)))
716                 return false;
717
718         if (idle_cpu(cpu) && !need_resched())
719                 return true;
720
721         /*
722          * We can't run Idle Load Balance on this CPU for this time so we
723          * cancel it and clear NOHZ_BALANCE_KICK
724          */
725         clear_bit(NOHZ_BALANCE_KICK, nohz_flags(cpu));
726         return false;
727 }
728
729 #else /* CONFIG_NO_HZ_COMMON */
730
731 static inline bool got_nohz_idle_kick(void)
732 {
733         return false;
734 }
735
736 #endif /* CONFIG_NO_HZ_COMMON */
737
738 #ifdef CONFIG_NO_HZ_FULL
739 bool sched_can_stop_tick(void)
740 {
741         /*
742          * FIFO realtime policy runs the highest priority task. Other runnable
743          * tasks are of a lower priority. The scheduler tick does nothing.
744          */
745         if (current->policy == SCHED_FIFO)
746                 return true;
747
748         /*
749          * Round-robin realtime tasks time slice with other tasks at the same
750          * realtime priority. Is this task the only one at this priority?
751          */
752         if (current->policy == SCHED_RR) {
753                 struct sched_rt_entity *rt_se = &current->rt;
754
755                 return rt_se->run_list.prev == rt_se->run_list.next;
756         }
757
758         /*
759          * More than one running task need preemption.
760          * nr_running update is assumed to be visible
761          * after IPI is sent from wakers.
762          */
763         if (this_rq()->nr_running > 1)
764                 return false;
765
766         return true;
767 }
768 #endif /* CONFIG_NO_HZ_FULL */
769
770 void sched_avg_update(struct rq *rq)
771 {
772         s64 period = sched_avg_period();
773
774         while ((s64)(rq_clock(rq) - rq->age_stamp) > period) {
775                 /*
776                  * Inline assembly required to prevent the compiler
777                  * optimising this loop into a divmod call.
778                  * See __iter_div_u64_rem() for another example of this.
779                  */
780                 asm("" : "+rm" (rq->age_stamp));
781                 rq->age_stamp += period;
782                 rq->rt_avg /= 2;
783         }
784 }
785
786 #endif /* CONFIG_SMP */
787
788 #if defined(CONFIG_RT_GROUP_SCHED) || (defined(CONFIG_FAIR_GROUP_SCHED) && \
789                         (defined(CONFIG_SMP) || defined(CONFIG_CFS_BANDWIDTH)))
790 /*
791  * Iterate task_group tree rooted at *from, calling @down when first entering a
792  * node and @up when leaving it for the final time.
793  *
794  * Caller must hold rcu_lock or sufficient equivalent.
795  */
796 int walk_tg_tree_from(struct task_group *from,
797                              tg_visitor down, tg_visitor up, void *data)
798 {
799         struct task_group *parent, *child;
800         int ret;
801
802         parent = from;
803
804 down:
805         ret = (*down)(parent, data);
806         if (ret)
807                 goto out;
808         list_for_each_entry_rcu(child, &parent->children, siblings) {
809                 parent = child;
810                 goto down;
811
812 up:
813                 continue;
814         }
815         ret = (*up)(parent, data);
816         if (ret || parent == from)
817                 goto out;
818
819         child = parent;
820         parent = parent->parent;
821         if (parent)
822                 goto up;
823 out:
824         return ret;
825 }
826
827 int tg_nop(struct task_group *tg, void *data)
828 {
829         return 0;
830 }
831 #endif
832
833 static void set_load_weight(struct task_struct *p)
834 {
835         int prio = p->static_prio - MAX_RT_PRIO;
836         struct load_weight *load = &p->se.load;
837
838         /*
839          * SCHED_IDLE tasks get minimal weight:
840          */
841         if (idle_policy(p->policy)) {
842                 load->weight = scale_load(WEIGHT_IDLEPRIO);
843                 load->inv_weight = WMULT_IDLEPRIO;
844                 return;
845         }
846
847         load->weight = scale_load(prio_to_weight[prio]);
848         load->inv_weight = prio_to_wmult[prio];
849 }
850
851 static inline void enqueue_task(struct rq *rq, struct task_struct *p, int flags)
852 {
853         update_rq_clock(rq);
854         if (!(flags & ENQUEUE_RESTORE))
855                 sched_info_queued(rq, p);
856         p->sched_class->enqueue_task(rq, p, flags);
857 }
858
859 static inline void dequeue_task(struct rq *rq, struct task_struct *p, int flags)
860 {
861         update_rq_clock(rq);
862         if (!(flags & DEQUEUE_SAVE))
863                 sched_info_dequeued(rq, p);
864         p->sched_class->dequeue_task(rq, p, flags);
865 }
866
867 void activate_task(struct rq *rq, struct task_struct *p, int flags)
868 {
869         if (task_contributes_to_load(p))
870                 rq->nr_uninterruptible--;
871
872         enqueue_task(rq, p, flags);
873 }
874
875 void deactivate_task(struct rq *rq, struct task_struct *p, int flags)
876 {
877         if (task_contributes_to_load(p))
878                 rq->nr_uninterruptible++;
879
880         dequeue_task(rq, p, flags);
881 }
882
883 static void update_rq_clock_task(struct rq *rq, s64 delta)
884 {
885 /*
886  * In theory, the compile should just see 0 here, and optimize out the call
887  * to sched_rt_avg_update. But I don't trust it...
888  */
889 #if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
890         s64 steal = 0, irq_delta = 0;
891 #endif
892 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
893         irq_delta = irq_time_read(cpu_of(rq)) - rq->prev_irq_time;
894
895         /*
896          * Since irq_time is only updated on {soft,}irq_exit, we might run into
897          * this case when a previous update_rq_clock() happened inside a
898          * {soft,}irq region.
899          *
900          * When this happens, we stop ->clock_task and only update the
901          * prev_irq_time stamp to account for the part that fit, so that a next
902          * update will consume the rest. This ensures ->clock_task is
903          * monotonic.
904          *
905          * It does however cause some slight miss-attribution of {soft,}irq
906          * time, a more accurate solution would be to update the irq_time using
907          * the current rq->clock timestamp, except that would require using
908          * atomic ops.
909          */
910         if (irq_delta > delta)
911                 irq_delta = delta;
912
913         rq->prev_irq_time += irq_delta;
914         delta -= irq_delta;
915 #endif
916 #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING
917         if (static_key_false((&paravirt_steal_rq_enabled))) {
918                 steal = paravirt_steal_clock(cpu_of(rq));
919                 steal -= rq->prev_steal_time_rq;
920
921                 if (unlikely(steal > delta))
922                         steal = delta;
923
924                 rq->prev_steal_time_rq += steal;
925                 delta -= steal;
926         }
927 #endif
928
929         rq->clock_task += delta;
930
931 #if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
932         if ((irq_delta + steal) && sched_feat(NONTASK_CAPACITY))
933                 sched_rt_avg_update(rq, irq_delta + steal);
934 #endif
935 }
936
937 void sched_set_stop_task(int cpu, struct task_struct *stop)
938 {
939         struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
940         struct task_struct *old_stop = cpu_rq(cpu)->stop;
941
942         if (stop) {
943                 /*
944                  * Make it appear like a SCHED_FIFO task, its something
945                  * userspace knows about and won't get confused about.
946                  *
947                  * Also, it will make PI more or less work without too
948                  * much confusion -- but then, stop work should not
949                  * rely on PI working anyway.
950                  */
951                 sched_setscheduler_nocheck(stop, SCHED_FIFO, &param);
952
953                 stop->sched_class = &stop_sched_class;
954         }
955
956         cpu_rq(cpu)->stop = stop;
957
958         if (old_stop) {
959                 /*
960                  * Reset it back to a normal scheduling class so that
961                  * it can die in pieces.
962                  */
963                 old_stop->sched_class = &rt_sched_class;
964         }
965 }
966
967 /*
968  * __normal_prio - return the priority that is based on the static prio
969  */
970 static inline int __normal_prio(struct task_struct *p)
971 {
972         return p->static_prio;
973 }
974
975 /*
976  * Calculate the expected normal priority: i.e. priority
977  * without taking RT-inheritance into account. Might be
978  * boosted by interactivity modifiers. Changes upon fork,
979  * setprio syscalls, and whenever the interactivity
980  * estimator recalculates.
981  */
982 static inline int normal_prio(struct task_struct *p)
983 {
984         int prio;
985
986         if (task_has_dl_policy(p))
987                 prio = MAX_DL_PRIO-1;
988         else if (task_has_rt_policy(p))
989                 prio = MAX_RT_PRIO-1 - p->rt_priority;
990         else
991                 prio = __normal_prio(p);
992         return prio;
993 }
994
995 /*
996  * Calculate the current priority, i.e. the priority
997  * taken into account by the scheduler. This value might
998  * be boosted by RT tasks, or might be boosted by
999  * interactivity modifiers. Will be RT if the task got
1000  * RT-boosted. If not then it returns p->normal_prio.
1001  */
1002 static int effective_prio(struct task_struct *p)
1003 {
1004         p->normal_prio = normal_prio(p);
1005         /*
1006          * If we are RT tasks or we were boosted to RT priority,
1007          * keep the priority unchanged. Otherwise, update priority
1008          * to the normal priority:
1009          */
1010         if (!rt_prio(p->prio))
1011                 return p->normal_prio;
1012         return p->prio;
1013 }
1014
1015 /**
1016  * task_curr - is this task currently executing on a CPU?
1017  * @p: the task in question.
1018  *
1019  * Return: 1 if the task is currently executing. 0 otherwise.
1020  */
1021 inline int task_curr(const struct task_struct *p)
1022 {
1023         return cpu_curr(task_cpu(p)) == p;
1024 }
1025
1026 /*
1027  * switched_from, switched_to and prio_changed must _NOT_ drop rq->lock,
1028  * use the balance_callback list if you want balancing.
1029  *
1030  * this means any call to check_class_changed() must be followed by a call to
1031  * balance_callback().
1032  */
1033 static inline void check_class_changed(struct rq *rq, struct task_struct *p,
1034                                        const struct sched_class *prev_class,
1035                                        int oldprio)
1036 {
1037         if (prev_class != p->sched_class) {
1038                 if (prev_class->switched_from)
1039                         prev_class->switched_from(rq, p);
1040
1041                 p->sched_class->switched_to(rq, p);
1042         } else if (oldprio != p->prio || dl_task(p))
1043                 p->sched_class->prio_changed(rq, p, oldprio);
1044 }
1045
1046 void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags)
1047 {
1048         const struct sched_class *class;
1049
1050         if (p->sched_class == rq->curr->sched_class) {
1051                 rq->curr->sched_class->check_preempt_curr(rq, p, flags);
1052         } else {
1053                 for_each_class(class) {
1054                         if (class == rq->curr->sched_class)
1055                                 break;
1056                         if (class == p->sched_class) {
1057                                 resched_curr(rq);
1058                                 break;
1059                         }
1060                 }
1061         }
1062
1063         /*
1064          * A queue event has occurred, and we're going to schedule.  In
1065          * this case, we can save a useless back to back clock update.
1066          */
1067         if (task_on_rq_queued(rq->curr) && test_tsk_need_resched(rq->curr))
1068                 rq_clock_skip_update(rq, true);
1069 }
1070
1071 #ifdef CONFIG_SMP
1072 /*
1073  * This is how migration works:
1074  *
1075  * 1) we invoke migration_cpu_stop() on the target CPU using
1076  *    stop_one_cpu().
1077  * 2) stopper starts to run (implicitly forcing the migrated thread
1078  *    off the CPU)
1079  * 3) it checks whether the migrated task is still in the wrong runqueue.
1080  * 4) if it's in the wrong runqueue then the migration thread removes
1081  *    it and puts it into the right queue.
1082  * 5) stopper completes and stop_one_cpu() returns and the migration
1083  *    is done.
1084  */
1085
1086 /*
1087  * move_queued_task - move a queued task to new rq.
1088  *
1089  * Returns (locked) new rq. Old rq's lock is released.
1090  */
1091 static struct rq *move_queued_task(struct rq *rq, struct task_struct *p, int new_cpu)
1092 {
1093         lockdep_assert_held(&rq->lock);
1094
1095         dequeue_task(rq, p, 0);
1096         p->on_rq = TASK_ON_RQ_MIGRATING;
1097         double_lock_balance(rq, cpu_rq(new_cpu));
1098         set_task_cpu(p, new_cpu);
1099         double_unlock_balance(rq, cpu_rq(new_cpu));
1100         raw_spin_unlock(&rq->lock);
1101
1102         rq = cpu_rq(new_cpu);
1103
1104         raw_spin_lock(&rq->lock);
1105         BUG_ON(task_cpu(p) != new_cpu);
1106         p->on_rq = TASK_ON_RQ_QUEUED;
1107         enqueue_task(rq, p, 0);
1108         check_preempt_curr(rq, p, 0);
1109
1110         return rq;
1111 }
1112
1113 struct migration_arg {
1114         struct task_struct *task;
1115         int dest_cpu;
1116 };
1117
1118 /*
1119  * Move (not current) task off this cpu, onto dest cpu. We're doing
1120  * this because either it can't run here any more (set_cpus_allowed()
1121  * away from this CPU, or CPU going down), or because we're
1122  * attempting to rebalance this task on exec (sched_exec).
1123  *
1124  * So we race with normal scheduler movements, but that's OK, as long
1125  * as the task is no longer on this CPU.
1126  */
1127 static struct rq *__migrate_task(struct rq *rq, struct task_struct *p, int dest_cpu)
1128 {
1129         if (unlikely(!cpu_active(dest_cpu)))
1130                 return rq;
1131
1132         /* Affinity changed (again). */
1133         if (!cpumask_test_cpu(dest_cpu, tsk_cpus_allowed(p)))
1134                 return rq;
1135
1136         rq = move_queued_task(rq, p, dest_cpu);
1137
1138         return rq;
1139 }
1140
1141 /*
1142  * migration_cpu_stop - this will be executed by a highprio stopper thread
1143  * and performs thread migration by bumping thread off CPU then
1144  * 'pushing' onto another runqueue.
1145  */
1146 static int migration_cpu_stop(void *data)
1147 {
1148         struct migration_arg *arg = data;
1149         struct task_struct *p = arg->task;
1150         struct rq *rq = this_rq();
1151
1152         /*
1153          * The original target cpu might have gone down and we might
1154          * be on another cpu but it doesn't matter.
1155          */
1156         local_irq_disable();
1157         /*
1158          * We need to explicitly wake pending tasks before running
1159          * __migrate_task() such that we will not miss enforcing cpus_allowed
1160          * during wakeups, see set_cpus_allowed_ptr()'s TASK_WAKING test.
1161          */
1162         sched_ttwu_pending();
1163
1164         raw_spin_lock(&p->pi_lock);
1165         raw_spin_lock(&rq->lock);
1166         /*
1167          * If task_rq(p) != rq, it cannot be migrated here, because we're
1168          * holding rq->lock, if p->on_rq == 0 it cannot get enqueued because
1169          * we're holding p->pi_lock.
1170          */
1171         if (task_rq(p) == rq && task_on_rq_queued(p))
1172                 rq = __migrate_task(rq, p, arg->dest_cpu);
1173         raw_spin_unlock(&rq->lock);
1174         raw_spin_unlock(&p->pi_lock);
1175
1176         local_irq_enable();
1177         return 0;
1178 }
1179
1180 /*
1181  * sched_class::set_cpus_allowed must do the below, but is not required to
1182  * actually call this function.
1183  */
1184 void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask)
1185 {
1186         cpumask_copy(&p->cpus_allowed, new_mask);
1187         p->nr_cpus_allowed = cpumask_weight(new_mask);
1188 }
1189
1190 void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
1191 {
1192         struct rq *rq = task_rq(p);
1193         bool queued, running;
1194
1195         lockdep_assert_held(&p->pi_lock);
1196
1197         queued = task_on_rq_queued(p);
1198         running = task_current(rq, p);
1199
1200         if (queued) {
1201                 /*
1202                  * Because __kthread_bind() calls this on blocked tasks without
1203                  * holding rq->lock.
1204                  */
1205                 lockdep_assert_held(&rq->lock);
1206                 dequeue_task(rq, p, DEQUEUE_SAVE);
1207         }
1208         if (running)
1209                 put_prev_task(rq, p);
1210
1211         p->sched_class->set_cpus_allowed(p, new_mask);
1212
1213         if (running)
1214                 p->sched_class->set_curr_task(rq);
1215         if (queued)
1216                 enqueue_task(rq, p, ENQUEUE_RESTORE);
1217 }
1218
1219 /*
1220  * Change a given task's CPU affinity. Migrate the thread to a
1221  * proper CPU and schedule it away if the CPU it's executing on
1222  * is removed from the allowed bitmask.
1223  *
1224  * NOTE: the caller must have a valid reference to the task, the
1225  * task must not exit() & deallocate itself prematurely. The
1226  * call is not atomic; no spinlocks may be held.
1227  */
1228 static int __set_cpus_allowed_ptr(struct task_struct *p,
1229                                   const struct cpumask *new_mask, bool check)
1230 {
1231         unsigned long flags;
1232         struct rq *rq;
1233         unsigned int dest_cpu;
1234         int ret = 0;
1235
1236         rq = task_rq_lock(p, &flags);
1237
1238         /*
1239          * Must re-check here, to close a race against __kthread_bind(),
1240          * sched_setaffinity() is not guaranteed to observe the flag.
1241          */
1242         if (check && (p->flags & PF_NO_SETAFFINITY)) {
1243                 ret = -EINVAL;
1244                 goto out;
1245         }
1246
1247         if (cpumask_equal(&p->cpus_allowed, new_mask))
1248                 goto out;
1249
1250         if (!cpumask_intersects(new_mask, cpu_active_mask)) {
1251                 ret = -EINVAL;
1252                 goto out;
1253         }
1254
1255         do_set_cpus_allowed(p, new_mask);
1256
1257         /* Can the task run on the task's current CPU? If so, we're done */
1258         if (cpumask_test_cpu(task_cpu(p), new_mask))
1259                 goto out;
1260
1261         dest_cpu = cpumask_any_and(cpu_active_mask, new_mask);
1262         if (task_running(rq, p) || p->state == TASK_WAKING) {
1263                 struct migration_arg arg = { p, dest_cpu };
1264                 /* Need help from migration thread: drop lock and wait. */
1265                 task_rq_unlock(rq, p, &flags);
1266                 stop_one_cpu(cpu_of(rq), migration_cpu_stop, &arg);
1267                 tlb_migrate_finish(p->mm);
1268                 return 0;
1269         } else if (task_on_rq_queued(p)) {
1270                 /*
1271                  * OK, since we're going to drop the lock immediately
1272                  * afterwards anyway.
1273                  */
1274                 lockdep_unpin_lock(&rq->lock);
1275                 rq = move_queued_task(rq, p, dest_cpu);
1276                 lockdep_pin_lock(&rq->lock);
1277         }
1278 out:
1279         task_rq_unlock(rq, p, &flags);
1280
1281         return ret;
1282 }
1283
1284 int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
1285 {
1286         return __set_cpus_allowed_ptr(p, new_mask, false);
1287 }
1288 EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr);
1289
1290 void set_task_cpu(struct task_struct *p, unsigned int new_cpu)
1291 {
1292 #ifdef CONFIG_SCHED_DEBUG
1293         /*
1294          * We should never call set_task_cpu() on a blocked task,
1295          * ttwu() will sort out the placement.
1296          */
1297         WARN_ON_ONCE(p->state != TASK_RUNNING && p->state != TASK_WAKING &&
1298                         !p->on_rq);
1299
1300 #ifdef CONFIG_LOCKDEP
1301         /*
1302          * The caller should hold either p->pi_lock or rq->lock, when changing
1303          * a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks.
1304          *
1305          * sched_move_task() holds both and thus holding either pins the cgroup,
1306          * see task_group().
1307          *
1308          * Furthermore, all task_rq users should acquire both locks, see
1309          * task_rq_lock().
1310          */
1311         WARN_ON_ONCE(debug_locks && !(lockdep_is_held(&p->pi_lock) ||
1312                                       lockdep_is_held(&task_rq(p)->lock)));
1313 #endif
1314 #endif
1315
1316         trace_sched_migrate_task(p, new_cpu);
1317
1318         if (task_cpu(p) != new_cpu) {
1319                 if (p->sched_class->migrate_task_rq)
1320                         p->sched_class->migrate_task_rq(p);
1321                 p->se.nr_migrations++;
1322                 perf_event_task_migrate(p);
1323
1324                 walt_fixup_busy_time(p, new_cpu);
1325         }
1326
1327         __set_task_cpu(p, new_cpu);
1328 }
1329
1330 static void __migrate_swap_task(struct task_struct *p, int cpu)
1331 {
1332         if (task_on_rq_queued(p)) {
1333                 struct rq *src_rq, *dst_rq;
1334
1335                 src_rq = task_rq(p);
1336                 dst_rq = cpu_rq(cpu);
1337
1338                 deactivate_task(src_rq, p, 0);
1339                 p->on_rq = TASK_ON_RQ_MIGRATING;
1340                 set_task_cpu(p, cpu);
1341                 p->on_rq = TASK_ON_RQ_QUEUED;
1342                 activate_task(dst_rq, p, 0);
1343                 check_preempt_curr(dst_rq, p, 0);
1344         } else {
1345                 /*
1346                  * Task isn't running anymore; make it appear like we migrated
1347                  * it before it went to sleep. This means on wakeup we make the
1348                  * previous cpu our targer instead of where it really is.
1349                  */
1350                 p->wake_cpu = cpu;
1351         }
1352 }
1353
1354 struct migration_swap_arg {
1355         struct task_struct *src_task, *dst_task;
1356         int src_cpu, dst_cpu;
1357 };
1358
1359 static int migrate_swap_stop(void *data)
1360 {
1361         struct migration_swap_arg *arg = data;
1362         struct rq *src_rq, *dst_rq;
1363         int ret = -EAGAIN;
1364
1365         if (!cpu_active(arg->src_cpu) || !cpu_active(arg->dst_cpu))
1366                 return -EAGAIN;
1367
1368         src_rq = cpu_rq(arg->src_cpu);
1369         dst_rq = cpu_rq(arg->dst_cpu);
1370
1371         double_raw_lock(&arg->src_task->pi_lock,
1372                         &arg->dst_task->pi_lock);
1373         double_rq_lock(src_rq, dst_rq);
1374
1375         if (task_cpu(arg->dst_task) != arg->dst_cpu)
1376                 goto unlock;
1377
1378         if (task_cpu(arg->src_task) != arg->src_cpu)
1379                 goto unlock;
1380
1381         if (!cpumask_test_cpu(arg->dst_cpu, tsk_cpus_allowed(arg->src_task)))
1382                 goto unlock;
1383
1384         if (!cpumask_test_cpu(arg->src_cpu, tsk_cpus_allowed(arg->dst_task)))
1385                 goto unlock;
1386
1387         __migrate_swap_task(arg->src_task, arg->dst_cpu);
1388         __migrate_swap_task(arg->dst_task, arg->src_cpu);
1389
1390         ret = 0;
1391
1392 unlock:
1393         double_rq_unlock(src_rq, dst_rq);
1394         raw_spin_unlock(&arg->dst_task->pi_lock);
1395         raw_spin_unlock(&arg->src_task->pi_lock);
1396
1397         return ret;
1398 }
1399
1400 /*
1401  * Cross migrate two tasks
1402  */
1403 int migrate_swap(struct task_struct *cur, struct task_struct *p)
1404 {
1405         struct migration_swap_arg arg;
1406         int ret = -EINVAL;
1407
1408         arg = (struct migration_swap_arg){
1409                 .src_task = cur,
1410                 .src_cpu = task_cpu(cur),
1411                 .dst_task = p,
1412                 .dst_cpu = task_cpu(p),
1413         };
1414
1415         if (arg.src_cpu == arg.dst_cpu)
1416                 goto out;
1417
1418         /*
1419          * These three tests are all lockless; this is OK since all of them
1420          * will be re-checked with proper locks held further down the line.
1421          */
1422         if (!cpu_active(arg.src_cpu) || !cpu_active(arg.dst_cpu))
1423                 goto out;
1424
1425         if (!cpumask_test_cpu(arg.dst_cpu, tsk_cpus_allowed(arg.src_task)))
1426                 goto out;
1427
1428         if (!cpumask_test_cpu(arg.src_cpu, tsk_cpus_allowed(arg.dst_task)))
1429                 goto out;
1430
1431         trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu);
1432         ret = stop_two_cpus(arg.dst_cpu, arg.src_cpu, migrate_swap_stop, &arg);
1433
1434 out:
1435         return ret;
1436 }
1437
1438 /*
1439  * wait_task_inactive - wait for a thread to unschedule.
1440  *
1441  * If @match_state is nonzero, it's the @p->state value just checked and
1442  * not expected to change.  If it changes, i.e. @p might have woken up,
1443  * then return zero.  When we succeed in waiting for @p to be off its CPU,
1444  * we return a positive number (its total switch count).  If a second call
1445  * a short while later returns the same number, the caller can be sure that
1446  * @p has remained unscheduled the whole time.
1447  *
1448  * The caller must ensure that the task *will* unschedule sometime soon,
1449  * else this function might spin for a *long* time. This function can't
1450  * be called with interrupts off, or it may introduce deadlock with
1451  * smp_call_function() if an IPI is sent by the same process we are
1452  * waiting to become inactive.
1453  */
1454 unsigned long wait_task_inactive(struct task_struct *p, long match_state)
1455 {
1456         unsigned long flags;
1457         int running, queued;
1458         unsigned long ncsw;
1459         struct rq *rq;
1460
1461         for (;;) {
1462                 /*
1463                  * We do the initial early heuristics without holding
1464                  * any task-queue locks at all. We'll only try to get
1465                  * the runqueue lock when things look like they will
1466                  * work out!
1467                  */
1468                 rq = task_rq(p);
1469
1470                 /*
1471                  * If the task is actively running on another CPU
1472                  * still, just relax and busy-wait without holding
1473                  * any locks.
1474                  *
1475                  * NOTE! Since we don't hold any locks, it's not
1476                  * even sure that "rq" stays as the right runqueue!
1477                  * But we don't care, since "task_running()" will
1478                  * return false if the runqueue has changed and p
1479                  * is actually now running somewhere else!
1480                  */
1481                 while (task_running(rq, p)) {
1482                         if (match_state && unlikely(p->state != match_state))
1483                                 return 0;
1484                         cpu_relax();
1485                 }
1486
1487                 /*
1488                  * Ok, time to look more closely! We need the rq
1489                  * lock now, to be *sure*. If we're wrong, we'll
1490                  * just go back and repeat.
1491                  */
1492                 rq = task_rq_lock(p, &flags);
1493                 trace_sched_wait_task(p);
1494                 running = task_running(rq, p);
1495                 queued = task_on_rq_queued(p);
1496                 ncsw = 0;
1497                 if (!match_state || p->state == match_state)
1498                         ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
1499                 task_rq_unlock(rq, p, &flags);
1500
1501                 /*
1502                  * If it changed from the expected state, bail out now.
1503                  */
1504                 if (unlikely(!ncsw))
1505                         break;
1506
1507                 /*
1508                  * Was it really running after all now that we
1509                  * checked with the proper locks actually held?
1510                  *
1511                  * Oops. Go back and try again..
1512                  */
1513                 if (unlikely(running)) {
1514                         cpu_relax();
1515                         continue;
1516                 }
1517
1518                 /*
1519                  * It's not enough that it's not actively running,
1520                  * it must be off the runqueue _entirely_, and not
1521                  * preempted!
1522                  *
1523                  * So if it was still runnable (but just not actively
1524                  * running right now), it's preempted, and we should
1525                  * yield - it could be a while.
1526                  */
1527                 if (unlikely(queued)) {
1528                         ktime_t to = ktime_set(0, NSEC_PER_SEC/HZ);
1529
1530                         set_current_state(TASK_UNINTERRUPTIBLE);
1531                         schedule_hrtimeout(&to, HRTIMER_MODE_REL);
1532                         continue;
1533                 }
1534
1535                 /*
1536                  * Ahh, all good. It wasn't running, and it wasn't
1537                  * runnable, which means that it will never become
1538                  * running in the future either. We're all done!
1539                  */
1540                 break;
1541         }
1542
1543         return ncsw;
1544 }
1545
1546 /***
1547  * kick_process - kick a running thread to enter/exit the kernel
1548  * @p: the to-be-kicked thread
1549  *
1550  * Cause a process which is running on another CPU to enter
1551  * kernel-mode, without any delay. (to get signals handled.)
1552  *
1553  * NOTE: this function doesn't have to take the runqueue lock,
1554  * because all it wants to ensure is that the remote task enters
1555  * the kernel. If the IPI races and the task has been migrated
1556  * to another CPU then no harm is done and the purpose has been
1557  * achieved as well.
1558  */
1559 void kick_process(struct task_struct *p)
1560 {
1561         int cpu;
1562
1563         preempt_disable();
1564         cpu = task_cpu(p);
1565         if ((cpu != smp_processor_id()) && task_curr(p))
1566                 smp_send_reschedule(cpu);
1567         preempt_enable();
1568 }
1569 EXPORT_SYMBOL_GPL(kick_process);
1570
1571 /*
1572  * ->cpus_allowed is protected by both rq->lock and p->pi_lock
1573  */
1574 static int select_fallback_rq(int cpu, struct task_struct *p)
1575 {
1576         int nid = cpu_to_node(cpu);
1577         const struct cpumask *nodemask = NULL;
1578         enum { cpuset, possible, fail } state = cpuset;
1579         int dest_cpu;
1580
1581         /*
1582          * If the node that the cpu is on has been offlined, cpu_to_node()
1583          * will return -1. There is no cpu on the node, and we should
1584          * select the cpu on the other node.
1585          */
1586         if (nid != -1) {
1587                 nodemask = cpumask_of_node(nid);
1588
1589                 /* Look for allowed, online CPU in same node. */
1590                 for_each_cpu(dest_cpu, nodemask) {
1591                         if (!cpu_online(dest_cpu))
1592                                 continue;
1593                         if (!cpu_active(dest_cpu))
1594                                 continue;
1595                         if (cpumask_test_cpu(dest_cpu, tsk_cpus_allowed(p)))
1596                                 return dest_cpu;
1597                 }
1598         }
1599
1600         for (;;) {
1601                 /* Any allowed, online CPU? */
1602                 for_each_cpu(dest_cpu, tsk_cpus_allowed(p)) {
1603                         if (!cpu_online(dest_cpu))
1604                                 continue;
1605                         if (!cpu_active(dest_cpu))
1606                                 continue;
1607                         goto out;
1608                 }
1609
1610                 /* No more Mr. Nice Guy. */
1611                 switch (state) {
1612                 case cpuset:
1613                         if (IS_ENABLED(CONFIG_CPUSETS)) {
1614                                 cpuset_cpus_allowed_fallback(p);
1615                                 state = possible;
1616                                 break;
1617                         }
1618                         /* fall-through */
1619                 case possible:
1620                         do_set_cpus_allowed(p, cpu_possible_mask);
1621                         state = fail;
1622                         break;
1623
1624                 case fail:
1625                         BUG();
1626                         break;
1627                 }
1628         }
1629
1630 out:
1631         if (state != cpuset) {
1632                 /*
1633                  * Don't tell them about moving exiting tasks or
1634                  * kernel threads (both mm NULL), since they never
1635                  * leave kernel.
1636                  */
1637                 if (p->mm && printk_ratelimit()) {
1638                         printk_deferred("process %d (%s) no longer affine to cpu%d\n",
1639                                         task_pid_nr(p), p->comm, cpu);
1640                 }
1641         }
1642
1643         return dest_cpu;
1644 }
1645
1646 /*
1647  * The caller (fork, wakeup) owns p->pi_lock, ->cpus_allowed is stable.
1648  */
1649 static inline
1650 int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags,
1651                    int sibling_count_hint)
1652 {
1653         lockdep_assert_held(&p->pi_lock);
1654
1655         if (p->nr_cpus_allowed > 1)
1656                 cpu = p->sched_class->select_task_rq(p, cpu, sd_flags, wake_flags,
1657                                                      sibling_count_hint);
1658
1659         /*
1660          * In order not to call set_task_cpu() on a blocking task we need
1661          * to rely on ttwu() to place the task on a valid ->cpus_allowed
1662          * cpu.
1663          *
1664          * Since this is common to all placement strategies, this lives here.
1665          *
1666          * [ this allows ->select_task() to simply return task_cpu(p) and
1667          *   not worry about this generic constraint ]
1668          */
1669         if (unlikely(!cpumask_test_cpu(cpu, tsk_cpus_allowed(p)) ||
1670                      !cpu_online(cpu)))
1671                 cpu = select_fallback_rq(task_cpu(p), p);
1672
1673         return cpu;
1674 }
1675
1676 static void update_avg(u64 *avg, u64 sample)
1677 {
1678         s64 diff = sample - *avg;
1679         *avg += diff >> 3;
1680 }
1681
1682 #else
1683
1684 static inline int __set_cpus_allowed_ptr(struct task_struct *p,
1685                                          const struct cpumask *new_mask, bool check)
1686 {
1687         return set_cpus_allowed_ptr(p, new_mask);
1688 }
1689
1690 #endif /* CONFIG_SMP */
1691
1692 static void
1693 ttwu_stat(struct task_struct *p, int cpu, int wake_flags)
1694 {
1695 #ifdef CONFIG_SCHEDSTATS
1696         struct rq *rq = this_rq();
1697
1698 #ifdef CONFIG_SMP
1699         int this_cpu = smp_processor_id();
1700
1701         if (cpu == this_cpu) {
1702                 schedstat_inc(rq, ttwu_local);
1703                 schedstat_inc(p, se.statistics.nr_wakeups_local);
1704         } else {
1705                 struct sched_domain *sd;
1706
1707                 schedstat_inc(p, se.statistics.nr_wakeups_remote);
1708                 rcu_read_lock();
1709                 for_each_domain(this_cpu, sd) {
1710                         if (cpumask_test_cpu(cpu, sched_domain_span(sd))) {
1711                                 schedstat_inc(sd, ttwu_wake_remote);
1712                                 break;
1713                         }
1714                 }
1715                 rcu_read_unlock();
1716         }
1717
1718         if (wake_flags & WF_MIGRATED)
1719                 schedstat_inc(p, se.statistics.nr_wakeups_migrate);
1720
1721 #endif /* CONFIG_SMP */
1722
1723         schedstat_inc(rq, ttwu_count);
1724         schedstat_inc(p, se.statistics.nr_wakeups);
1725
1726         if (wake_flags & WF_SYNC)
1727                 schedstat_inc(p, se.statistics.nr_wakeups_sync);
1728
1729 #endif /* CONFIG_SCHEDSTATS */
1730 }
1731
1732 static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
1733 {
1734         activate_task(rq, p, en_flags);
1735         p->on_rq = TASK_ON_RQ_QUEUED;
1736
1737         /* if a worker is waking up, notify workqueue */
1738         if (p->flags & PF_WQ_WORKER)
1739                 wq_worker_waking_up(p, cpu_of(rq));
1740 }
1741
1742 /*
1743  * Mark the task runnable and perform wakeup-preemption.
1744  */
1745 static void
1746 ttwu_do_wakeup(struct rq *rq, struct task_struct *p, int wake_flags)
1747 {
1748         check_preempt_curr(rq, p, wake_flags);
1749         p->state = TASK_RUNNING;
1750         trace_sched_wakeup(p);
1751
1752 #ifdef CONFIG_SMP
1753         if (p->sched_class->task_woken) {
1754                 /*
1755                  * Our task @p is fully woken up and running; so its safe to
1756                  * drop the rq->lock, hereafter rq is only used for statistics.
1757                  */
1758                 lockdep_unpin_lock(&rq->lock);
1759                 p->sched_class->task_woken(rq, p);
1760                 lockdep_pin_lock(&rq->lock);
1761         }
1762
1763         if (rq->idle_stamp) {
1764                 u64 delta = rq_clock(rq) - rq->idle_stamp;
1765                 u64 max = 2*rq->max_idle_balance_cost;
1766
1767                 update_avg(&rq->avg_idle, delta);
1768
1769                 if (rq->avg_idle > max)
1770                         rq->avg_idle = max;
1771
1772                 rq->idle_stamp = 0;
1773         }
1774 #endif
1775 }
1776
1777 static void
1778 ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags)
1779 {
1780         lockdep_assert_held(&rq->lock);
1781
1782 #ifdef CONFIG_SMP
1783         if (p->sched_contributes_to_load)
1784                 rq->nr_uninterruptible--;
1785 #endif
1786
1787         ttwu_activate(rq, p, ENQUEUE_WAKEUP | ENQUEUE_WAKING);
1788         ttwu_do_wakeup(rq, p, wake_flags);
1789 }
1790
1791 /*
1792  * Called in case the task @p isn't fully descheduled from its runqueue,
1793  * in this case we must do a remote wakeup. Its a 'light' wakeup though,
1794  * since all we need to do is flip p->state to TASK_RUNNING, since
1795  * the task is still ->on_rq.
1796  */
1797 static int ttwu_remote(struct task_struct *p, int wake_flags)
1798 {
1799         struct rq *rq;
1800         int ret = 0;
1801
1802         rq = __task_rq_lock(p);
1803         if (task_on_rq_queued(p)) {
1804                 /* check_preempt_curr() may use rq clock */
1805                 update_rq_clock(rq);
1806                 ttwu_do_wakeup(rq, p, wake_flags);
1807                 ret = 1;
1808         }
1809         __task_rq_unlock(rq);
1810
1811         return ret;
1812 }
1813
1814 #ifdef CONFIG_SMP
1815 void sched_ttwu_pending(void)
1816 {
1817         struct rq *rq = this_rq();
1818         struct llist_node *llist = llist_del_all(&rq->wake_list);
1819         struct task_struct *p;
1820         unsigned long flags;
1821
1822         if (!llist)
1823                 return;
1824
1825         raw_spin_lock_irqsave(&rq->lock, flags);
1826         lockdep_pin_lock(&rq->lock);
1827
1828         while (llist) {
1829                 p = llist_entry(llist, struct task_struct, wake_entry);
1830                 llist = llist_next(llist);
1831                 ttwu_do_activate(rq, p, 0);
1832         }
1833
1834         lockdep_unpin_lock(&rq->lock);
1835         raw_spin_unlock_irqrestore(&rq->lock, flags);
1836 }
1837
1838 void scheduler_ipi(void)
1839 {
1840         /*
1841          * Fold TIF_NEED_RESCHED into the preempt_count; anybody setting
1842          * TIF_NEED_RESCHED remotely (for the first time) will also send
1843          * this IPI.
1844          */
1845         preempt_fold_need_resched();
1846
1847         if (llist_empty(&this_rq()->wake_list) && !got_nohz_idle_kick())
1848                 return;
1849
1850         /*
1851          * Not all reschedule IPI handlers call irq_enter/irq_exit, since
1852          * traditionally all their work was done from the interrupt return
1853          * path. Now that we actually do some work, we need to make sure
1854          * we do call them.
1855          *
1856          * Some archs already do call them, luckily irq_enter/exit nest
1857          * properly.
1858          *
1859          * Arguably we should visit all archs and update all handlers,
1860          * however a fair share of IPIs are still resched only so this would
1861          * somewhat pessimize the simple resched case.
1862          */
1863         irq_enter();
1864         sched_ttwu_pending();
1865
1866         /*
1867          * Check if someone kicked us for doing the nohz idle load balance.
1868          */
1869         if (unlikely(got_nohz_idle_kick())) {
1870                 this_rq()->idle_balance = 1;
1871                 raise_softirq_irqoff(SCHED_SOFTIRQ);
1872         }
1873         irq_exit();
1874 }
1875
1876 static void ttwu_queue_remote(struct task_struct *p, int cpu)
1877 {
1878         struct rq *rq = cpu_rq(cpu);
1879
1880         if (llist_add(&p->wake_entry, &cpu_rq(cpu)->wake_list)) {
1881                 if (!set_nr_if_polling(rq->idle))
1882                         smp_send_reschedule(cpu);
1883                 else
1884                         trace_sched_wake_idle_without_ipi(cpu);
1885         }
1886 }
1887
1888 void wake_up_if_idle(int cpu)
1889 {
1890         struct rq *rq = cpu_rq(cpu);
1891         unsigned long flags;
1892
1893         rcu_read_lock();
1894
1895         if (!is_idle_task(rcu_dereference(rq->curr)))
1896                 goto out;
1897
1898         if (set_nr_if_polling(rq->idle)) {
1899                 trace_sched_wake_idle_without_ipi(cpu);
1900         } else {
1901                 raw_spin_lock_irqsave(&rq->lock, flags);
1902                 if (is_idle_task(rq->curr))
1903                         smp_send_reschedule(cpu);
1904                 /* Else cpu is not in idle, do nothing here */
1905                 raw_spin_unlock_irqrestore(&rq->lock, flags);
1906         }
1907
1908 out:
1909         rcu_read_unlock();
1910 }
1911
1912 bool cpus_share_cache(int this_cpu, int that_cpu)
1913 {
1914         return per_cpu(sd_llc_id, this_cpu) == per_cpu(sd_llc_id, that_cpu);
1915 }
1916 #endif /* CONFIG_SMP */
1917
1918 static void ttwu_queue(struct task_struct *p, int cpu)
1919 {
1920         struct rq *rq = cpu_rq(cpu);
1921
1922 #if defined(CONFIG_SMP)
1923         if (sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) {
1924                 sched_clock_cpu(cpu); /* sync clocks x-cpu */
1925                 ttwu_queue_remote(p, cpu);
1926                 return;
1927         }
1928 #endif
1929
1930         raw_spin_lock(&rq->lock);
1931         lockdep_pin_lock(&rq->lock);
1932         ttwu_do_activate(rq, p, 0);
1933         lockdep_unpin_lock(&rq->lock);
1934         raw_spin_unlock(&rq->lock);
1935 }
1936
1937 /**
1938  * try_to_wake_up - wake up a thread
1939  * @p: the thread to be awakened
1940  * @state: the mask of task states that can be woken
1941  * @wake_flags: wake modifier flags (WF_*)
1942  * @sibling_count_hint: A hint at the number of threads that are being woken up
1943  *                      in this event.
1944  *
1945  * Put it on the run-queue if it's not already there. The "current"
1946  * thread is always on the run-queue (except when the actual
1947  * re-schedule is in progress), and as such you're allowed to do
1948  * the simpler "current->state = TASK_RUNNING" to mark yourself
1949  * runnable without the overhead of this.
1950  *
1951  * Return: %true if @p was woken up, %false if it was already running.
1952  * or @state didn't match @p's state.
1953  */
1954 static int
1955 try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags,
1956                int sibling_count_hint)
1957 {
1958         unsigned long flags;
1959         int cpu, success = 0;
1960 #ifdef CONFIG_SMP
1961         struct rq *rq;
1962         u64 wallclock;
1963 #endif
1964
1965         /*
1966          * If we are going to wake up a thread waiting for CONDITION we
1967          * need to ensure that CONDITION=1 done by the caller can not be
1968          * reordered with p->state check below. This pairs with mb() in
1969          * set_current_state() the waiting thread does.
1970          */
1971         smp_mb__before_spinlock();
1972         raw_spin_lock_irqsave(&p->pi_lock, flags);
1973         if (!(p->state & state))
1974                 goto out;
1975
1976         trace_sched_waking(p);
1977
1978         success = 1; /* we're going to change ->state */
1979         cpu = task_cpu(p);
1980
1981         /*
1982          * Ensure we load p->on_rq _after_ p->state, otherwise it would
1983          * be possible to, falsely, observe p->on_rq == 0 and get stuck
1984          * in smp_cond_load_acquire() below.
1985          *
1986          * sched_ttwu_pending()                 try_to_wake_up()
1987          *   [S] p->on_rq = 1;                  [L] P->state
1988          *       UNLOCK rq->lock  -----.
1989          *                              \
1990          *                               +---   RMB
1991          * schedule()                   /
1992          *       LOCK rq->lock    -----'
1993          *       UNLOCK rq->lock
1994          *
1995          * [task p]
1996          *   [S] p->state = UNINTERRUPTIBLE     [L] p->on_rq
1997          *
1998          * Pairs with the UNLOCK+LOCK on rq->lock from the
1999          * last wakeup of our task and the schedule that got our task
2000          * current.
2001          */
2002         smp_rmb();
2003         if (p->on_rq && ttwu_remote(p, wake_flags))
2004                 goto stat;
2005
2006 #ifdef CONFIG_SMP
2007         /*
2008          * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be
2009          * possible to, falsely, observe p->on_cpu == 0.
2010          *
2011          * One must be running (->on_cpu == 1) in order to remove oneself
2012          * from the runqueue.
2013          *
2014          *  [S] ->on_cpu = 1;   [L] ->on_rq
2015          *      UNLOCK rq->lock
2016          *                      RMB
2017          *      LOCK   rq->lock
2018          *  [S] ->on_rq = 0;    [L] ->on_cpu
2019          *
2020          * Pairs with the full barrier implied in the UNLOCK+LOCK on rq->lock
2021          * from the consecutive calls to schedule(); the first switching to our
2022          * task, the second putting it to sleep.
2023          */
2024         smp_rmb();
2025
2026         /*
2027          * If the owning (remote) cpu is still in the middle of schedule() with
2028          * this task as prev, wait until its done referencing the task.
2029          */
2030         while (p->on_cpu)
2031                 cpu_relax();
2032         /*
2033          * Combined with the control dependency above, we have an effective
2034          * smp_load_acquire() without the need for full barriers.
2035          *
2036          * Pairs with the smp_store_release() in finish_lock_switch().
2037          *
2038          * This ensures that tasks getting woken will be fully ordered against
2039          * their previous state and preserve Program Order.
2040          */
2041         smp_rmb();
2042
2043         rq = cpu_rq(task_cpu(p));
2044
2045         raw_spin_lock(&rq->lock);
2046         wallclock = walt_ktime_clock();
2047         walt_update_task_ravg(rq->curr, rq, TASK_UPDATE, wallclock, 0);
2048         walt_update_task_ravg(p, rq, TASK_WAKE, wallclock, 0);
2049         raw_spin_unlock(&rq->lock);
2050
2051         p->sched_contributes_to_load = !!task_contributes_to_load(p);
2052         p->state = TASK_WAKING;
2053
2054         if (p->sched_class->task_waking)
2055                 p->sched_class->task_waking(p);
2056
2057         cpu = select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, wake_flags,
2058                              sibling_count_hint);
2059         if (task_cpu(p) != cpu) {
2060                 wake_flags |= WF_MIGRATED;
2061                 set_task_cpu(p, cpu);
2062         }
2063
2064 #endif /* CONFIG_SMP */
2065
2066         ttwu_queue(p, cpu);
2067 stat:
2068         ttwu_stat(p, cpu, wake_flags);
2069 out:
2070         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2071
2072         return success;
2073 }
2074
2075 /**
2076  * try_to_wake_up_local - try to wake up a local task with rq lock held
2077  * @p: the thread to be awakened
2078  *
2079  * Put @p on the run-queue if it's not already there. The caller must
2080  * ensure that this_rq() is locked, @p is bound to this_rq() and not
2081  * the current task.
2082  */
2083 static void try_to_wake_up_local(struct task_struct *p)
2084 {
2085         struct rq *rq = task_rq(p);
2086
2087         if (WARN_ON_ONCE(rq != this_rq()) ||
2088             WARN_ON_ONCE(p == current))
2089                 return;
2090
2091         lockdep_assert_held(&rq->lock);
2092
2093         if (!raw_spin_trylock(&p->pi_lock)) {
2094                 /*
2095                  * This is OK, because current is on_cpu, which avoids it being
2096                  * picked for load-balance and preemption/IRQs are still
2097                  * disabled avoiding further scheduler activity on it and we've
2098                  * not yet picked a replacement task.
2099                  */
2100                 lockdep_unpin_lock(&rq->lock);
2101                 raw_spin_unlock(&rq->lock);
2102                 raw_spin_lock(&p->pi_lock);
2103                 raw_spin_lock(&rq->lock);
2104                 lockdep_pin_lock(&rq->lock);
2105         }
2106
2107         if (!(p->state & TASK_NORMAL))
2108                 goto out;
2109
2110         trace_sched_waking(p);
2111
2112         if (!task_on_rq_queued(p)) {
2113                 u64 wallclock = walt_ktime_clock();
2114
2115                 walt_update_task_ravg(rq->curr, rq, TASK_UPDATE, wallclock, 0);
2116                 walt_update_task_ravg(p, rq, TASK_WAKE, wallclock, 0);
2117                 ttwu_activate(rq, p, ENQUEUE_WAKEUP);
2118         }
2119
2120         ttwu_do_wakeup(rq, p, 0);
2121         ttwu_stat(p, smp_processor_id(), 0);
2122 out:
2123         raw_spin_unlock(&p->pi_lock);
2124 }
2125
2126 /**
2127  * wake_up_process - Wake up a specific process
2128  * @p: The process to be woken up.
2129  *
2130  * Attempt to wake up the nominated process and move it to the set of runnable
2131  * processes.
2132  *
2133  * Return: 1 if the process was woken up, 0 if it was already running.
2134  *
2135  * It may be assumed that this function implies a write memory barrier before
2136  * changing the task state if and only if any tasks are woken up.
2137  */
2138 int wake_up_process(struct task_struct *p)
2139 {
2140         return try_to_wake_up(p, TASK_NORMAL, 0, 1);
2141 }
2142 EXPORT_SYMBOL(wake_up_process);
2143
2144 int wake_up_state(struct task_struct *p, unsigned int state)
2145 {
2146         return try_to_wake_up(p, state, 0, 1);
2147 }
2148
2149 /*
2150  * This function clears the sched_dl_entity static params.
2151  */
2152 void __dl_clear_params(struct task_struct *p)
2153 {
2154         struct sched_dl_entity *dl_se = &p->dl;
2155
2156         dl_se->dl_runtime = 0;
2157         dl_se->dl_deadline = 0;
2158         dl_se->dl_period = 0;
2159         dl_se->flags = 0;
2160         dl_se->dl_bw = 0;
2161
2162         dl_se->dl_throttled = 0;
2163         dl_se->dl_new = 1;
2164         dl_se->dl_yielded = 0;
2165 }
2166
2167 /*
2168  * Perform scheduler related setup for a newly forked process p.
2169  * p is forked by current.
2170  *
2171  * __sched_fork() is basic setup used by init_idle() too:
2172  */
2173 static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
2174 {
2175         p->on_rq                        = 0;
2176
2177         p->se.on_rq                     = 0;
2178         p->se.exec_start                = 0;
2179         p->se.sum_exec_runtime          = 0;
2180         p->se.prev_sum_exec_runtime     = 0;
2181         p->se.nr_migrations             = 0;
2182         p->se.vruntime                  = 0;
2183 #ifdef CONFIG_SCHED_WALT
2184         p->last_sleep_ts                = 0;
2185 #endif
2186
2187         INIT_LIST_HEAD(&p->se.group_node);
2188         walt_init_new_task_load(p);
2189
2190 #ifdef CONFIG_FAIR_GROUP_SCHED
2191         p->se.cfs_rq                    = NULL;
2192 #endif
2193
2194 #ifdef CONFIG_SCHEDSTATS
2195         memset(&p->se.statistics, 0, sizeof(p->se.statistics));
2196 #endif
2197
2198         RB_CLEAR_NODE(&p->dl.rb_node);
2199         init_dl_task_timer(&p->dl);
2200         __dl_clear_params(p);
2201
2202         INIT_LIST_HEAD(&p->rt.run_list);
2203
2204 #ifdef CONFIG_PREEMPT_NOTIFIERS
2205         INIT_HLIST_HEAD(&p->preempt_notifiers);
2206 #endif
2207
2208 #ifdef CONFIG_NUMA_BALANCING
2209         if (p->mm && atomic_read(&p->mm->mm_users) == 1) {
2210                 p->mm->numa_next_scan = jiffies + msecs_to_jiffies(sysctl_numa_balancing_scan_delay);
2211                 p->mm->numa_scan_seq = 0;
2212         }
2213
2214         if (clone_flags & CLONE_VM)
2215                 p->numa_preferred_nid = current->numa_preferred_nid;
2216         else
2217                 p->numa_preferred_nid = -1;
2218
2219         p->node_stamp = 0ULL;
2220         p->numa_scan_seq = p->mm ? p->mm->numa_scan_seq : 0;
2221         p->numa_scan_period = sysctl_numa_balancing_scan_delay;
2222         p->numa_work.next = &p->numa_work;
2223         p->numa_faults = NULL;
2224         p->last_task_numa_placement = 0;
2225         p->last_sum_exec_runtime = 0;
2226
2227         p->numa_group = NULL;
2228 #endif /* CONFIG_NUMA_BALANCING */
2229 }
2230
2231 DEFINE_STATIC_KEY_FALSE(sched_numa_balancing);
2232
2233 #ifdef CONFIG_NUMA_BALANCING
2234
2235 void set_numabalancing_state(bool enabled)
2236 {
2237         if (enabled)
2238                 static_branch_enable(&sched_numa_balancing);
2239         else
2240                 static_branch_disable(&sched_numa_balancing);
2241 }
2242
2243 #ifdef CONFIG_PROC_SYSCTL
2244 int sysctl_numa_balancing(struct ctl_table *table, int write,
2245                          void __user *buffer, size_t *lenp, loff_t *ppos)
2246 {
2247         struct ctl_table t;
2248         int err;
2249         int state = static_branch_likely(&sched_numa_balancing);
2250
2251         if (write && !capable(CAP_SYS_ADMIN))
2252                 return -EPERM;
2253
2254         t = *table;
2255         t.data = &state;
2256         err = proc_dointvec_minmax(&t, write, buffer, lenp, ppos);
2257         if (err < 0)
2258                 return err;
2259         if (write)
2260                 set_numabalancing_state(state);
2261         return err;
2262 }
2263 #endif
2264 #endif
2265
2266 /*
2267  * fork()/clone()-time setup:
2268  */
2269 int sched_fork(unsigned long clone_flags, struct task_struct *p)
2270 {
2271         unsigned long flags;
2272         int cpu = get_cpu();
2273
2274         __sched_fork(clone_flags, p);
2275         /*
2276          * We mark the process as NEW here. This guarantees that
2277          * nobody will actually run it, and a signal or other external
2278          * event cannot wake it up and insert it on the runqueue either.
2279          */
2280         p->state = TASK_NEW;
2281
2282         /*
2283          * Make sure we do not leak PI boosting priority to the child.
2284          */
2285         p->prio = current->normal_prio;
2286
2287         /*
2288          * Revert to default priority/policy on fork if requested.
2289          */
2290         if (unlikely(p->sched_reset_on_fork)) {
2291                 if (task_has_dl_policy(p) || task_has_rt_policy(p)) {
2292                         p->policy = SCHED_NORMAL;
2293                         p->static_prio = NICE_TO_PRIO(0);
2294                         p->rt_priority = 0;
2295                 } else if (PRIO_TO_NICE(p->static_prio) < 0)
2296                         p->static_prio = NICE_TO_PRIO(0);
2297
2298                 p->prio = p->normal_prio = __normal_prio(p);
2299                 set_load_weight(p);
2300
2301                 /*
2302                  * We don't need the reset flag anymore after the fork. It has
2303                  * fulfilled its duty:
2304                  */
2305                 p->sched_reset_on_fork = 0;
2306         }
2307
2308         if (dl_prio(p->prio)) {
2309                 put_cpu();
2310                 return -EAGAIN;
2311         } else if (rt_prio(p->prio)) {
2312                 p->sched_class = &rt_sched_class;
2313         } else {
2314                 p->sched_class = &fair_sched_class;
2315         }
2316
2317         init_entity_runnable_average(&p->se);
2318
2319         /*
2320          * The child is not yet in the pid-hash so no cgroup attach races,
2321          * and the cgroup is pinned to this child due to cgroup_fork()
2322          * is ran before sched_fork().
2323          *
2324          * Silence PROVE_RCU.
2325          */
2326         raw_spin_lock_irqsave(&p->pi_lock, flags);
2327         /*
2328          * We're setting the cpu for the first time, we don't migrate,
2329          * so use __set_task_cpu().
2330          */
2331         __set_task_cpu(p, cpu);
2332         if (p->sched_class->task_fork)
2333                 p->sched_class->task_fork(p);
2334         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2335
2336 #ifdef CONFIG_SCHED_INFO
2337         if (likely(sched_info_on()))
2338                 memset(&p->sched_info, 0, sizeof(p->sched_info));
2339 #endif
2340 #if defined(CONFIG_SMP)
2341         p->on_cpu = 0;
2342 #endif
2343         init_task_preempt_count(p);
2344 #ifdef CONFIG_SMP
2345         plist_node_init(&p->pushable_tasks, MAX_PRIO);
2346         RB_CLEAR_NODE(&p->pushable_dl_tasks);
2347 #endif
2348
2349         put_cpu();
2350         return 0;
2351 }
2352
2353 unsigned long to_ratio(u64 period, u64 runtime)
2354 {
2355         if (runtime == RUNTIME_INF)
2356                 return 1ULL << 20;
2357
2358         /*
2359          * Doing this here saves a lot of checks in all
2360          * the calling paths, and returning zero seems
2361          * safe for them anyway.
2362          */
2363         if (period == 0)
2364                 return 0;
2365
2366         return div64_u64(runtime << 20, period);
2367 }
2368
2369 #ifdef CONFIG_SMP
2370 inline struct dl_bw *dl_bw_of(int i)
2371 {
2372         RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held(),
2373                          "sched RCU must be held");
2374         return &cpu_rq(i)->rd->dl_bw;
2375 }
2376
2377 static inline int dl_bw_cpus(int i)
2378 {
2379         struct root_domain *rd = cpu_rq(i)->rd;
2380         int cpus = 0;
2381
2382         RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held(),
2383                          "sched RCU must be held");
2384         for_each_cpu_and(i, rd->span, cpu_active_mask)
2385                 cpus++;
2386
2387         return cpus;
2388 }
2389 #else
2390 inline struct dl_bw *dl_bw_of(int i)
2391 {
2392         return &cpu_rq(i)->dl.dl_bw;
2393 }
2394
2395 static inline int dl_bw_cpus(int i)
2396 {
2397         return 1;
2398 }
2399 #endif
2400
2401 /*
2402  * We must be sure that accepting a new task (or allowing changing the
2403  * parameters of an existing one) is consistent with the bandwidth
2404  * constraints. If yes, this function also accordingly updates the currently
2405  * allocated bandwidth to reflect the new situation.
2406  *
2407  * This function is called while holding p's rq->lock.
2408  *
2409  * XXX we should delay bw change until the task's 0-lag point, see
2410  * __setparam_dl().
2411  */
2412 static int dl_overflow(struct task_struct *p, int policy,
2413                        const struct sched_attr *attr)
2414 {
2415
2416         struct dl_bw *dl_b = dl_bw_of(task_cpu(p));
2417         u64 period = attr->sched_period ?: attr->sched_deadline;
2418         u64 runtime = attr->sched_runtime;
2419         u64 new_bw = dl_policy(policy) ? to_ratio(period, runtime) : 0;
2420         int cpus, err = -1;
2421
2422         if (new_bw == p->dl.dl_bw)
2423                 return 0;
2424
2425         /*
2426          * Either if a task, enters, leave, or stays -deadline but changes
2427          * its parameters, we may need to update accordingly the total
2428          * allocated bandwidth of the container.
2429          */
2430         raw_spin_lock(&dl_b->lock);
2431         cpus = dl_bw_cpus(task_cpu(p));
2432         if (dl_policy(policy) && !task_has_dl_policy(p) &&
2433             !__dl_overflow(dl_b, cpus, 0, new_bw)) {
2434                 __dl_add(dl_b, new_bw);
2435                 err = 0;
2436         } else if (dl_policy(policy) && task_has_dl_policy(p) &&
2437                    !__dl_overflow(dl_b, cpus, p->dl.dl_bw, new_bw)) {
2438                 __dl_clear(dl_b, p->dl.dl_bw);
2439                 __dl_add(dl_b, new_bw);
2440                 err = 0;
2441         } else if (!dl_policy(policy) && task_has_dl_policy(p)) {
2442                 __dl_clear(dl_b, p->dl.dl_bw);
2443                 err = 0;
2444         }
2445         raw_spin_unlock(&dl_b->lock);
2446
2447         return err;
2448 }
2449
2450 extern void init_dl_bw(struct dl_bw *dl_b);
2451
2452 /*
2453  * wake_up_new_task - wake up a newly created task for the first time.
2454  *
2455  * This function will do some initial scheduler statistics housekeeping
2456  * that must be done for every newly created context, then puts the task
2457  * on the runqueue and wakes it.
2458  */
2459 void wake_up_new_task(struct task_struct *p)
2460 {
2461         unsigned long flags;
2462         struct rq *rq;
2463
2464         raw_spin_lock_irqsave(&p->pi_lock, flags);
2465         p->state = TASK_RUNNING;
2466
2467         walt_init_new_task_load(p);
2468
2469         /* Initialize new task's runnable average */
2470         init_entity_runnable_average(&p->se);
2471 #ifdef CONFIG_SMP
2472         /*
2473          * Fork balancing, do it here and not earlier because:
2474          *  - cpus_allowed can change in the fork path
2475          *  - any previously selected cpu might disappear through hotplug
2476          *
2477          * Use __set_task_cpu() to avoid calling sched_class::migrate_task_rq,
2478          * as we're not fully set-up yet.
2479          */
2480         __set_task_cpu(p, select_task_rq(p, task_cpu(p), SD_BALANCE_FORK, 0, 1));
2481 #endif
2482         rq = __task_rq_lock(p);
2483         update_rq_clock(rq);
2484         post_init_entity_util_avg(&p->se);
2485
2486         walt_mark_task_starting(p);
2487         activate_task(rq, p, ENQUEUE_WAKEUP_NEW);
2488         p->on_rq = TASK_ON_RQ_QUEUED;
2489         trace_sched_wakeup_new(p);
2490         check_preempt_curr(rq, p, WF_FORK);
2491 #ifdef CONFIG_SMP
2492         if (p->sched_class->task_woken) {
2493                 /*
2494                  * Nothing relies on rq->lock after this, so its fine to
2495                  * drop it.
2496                  */
2497                 lockdep_unpin_lock(&rq->lock);
2498                 p->sched_class->task_woken(rq, p);
2499                 lockdep_pin_lock(&rq->lock);
2500         }
2501 #endif
2502         task_rq_unlock(rq, p, &flags);
2503 }
2504
2505 #ifdef CONFIG_PREEMPT_NOTIFIERS
2506
2507 static struct static_key preempt_notifier_key = STATIC_KEY_INIT_FALSE;
2508
2509 void preempt_notifier_inc(void)
2510 {
2511         static_key_slow_inc(&preempt_notifier_key);
2512 }
2513 EXPORT_SYMBOL_GPL(preempt_notifier_inc);
2514
2515 void preempt_notifier_dec(void)
2516 {
2517         static_key_slow_dec(&preempt_notifier_key);
2518 }
2519 EXPORT_SYMBOL_GPL(preempt_notifier_dec);
2520
2521 /**
2522  * preempt_notifier_register - tell me when current is being preempted & rescheduled
2523  * @notifier: notifier struct to register
2524  */
2525 void preempt_notifier_register(struct preempt_notifier *notifier)
2526 {
2527         if (!static_key_false(&preempt_notifier_key))
2528                 WARN(1, "registering preempt_notifier while notifiers disabled\n");
2529
2530         hlist_add_head(&notifier->link, &current->preempt_notifiers);
2531 }
2532 EXPORT_SYMBOL_GPL(preempt_notifier_register);
2533
2534 /**
2535  * preempt_notifier_unregister - no longer interested in preemption notifications
2536  * @notifier: notifier struct to unregister
2537  *
2538  * This is *not* safe to call from within a preemption notifier.
2539  */
2540 void preempt_notifier_unregister(struct preempt_notifier *notifier)
2541 {
2542         hlist_del(&notifier->link);
2543 }
2544 EXPORT_SYMBOL_GPL(preempt_notifier_unregister);
2545
2546 static void __fire_sched_in_preempt_notifiers(struct task_struct *curr)
2547 {
2548         struct preempt_notifier *notifier;
2549
2550         hlist_for_each_entry(notifier, &curr->preempt_notifiers, link)
2551                 notifier->ops->sched_in(notifier, raw_smp_processor_id());
2552 }
2553
2554 static __always_inline void fire_sched_in_preempt_notifiers(struct task_struct *curr)
2555 {
2556         if (static_key_false(&preempt_notifier_key))
2557                 __fire_sched_in_preempt_notifiers(curr);
2558 }
2559
2560 static void
2561 __fire_sched_out_preempt_notifiers(struct task_struct *curr,
2562                                    struct task_struct *next)
2563 {
2564         struct preempt_notifier *notifier;
2565
2566         hlist_for_each_entry(notifier, &curr->preempt_notifiers, link)
2567                 notifier->ops->sched_out(notifier, next);
2568 }
2569
2570 static __always_inline void
2571 fire_sched_out_preempt_notifiers(struct task_struct *curr,
2572                                  struct task_struct *next)
2573 {
2574         if (static_key_false(&preempt_notifier_key))
2575                 __fire_sched_out_preempt_notifiers(curr, next);
2576 }
2577
2578 #else /* !CONFIG_PREEMPT_NOTIFIERS */
2579
2580 static inline void fire_sched_in_preempt_notifiers(struct task_struct *curr)
2581 {
2582 }
2583
2584 static inline void
2585 fire_sched_out_preempt_notifiers(struct task_struct *curr,
2586                                  struct task_struct *next)
2587 {
2588 }
2589
2590 #endif /* CONFIG_PREEMPT_NOTIFIERS */
2591
2592 /**
2593  * prepare_task_switch - prepare to switch tasks
2594  * @rq: the runqueue preparing to switch
2595  * @prev: the current task that is being switched out
2596  * @next: the task we are going to switch to.
2597  *
2598  * This is called with the rq lock held and interrupts off. It must
2599  * be paired with a subsequent finish_task_switch after the context
2600  * switch.
2601  *
2602  * prepare_task_switch sets up locking and calls architecture specific
2603  * hooks.
2604  */
2605 static inline void
2606 prepare_task_switch(struct rq *rq, struct task_struct *prev,
2607                     struct task_struct *next)
2608 {
2609         sched_info_switch(rq, prev, next);
2610         perf_event_task_sched_out(prev, next);
2611         fire_sched_out_preempt_notifiers(prev, next);
2612         prepare_lock_switch(rq, next);
2613         prepare_arch_switch(next);
2614 }
2615
2616 /**
2617  * finish_task_switch - clean up after a task-switch
2618  * @prev: the thread we just switched away from.
2619  *
2620  * finish_task_switch must be called after the context switch, paired
2621  * with a prepare_task_switch call before the context switch.
2622  * finish_task_switch will reconcile locking set up by prepare_task_switch,
2623  * and do any other architecture-specific cleanup actions.
2624  *
2625  * Note that we may have delayed dropping an mm in context_switch(). If
2626  * so, we finish that here outside of the runqueue lock. (Doing it
2627  * with the lock held can cause deadlocks; see schedule() for
2628  * details.)
2629  *
2630  * The context switch have flipped the stack from under us and restored the
2631  * local variables which were saved when this task called schedule() in the
2632  * past. prev == current is still correct but we need to recalculate this_rq
2633  * because prev may have moved to another CPU.
2634  */
2635 static struct rq *finish_task_switch(struct task_struct *prev)
2636         __releases(rq->lock)
2637 {
2638         struct rq *rq = this_rq();
2639         struct mm_struct *mm = rq->prev_mm;
2640         long prev_state;
2641
2642         /*
2643          * The previous task will have left us with a preempt_count of 2
2644          * because it left us after:
2645          *
2646          *      schedule()
2647          *        preempt_disable();                    // 1
2648          *        __schedule()
2649          *          raw_spin_lock_irq(&rq->lock)        // 2
2650          *
2651          * Also, see FORK_PREEMPT_COUNT.
2652          */
2653         if (WARN_ONCE(preempt_count() != 2*PREEMPT_DISABLE_OFFSET,
2654                       "corrupted preempt_count: %s/%d/0x%x\n",
2655                       current->comm, current->pid, preempt_count()))
2656                 preempt_count_set(FORK_PREEMPT_COUNT);
2657
2658         rq->prev_mm = NULL;
2659
2660         /*
2661          * A task struct has one reference for the use as "current".
2662          * If a task dies, then it sets TASK_DEAD in tsk->state and calls
2663          * schedule one last time. The schedule call will never return, and
2664          * the scheduled task must drop that reference.
2665          *
2666          * We must observe prev->state before clearing prev->on_cpu (in
2667          * finish_lock_switch), otherwise a concurrent wakeup can get prev
2668          * running on another CPU and we could rave with its RUNNING -> DEAD
2669          * transition, resulting in a double drop.
2670          */
2671         prev_state = prev->state;
2672         vtime_task_switch(prev);
2673         perf_event_task_sched_in(prev, current);
2674         finish_lock_switch(rq, prev);
2675         finish_arch_post_lock_switch();
2676
2677         fire_sched_in_preempt_notifiers(current);
2678         if (mm)
2679                 mmdrop(mm);
2680         if (unlikely(prev_state == TASK_DEAD)) {
2681                 if (prev->sched_class->task_dead)
2682                         prev->sched_class->task_dead(prev);
2683
2684                 /*
2685                  * Remove function-return probe instances associated with this
2686                  * task and put them back on the free list.
2687                  */
2688                 kprobe_flush_task(prev);
2689                 put_task_struct(prev);
2690         }
2691
2692         tick_nohz_task_switch();
2693         return rq;
2694 }
2695
2696 #ifdef CONFIG_SMP
2697
2698 /* rq->lock is NOT held, but preemption is disabled */
2699 static void __balance_callback(struct rq *rq)
2700 {
2701         struct callback_head *head, *next;
2702         void (*func)(struct rq *rq);
2703         unsigned long flags;
2704
2705         raw_spin_lock_irqsave(&rq->lock, flags);
2706         head = rq->balance_callback;
2707         rq->balance_callback = NULL;
2708         while (head) {
2709                 func = (void (*)(struct rq *))head->func;
2710                 next = head->next;
2711                 head->next = NULL;
2712                 head = next;
2713
2714                 func(rq);
2715         }
2716         raw_spin_unlock_irqrestore(&rq->lock, flags);
2717 }
2718
2719 static inline void balance_callback(struct rq *rq)
2720 {
2721         if (unlikely(rq->balance_callback))
2722                 __balance_callback(rq);
2723 }
2724
2725 #else
2726
2727 static inline void balance_callback(struct rq *rq)
2728 {
2729 }
2730
2731 #endif
2732
2733 /**
2734  * schedule_tail - first thing a freshly forked thread must call.
2735  * @prev: the thread we just switched away from.
2736  */
2737 asmlinkage __visible void schedule_tail(struct task_struct *prev)
2738         __releases(rq->lock)
2739 {
2740         struct rq *rq;
2741
2742         /*
2743          * New tasks start with FORK_PREEMPT_COUNT, see there and
2744          * finish_task_switch() for details.
2745          *
2746          * finish_task_switch() will drop rq->lock() and lower preempt_count
2747          * and the preempt_enable() will end up enabling preemption (on
2748          * PREEMPT_COUNT kernels).
2749          */
2750
2751         rq = finish_task_switch(prev);
2752         balance_callback(rq);
2753         preempt_enable();
2754
2755         if (current->set_child_tid)
2756                 put_user(task_pid_vnr(current), current->set_child_tid);
2757 }
2758
2759 /*
2760  * context_switch - switch to the new MM and the new thread's register state.
2761  */
2762 static inline struct rq *
2763 context_switch(struct rq *rq, struct task_struct *prev,
2764                struct task_struct *next)
2765 {
2766         struct mm_struct *mm, *oldmm;
2767
2768         prepare_task_switch(rq, prev, next);
2769
2770         mm = next->mm;
2771         oldmm = prev->active_mm;
2772         /*
2773          * For paravirt, this is coupled with an exit in switch_to to
2774          * combine the page table reload and the switch backend into
2775          * one hypercall.
2776          */
2777         arch_start_context_switch(prev);
2778
2779         if (!mm) {
2780                 next->active_mm = oldmm;
2781                 atomic_inc(&oldmm->mm_count);
2782                 enter_lazy_tlb(oldmm, next);
2783         } else
2784                 switch_mm_irqs_off(oldmm, mm, next);
2785
2786         if (!prev->mm) {
2787                 prev->active_mm = NULL;
2788                 rq->prev_mm = oldmm;
2789         }
2790         /*
2791          * Since the runqueue lock will be released by the next
2792          * task (which is an invalid locking op but in the case
2793          * of the scheduler it's an obvious special-case), so we
2794          * do an early lockdep release here:
2795          */
2796         lockdep_unpin_lock(&rq->lock);
2797         spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
2798
2799         /* Here we just switch the register state and the stack. */
2800         switch_to(prev, next, prev);
2801         barrier();
2802
2803         return finish_task_switch(prev);
2804 }
2805
2806 /*
2807  * nr_running and nr_context_switches:
2808  *
2809  * externally visible scheduler statistics: current number of runnable
2810  * threads, total number of context switches performed since bootup.
2811  */
2812 unsigned long nr_running(void)
2813 {
2814         unsigned long i, sum = 0;
2815
2816         for_each_online_cpu(i)
2817                 sum += cpu_rq(i)->nr_running;
2818
2819         return sum;
2820 }
2821
2822 /*
2823  * Check if only the current task is running on the cpu.
2824  *
2825  * Caution: this function does not check that the caller has disabled
2826  * preemption, thus the result might have a time-of-check-to-time-of-use
2827  * race.  The caller is responsible to use it correctly, for example:
2828  *
2829  * - from a non-preemptable section (of course)
2830  *
2831  * - from a thread that is bound to a single CPU
2832  *
2833  * - in a loop with very short iterations (e.g. a polling loop)
2834  */
2835 bool single_task_running(void)
2836 {
2837         return raw_rq()->nr_running == 1;
2838 }
2839 EXPORT_SYMBOL(single_task_running);
2840
2841 unsigned long long nr_context_switches(void)
2842 {
2843         int i;
2844         unsigned long long sum = 0;
2845
2846         for_each_possible_cpu(i)
2847                 sum += cpu_rq(i)->nr_switches;
2848
2849         return sum;
2850 }
2851
2852 unsigned long nr_iowait(void)
2853 {
2854         unsigned long i, sum = 0;
2855
2856         for_each_possible_cpu(i)
2857                 sum += atomic_read(&cpu_rq(i)->nr_iowait);
2858
2859         return sum;
2860 }
2861
2862 unsigned long nr_iowait_cpu(int cpu)
2863 {
2864         struct rq *this = cpu_rq(cpu);
2865         return atomic_read(&this->nr_iowait);
2866 }
2867
2868 #ifdef CONFIG_CPU_QUIET
2869 u64 nr_running_integral(unsigned int cpu)
2870 {
2871         unsigned int seqcnt;
2872         u64 integral;
2873         struct rq *q;
2874
2875         if (cpu >= nr_cpu_ids)
2876                 return 0;
2877
2878         q = cpu_rq(cpu);
2879
2880         /*
2881          * Update average to avoid reading stalled value if there were
2882          * no run-queue changes for a long time. On the other hand if
2883          * the changes are happening right now, just read current value
2884          * directly.
2885          */
2886
2887         seqcnt = read_seqcount_begin(&q->ave_seqcnt);
2888         integral = do_nr_running_integral(q);
2889         if (read_seqcount_retry(&q->ave_seqcnt, seqcnt)) {
2890                 read_seqcount_begin(&q->ave_seqcnt);
2891                 integral = q->nr_running_integral;
2892         }
2893
2894         return integral;
2895 }
2896 #endif
2897
2898 void get_iowait_load(unsigned long *nr_waiters, unsigned long *load)
2899 {
2900         struct rq *rq = this_rq();
2901         *nr_waiters = atomic_read(&rq->nr_iowait);
2902         *load = rq->load.weight;
2903 }
2904
2905 #ifdef CONFIG_SMP
2906
2907 /*
2908  * sched_exec - execve() is a valuable balancing opportunity, because at
2909  * this point the task has the smallest effective memory and cache footprint.
2910  */
2911 void sched_exec(void)
2912 {
2913         struct task_struct *p = current;
2914         unsigned long flags;
2915         int dest_cpu;
2916
2917         raw_spin_lock_irqsave(&p->pi_lock, flags);
2918         dest_cpu = p->sched_class->select_task_rq(p, task_cpu(p), SD_BALANCE_EXEC, 0, 1);
2919         if (dest_cpu == smp_processor_id())
2920                 goto unlock;
2921
2922         if (likely(cpu_active(dest_cpu))) {
2923                 struct migration_arg arg = { p, dest_cpu };
2924
2925                 raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2926                 stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg);
2927                 return;
2928         }
2929 unlock:
2930         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
2931 }
2932
2933 #endif
2934
2935 DEFINE_PER_CPU(struct kernel_stat, kstat);
2936 DEFINE_PER_CPU(struct kernel_cpustat, kernel_cpustat);
2937
2938 EXPORT_PER_CPU_SYMBOL(kstat);
2939 EXPORT_PER_CPU_SYMBOL(kernel_cpustat);
2940
2941 /*
2942  * Return accounted runtime for the task.
2943  * In case the task is currently running, return the runtime plus current's
2944  * pending runtime that have not been accounted yet.
2945  */
2946 unsigned long long task_sched_runtime(struct task_struct *p)
2947 {
2948         unsigned long flags;
2949         struct rq *rq;
2950         u64 ns;
2951
2952 #if defined(CONFIG_64BIT) && defined(CONFIG_SMP)
2953         /*
2954          * 64-bit doesn't need locks to atomically read a 64bit value.
2955          * So we have a optimization chance when the task's delta_exec is 0.
2956          * Reading ->on_cpu is racy, but this is ok.
2957          *
2958          * If we race with it leaving cpu, we'll take a lock. So we're correct.
2959          * If we race with it entering cpu, unaccounted time is 0. This is
2960          * indistinguishable from the read occurring a few cycles earlier.
2961          * If we see ->on_cpu without ->on_rq, the task is leaving, and has
2962          * been accounted, so we're correct here as well.
2963          */
2964         if (!p->on_cpu || !task_on_rq_queued(p))
2965                 return p->se.sum_exec_runtime;
2966 #endif
2967
2968         rq = task_rq_lock(p, &flags);
2969         /*
2970          * Must be ->curr _and_ ->on_rq.  If dequeued, we would
2971          * project cycles that may never be accounted to this
2972          * thread, breaking clock_gettime().
2973          */
2974         if (task_current(rq, p) && task_on_rq_queued(p)) {
2975                 update_rq_clock(rq);
2976                 p->sched_class->update_curr(rq);
2977         }
2978         ns = p->se.sum_exec_runtime;
2979         task_rq_unlock(rq, p, &flags);
2980
2981         return ns;
2982 }
2983
2984 /*
2985  * This function gets called by the timer code, with HZ frequency.
2986  * We call it with interrupts disabled.
2987  */
2988 void scheduler_tick(void)
2989 {
2990         int cpu = smp_processor_id();
2991         struct rq *rq = cpu_rq(cpu);
2992         struct task_struct *curr = rq->curr;
2993
2994         sched_clock_tick();
2995
2996         raw_spin_lock(&rq->lock);
2997         walt_set_window_start(rq);
2998         walt_update_task_ravg(rq->curr, rq, TASK_UPDATE,
2999                         walt_ktime_clock(), 0);
3000         update_rq_clock(rq);
3001         curr->sched_class->task_tick(rq, curr, 0);
3002         update_cpu_load_active(rq);
3003         calc_global_load_tick(rq);
3004         raw_spin_unlock(&rq->lock);
3005
3006         perf_event_task_tick();
3007
3008 #ifdef CONFIG_SMP
3009         rq->idle_balance = idle_cpu(cpu);
3010         trigger_load_balance(rq);
3011 #endif
3012         rq_last_tick_reset(rq);
3013
3014         if (curr->sched_class == &fair_sched_class)
3015                 check_for_migration(rq, curr);
3016 }
3017
3018 #ifdef CONFIG_NO_HZ_FULL
3019 /**
3020  * scheduler_tick_max_deferment
3021  *
3022  * Keep at least one tick per second when a single
3023  * active task is running because the scheduler doesn't
3024  * yet completely support full dynticks environment.
3025  *
3026  * This makes sure that uptime, CFS vruntime, load
3027  * balancing, etc... continue to move forward, even
3028  * with a very low granularity.
3029  *
3030  * Return: Maximum deferment in nanoseconds.
3031  */
3032 u64 scheduler_tick_max_deferment(void)
3033 {
3034         struct rq *rq = this_rq();
3035         unsigned long next, now = READ_ONCE(jiffies);
3036
3037         next = rq->last_sched_tick + HZ;
3038
3039         if (time_before_eq(next, now))
3040                 return 0;
3041
3042         return jiffies_to_nsecs(next - now);
3043 }
3044 #endif
3045
3046 notrace unsigned long get_parent_ip(unsigned long addr)
3047 {
3048         if (in_lock_functions(addr)) {
3049                 addr = CALLER_ADDR2;
3050                 if (in_lock_functions(addr))
3051                         addr = CALLER_ADDR3;
3052         }
3053         return addr;
3054 }
3055
3056 #if defined(CONFIG_PREEMPT) && (defined(CONFIG_DEBUG_PREEMPT) || \
3057                                 defined(CONFIG_PREEMPT_TRACER))
3058
3059 void preempt_count_add(int val)
3060 {
3061 #ifdef CONFIG_DEBUG_PREEMPT
3062         /*
3063          * Underflow?
3064          */
3065         if (DEBUG_LOCKS_WARN_ON((preempt_count() < 0)))
3066                 return;
3067 #endif
3068         __preempt_count_add(val);
3069 #ifdef CONFIG_DEBUG_PREEMPT
3070         /*
3071          * Spinlock count overflowing soon?
3072          */
3073         DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
3074                                 PREEMPT_MASK - 10);
3075 #endif
3076         if (preempt_count() == val) {
3077                 unsigned long ip = get_parent_ip(CALLER_ADDR1);
3078 #ifdef CONFIG_DEBUG_PREEMPT
3079                 current->preempt_disable_ip = ip;
3080 #endif
3081                 trace_preempt_off(CALLER_ADDR0, ip);
3082         }
3083 }
3084 EXPORT_SYMBOL(preempt_count_add);
3085 NOKPROBE_SYMBOL(preempt_count_add);
3086
3087 void preempt_count_sub(int val)
3088 {
3089 #ifdef CONFIG_DEBUG_PREEMPT
3090         /*
3091          * Underflow?
3092          */
3093         if (DEBUG_LOCKS_WARN_ON(val > preempt_count()))
3094                 return;
3095         /*
3096          * Is the spinlock portion underflowing?
3097          */
3098         if (DEBUG_LOCKS_WARN_ON((val < PREEMPT_MASK) &&
3099                         !(preempt_count() & PREEMPT_MASK)))
3100                 return;
3101 #endif
3102
3103         if (preempt_count() == val)
3104                 trace_preempt_on(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
3105         __preempt_count_sub(val);
3106 }
3107 EXPORT_SYMBOL(preempt_count_sub);
3108 NOKPROBE_SYMBOL(preempt_count_sub);
3109
3110 #endif
3111
3112 /*
3113  * Print scheduling while atomic bug:
3114  */
3115 static noinline void __schedule_bug(struct task_struct *prev)
3116 {
3117         if (oops_in_progress)
3118                 return;
3119
3120         printk(KERN_ERR "BUG: scheduling while atomic: %s/%d/0x%08x\n",
3121                 prev->comm, prev->pid, preempt_count());
3122
3123         debug_show_held_locks(prev);
3124         print_modules();
3125         if (irqs_disabled())
3126                 print_irqtrace_events(prev);
3127 #ifdef CONFIG_DEBUG_PREEMPT
3128         if (in_atomic_preempt_off()) {
3129                 pr_err("Preemption disabled at:");
3130                 print_ip_sym(current->preempt_disable_ip);
3131                 pr_cont("\n");
3132         }
3133 #endif
3134         dump_stack();
3135         add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
3136 }
3137
3138 /*
3139  * Various schedule()-time debugging checks and statistics:
3140  */
3141 static inline void schedule_debug(struct task_struct *prev)
3142 {
3143 #ifdef CONFIG_SCHED_STACK_END_CHECK
3144         if (task_stack_end_corrupted(prev))
3145                 panic("corrupted stack end detected inside scheduler\n");
3146 #endif
3147
3148         if (unlikely(in_atomic_preempt_off())) {
3149                 __schedule_bug(prev);
3150                 preempt_count_set(PREEMPT_DISABLED);
3151         }
3152         rcu_sleep_check();
3153
3154         profile_hit(SCHED_PROFILING, __builtin_return_address(0));
3155
3156         schedstat_inc(this_rq(), sched_count);
3157 }
3158
3159 /*
3160  * Pick up the highest-prio task:
3161  */
3162 static inline struct task_struct *
3163 pick_next_task(struct rq *rq, struct task_struct *prev)
3164 {
3165         const struct sched_class *class = &fair_sched_class;
3166         struct task_struct *p;
3167
3168         /*
3169          * Optimization: we know that if all tasks are in
3170          * the fair class we can call that function directly:
3171          */
3172         if (likely(prev->sched_class == class &&
3173                    rq->nr_running == rq->cfs.h_nr_running)) {
3174                 p = fair_sched_class.pick_next_task(rq, prev);
3175                 if (unlikely(p == RETRY_TASK))
3176                         goto again;
3177
3178                 /* assumes fair_sched_class->next == idle_sched_class */
3179                 if (unlikely(!p))
3180                         p = idle_sched_class.pick_next_task(rq, prev);
3181
3182                 return p;
3183         }
3184
3185 again:
3186         for_each_class(class) {
3187                 p = class->pick_next_task(rq, prev);
3188                 if (p) {
3189                         if (unlikely(p == RETRY_TASK))
3190                                 goto again;
3191                         return p;
3192                 }
3193         }
3194
3195         BUG(); /* the idle class will always have a runnable task */
3196 }
3197
3198 /*
3199  * __schedule() is the main scheduler function.
3200  *
3201  * The main means of driving the scheduler and thus entering this function are:
3202  *
3203  *   1. Explicit blocking: mutex, semaphore, waitqueue, etc.
3204  *
3205  *   2. TIF_NEED_RESCHED flag is checked on interrupt and userspace return
3206  *      paths. For example, see arch/x86/entry_64.S.
3207  *
3208  *      To drive preemption between tasks, the scheduler sets the flag in timer
3209  *      interrupt handler scheduler_tick().
3210  *
3211  *   3. Wakeups don't really cause entry into schedule(). They add a
3212  *      task to the run-queue and that's it.
3213  *
3214  *      Now, if the new task added to the run-queue preempts the current
3215  *      task, then the wakeup sets TIF_NEED_RESCHED and schedule() gets
3216  *      called on the nearest possible occasion:
3217  *
3218  *       - If the kernel is preemptible (CONFIG_PREEMPT=y):
3219  *
3220  *         - in syscall or exception context, at the next outmost
3221  *           preempt_enable(). (this might be as soon as the wake_up()'s
3222  *           spin_unlock()!)
3223  *
3224  *         - in IRQ context, return from interrupt-handler to
3225  *           preemptible context
3226  *
3227  *       - If the kernel is not preemptible (CONFIG_PREEMPT is not set)
3228  *         then at the next:
3229  *
3230  *          - cond_resched() call
3231  *          - explicit schedule() call
3232  *          - return from syscall or exception to user-space
3233  *          - return from interrupt-handler to user-space
3234  *
3235  * WARNING: must be called with preemption disabled!
3236  */
3237 static void __sched notrace __schedule(bool preempt)
3238 {
3239         struct task_struct *prev, *next;
3240         unsigned long *switch_count;
3241         struct rq *rq;
3242         int cpu;
3243         u64 wallclock;
3244
3245         cpu = smp_processor_id();
3246         rq = cpu_rq(cpu);
3247         rcu_note_context_switch();
3248         prev = rq->curr;
3249
3250         /*
3251          * do_exit() calls schedule() with preemption disabled as an exception;
3252          * however we must fix that up, otherwise the next task will see an
3253          * inconsistent (higher) preempt count.
3254          *
3255          * It also avoids the below schedule_debug() test from complaining
3256          * about this.
3257          */
3258         if (unlikely(prev->state == TASK_DEAD))
3259                 preempt_enable_no_resched_notrace();
3260
3261         schedule_debug(prev);
3262
3263         if (sched_feat(HRTICK))
3264                 hrtick_clear(rq);
3265
3266         /*
3267          * Make sure that signal_pending_state()->signal_pending() below
3268          * can't be reordered with __set_current_state(TASK_INTERRUPTIBLE)
3269          * done by the caller to avoid the race with signal_wake_up().
3270          */
3271         smp_mb__before_spinlock();
3272         raw_spin_lock_irq(&rq->lock);
3273         lockdep_pin_lock(&rq->lock);
3274
3275         rq->clock_skip_update <<= 1; /* promote REQ to ACT */
3276
3277         switch_count = &prev->nivcsw;
3278         if (!preempt && prev->state) {
3279                 if (unlikely(signal_pending_state(prev->state, prev))) {
3280                         prev->state = TASK_RUNNING;
3281                 } else {
3282                         deactivate_task(rq, prev, DEQUEUE_SLEEP);
3283                         prev->on_rq = 0;
3284
3285                         /*
3286                          * If a worker went to sleep, notify and ask workqueue
3287                          * whether it wants to wake up a task to maintain
3288                          * concurrency.
3289                          */
3290                         if (prev->flags & PF_WQ_WORKER) {
3291                                 struct task_struct *to_wakeup;
3292
3293                                 to_wakeup = wq_worker_sleeping(prev, cpu);
3294                                 if (to_wakeup)
3295                                         try_to_wake_up_local(to_wakeup);
3296                         }
3297                 }
3298                 switch_count = &prev->nvcsw;
3299         }
3300
3301         if (task_on_rq_queued(prev))
3302                 update_rq_clock(rq);
3303
3304         next = pick_next_task(rq, prev);
3305         wallclock = walt_ktime_clock();
3306         walt_update_task_ravg(prev, rq, PUT_PREV_TASK, wallclock, 0);
3307         walt_update_task_ravg(next, rq, PICK_NEXT_TASK, wallclock, 0);
3308         clear_tsk_need_resched(prev);
3309         clear_preempt_need_resched();
3310         rq->clock_skip_update = 0;
3311
3312         if (likely(prev != next)) {
3313 #ifdef CONFIG_SCHED_WALT
3314                 if (!prev->on_rq)
3315                         prev->last_sleep_ts = wallclock;
3316 #endif
3317                 rq->nr_switches++;
3318                 rq->curr = next;
3319                 ++*switch_count;
3320
3321                 trace_sched_switch(preempt, prev, next);
3322                 rq = context_switch(rq, prev, next); /* unlocks the rq */
3323                 cpu = cpu_of(rq);
3324         } else {
3325                 lockdep_unpin_lock(&rq->lock);
3326                 raw_spin_unlock_irq(&rq->lock);
3327         }
3328
3329         balance_callback(rq);
3330 }
3331
3332 static inline void sched_submit_work(struct task_struct *tsk)
3333 {
3334         if (!tsk->state || tsk_is_pi_blocked(tsk))
3335                 return;
3336         /*
3337          * If we are going to sleep and we have plugged IO queued,
3338          * make sure to submit it to avoid deadlocks.
3339          */
3340         if (blk_needs_flush_plug(tsk))
3341                 blk_schedule_flush_plug(tsk);
3342 }
3343
3344 asmlinkage __visible void __sched schedule(void)
3345 {
3346         struct task_struct *tsk = current;
3347
3348         sched_submit_work(tsk);
3349         do {
3350                 preempt_disable();
3351                 __schedule(false);
3352                 sched_preempt_enable_no_resched();
3353         } while (need_resched());
3354 }
3355 EXPORT_SYMBOL(schedule);
3356
3357 #ifdef CONFIG_CONTEXT_TRACKING
3358 asmlinkage __visible void __sched schedule_user(void)
3359 {
3360         /*
3361          * If we come here after a random call to set_need_resched(),
3362          * or we have been woken up remotely but the IPI has not yet arrived,
3363          * we haven't yet exited the RCU idle mode. Do it here manually until
3364          * we find a better solution.
3365          *
3366          * NB: There are buggy callers of this function.  Ideally we
3367          * should warn if prev_state != CONTEXT_USER, but that will trigger
3368          * too frequently to make sense yet.
3369          */
3370         enum ctx_state prev_state = exception_enter();
3371         schedule();
3372         exception_exit(prev_state);
3373 }
3374 #endif
3375
3376 /**
3377  * schedule_preempt_disabled - called with preemption disabled
3378  *
3379  * Returns with preemption disabled. Note: preempt_count must be 1
3380  */
3381 void __sched schedule_preempt_disabled(void)
3382 {
3383         sched_preempt_enable_no_resched();
3384         schedule();
3385         preempt_disable();
3386 }
3387
3388 static void __sched notrace preempt_schedule_common(void)
3389 {
3390         do {
3391                 preempt_disable_notrace();
3392                 __schedule(true);
3393                 preempt_enable_no_resched_notrace();
3394
3395                 /*
3396                  * Check again in case we missed a preemption opportunity
3397                  * between schedule and now.
3398                  */
3399         } while (need_resched());
3400 }
3401
3402 #ifdef CONFIG_PREEMPT
3403 /*
3404  * this is the entry point to schedule() from in-kernel preemption
3405  * off of preempt_enable. Kernel preemptions off return from interrupt
3406  * occur there and call schedule directly.
3407  */
3408 asmlinkage __visible void __sched notrace preempt_schedule(void)
3409 {
3410         /*
3411          * If there is a non-zero preempt_count or interrupts are disabled,
3412          * we do not want to preempt the current task. Just return..
3413          */
3414         if (likely(!preemptible()))
3415                 return;
3416
3417         preempt_schedule_common();
3418 }
3419 NOKPROBE_SYMBOL(preempt_schedule);
3420 EXPORT_SYMBOL(preempt_schedule);
3421
3422 /**
3423  * preempt_schedule_notrace - preempt_schedule called by tracing
3424  *
3425  * The tracing infrastructure uses preempt_enable_notrace to prevent
3426  * recursion and tracing preempt enabling caused by the tracing
3427  * infrastructure itself. But as tracing can happen in areas coming
3428  * from userspace or just about to enter userspace, a preempt enable
3429  * can occur before user_exit() is called. This will cause the scheduler
3430  * to be called when the system is still in usermode.
3431  *
3432  * To prevent this, the preempt_enable_notrace will use this function
3433  * instead of preempt_schedule() to exit user context if needed before
3434  * calling the scheduler.
3435  */
3436 asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
3437 {
3438         enum ctx_state prev_ctx;
3439
3440         if (likely(!preemptible()))
3441                 return;
3442
3443         do {
3444                 preempt_disable_notrace();
3445                 /*
3446                  * Needs preempt disabled in case user_exit() is traced
3447                  * and the tracer calls preempt_enable_notrace() causing
3448                  * an infinite recursion.
3449                  */
3450                 prev_ctx = exception_enter();
3451                 __schedule(true);
3452                 exception_exit(prev_ctx);
3453
3454                 preempt_enable_no_resched_notrace();
3455         } while (need_resched());
3456 }
3457 EXPORT_SYMBOL_GPL(preempt_schedule_notrace);
3458
3459 #endif /* CONFIG_PREEMPT */
3460
3461 /*
3462  * this is the entry point to schedule() from kernel preemption
3463  * off of irq context.
3464  * Note, that this is called and return with irqs disabled. This will
3465  * protect us against recursive calling from irq.
3466  */
3467 asmlinkage __visible void __sched preempt_schedule_irq(void)
3468 {
3469         enum ctx_state prev_state;
3470
3471         /* Catch callers which need to be fixed */
3472         BUG_ON(preempt_count() || !irqs_disabled());
3473
3474         prev_state = exception_enter();
3475
3476         do {
3477                 preempt_disable();
3478                 local_irq_enable();
3479                 __schedule(true);
3480                 local_irq_disable();
3481                 sched_preempt_enable_no_resched();
3482         } while (need_resched());
3483
3484         exception_exit(prev_state);
3485 }
3486
3487 int default_wake_function(wait_queue_t *curr, unsigned mode, int wake_flags,
3488                           void *key)
3489 {
3490         return try_to_wake_up(curr->private, mode, wake_flags, 1);
3491 }
3492 EXPORT_SYMBOL(default_wake_function);
3493
3494 #ifdef CONFIG_RT_MUTEXES
3495
3496 /*
3497  * rt_mutex_setprio - set the current priority of a task
3498  * @p: task
3499  * @prio: prio value (kernel-internal form)
3500  *
3501  * This function changes the 'effective' priority of a task. It does
3502  * not touch ->normal_prio like __setscheduler().
3503  *
3504  * Used by the rt_mutex code to implement priority inheritance
3505  * logic. Call site only calls if the priority of the task changed.
3506  */
3507 void rt_mutex_setprio(struct task_struct *p, int prio)
3508 {
3509         int oldprio, queued, running, enqueue_flag = ENQUEUE_RESTORE;
3510         struct rq *rq;
3511         const struct sched_class *prev_class;
3512
3513         BUG_ON(prio > MAX_PRIO);
3514
3515         rq = __task_rq_lock(p);
3516         update_rq_clock(rq);
3517
3518         /*
3519          * Idle task boosting is a nono in general. There is one
3520          * exception, when PREEMPT_RT and NOHZ is active:
3521          *
3522          * The idle task calls get_next_timer_interrupt() and holds
3523          * the timer wheel base->lock on the CPU and another CPU wants
3524          * to access the timer (probably to cancel it). We can safely
3525          * ignore the boosting request, as the idle CPU runs this code
3526          * with interrupts disabled and will complete the lock
3527          * protected section without being interrupted. So there is no
3528          * real need to boost.
3529          */
3530         if (unlikely(p == rq->idle)) {
3531                 WARN_ON(p != rq->curr);
3532                 WARN_ON(p->pi_blocked_on);
3533                 goto out_unlock;
3534         }
3535
3536         trace_sched_pi_setprio(p, prio);
3537         oldprio = p->prio;
3538         prev_class = p->sched_class;
3539         queued = task_on_rq_queued(p);
3540         running = task_current(rq, p);
3541         if (queued)
3542                 dequeue_task(rq, p, DEQUEUE_SAVE);
3543         if (running)
3544                 put_prev_task(rq, p);
3545
3546         /*
3547          * Boosting condition are:
3548          * 1. -rt task is running and holds mutex A
3549          *      --> -dl task blocks on mutex A
3550          *
3551          * 2. -dl task is running and holds mutex A
3552          *      --> -dl task blocks on mutex A and could preempt the
3553          *          running task
3554          */
3555         if (dl_prio(prio)) {
3556                 struct task_struct *pi_task = rt_mutex_get_top_task(p);
3557                 if (!dl_prio(p->normal_prio) ||
3558                     (pi_task && dl_entity_preempt(&pi_task->dl, &p->dl))) {
3559                         p->dl.dl_boosted = 1;
3560                         enqueue_flag |= ENQUEUE_REPLENISH;
3561                 } else
3562                         p->dl.dl_boosted = 0;
3563                 p->sched_class = &dl_sched_class;
3564         } else if (rt_prio(prio)) {
3565                 if (dl_prio(oldprio))
3566                         p->dl.dl_boosted = 0;
3567                 if (oldprio < prio)
3568                         enqueue_flag |= ENQUEUE_HEAD;
3569                 p->sched_class = &rt_sched_class;
3570         } else {
3571                 if (dl_prio(oldprio))
3572                         p->dl.dl_boosted = 0;
3573                 if (rt_prio(oldprio))
3574                         p->rt.timeout = 0;
3575                 p->sched_class = &fair_sched_class;
3576         }
3577
3578         p->prio = prio;
3579
3580         if (running)
3581                 p->sched_class->set_curr_task(rq);
3582         if (queued)
3583                 enqueue_task(rq, p, enqueue_flag);
3584
3585         check_class_changed(rq, p, prev_class, oldprio);
3586 out_unlock:
3587         preempt_disable(); /* avoid rq from going away on us */
3588         __task_rq_unlock(rq);
3589
3590         balance_callback(rq);
3591         preempt_enable();
3592 }
3593 #endif
3594
3595 void set_user_nice(struct task_struct *p, long nice)
3596 {
3597         int old_prio, delta, queued;
3598         unsigned long flags;
3599         struct rq *rq;
3600
3601         if (task_nice(p) == nice || nice < MIN_NICE || nice > MAX_NICE)
3602                 return;
3603         /*
3604          * We have to be careful, if called from sys_setpriority(),
3605          * the task might be in the middle of scheduling on another CPU.
3606          */
3607         rq = task_rq_lock(p, &flags);
3608         update_rq_clock(rq);
3609
3610         /*
3611          * The RT priorities are set via sched_setscheduler(), but we still
3612          * allow the 'normal' nice value to be set - but as expected
3613          * it wont have any effect on scheduling until the task is
3614          * SCHED_DEADLINE, SCHED_FIFO or SCHED_RR:
3615          */
3616         if (task_has_dl_policy(p) || task_has_rt_policy(p)) {
3617                 p->static_prio = NICE_TO_PRIO(nice);
3618                 goto out_unlock;
3619         }
3620         queued = task_on_rq_queued(p);
3621         if (queued)
3622                 dequeue_task(rq, p, DEQUEUE_SAVE);
3623
3624         p->static_prio = NICE_TO_PRIO(nice);
3625         set_load_weight(p);
3626         old_prio = p->prio;
3627         p->prio = effective_prio(p);
3628         delta = p->prio - old_prio;
3629
3630         if (queued) {
3631                 enqueue_task(rq, p, ENQUEUE_RESTORE);
3632                 /*
3633                  * If the task increased its priority or is running and
3634                  * lowered its priority, then reschedule its CPU:
3635                  */
3636                 if (delta < 0 || (delta > 0 && task_running(rq, p)))
3637                         resched_curr(rq);
3638         }
3639 out_unlock:
3640         task_rq_unlock(rq, p, &flags);
3641 }
3642 EXPORT_SYMBOL(set_user_nice);
3643
3644 /*
3645  * can_nice - check if a task can reduce its nice value
3646  * @p: task
3647  * @nice: nice value
3648  */
3649 int can_nice(const struct task_struct *p, const int nice)
3650 {
3651         /* convert nice value [19,-20] to rlimit style value [1,40] */
3652         int nice_rlim = nice_to_rlimit(nice);
3653
3654         return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
3655                 capable(CAP_SYS_NICE));
3656 }
3657
3658 #ifdef __ARCH_WANT_SYS_NICE
3659
3660 /*
3661  * sys_nice - change the priority of the current process.
3662  * @increment: priority increment
3663  *
3664  * sys_setpriority is a more generic, but much slower function that
3665  * does similar things.
3666  */
3667 SYSCALL_DEFINE1(nice, int, increment)
3668 {
3669         long nice, retval;
3670
3671         /*
3672          * Setpriority might change our priority at the same moment.
3673          * We don't have to worry. Conceptually one call occurs first
3674          * and we have a single winner.
3675          */
3676         increment = clamp(increment, -NICE_WIDTH, NICE_WIDTH);
3677         nice = task_nice(current) + increment;
3678
3679         nice = clamp_val(nice, MIN_NICE, MAX_NICE);
3680         if (increment < 0 && !can_nice(current, nice))
3681                 return -EPERM;
3682
3683         retval = security_task_setnice(current, nice);
3684         if (retval)
3685                 return retval;
3686
3687         set_user_nice(current, nice);
3688         return 0;
3689 }
3690
3691 #endif
3692
3693 /**
3694  * task_prio - return the priority value of a given task.
3695  * @p: the task in question.
3696  *
3697  * Return: The priority value as seen by users in /proc.
3698  * RT tasks are offset by -200. Normal tasks are centered
3699  * around 0, value goes from -16 to +15.
3700  */
3701 int task_prio(const struct task_struct *p)
3702 {
3703         return p->prio - MAX_RT_PRIO;
3704 }
3705
3706 /**
3707  * idle_cpu - is a given cpu idle currently?
3708  * @cpu: the processor in question.
3709  *
3710  * Return: 1 if the CPU is currently idle. 0 otherwise.
3711  */
3712 int idle_cpu(int cpu)
3713 {
3714         struct rq *rq = cpu_rq(cpu);
3715
3716         if (rq->curr != rq->idle)
3717                 return 0;
3718
3719         if (rq->nr_running)
3720                 return 0;
3721
3722 #ifdef CONFIG_SMP
3723         if (!llist_empty(&rq->wake_list))
3724                 return 0;
3725 #endif
3726
3727         return 1;
3728 }
3729
3730 /**
3731  * idle_task - return the idle task for a given cpu.
3732  * @cpu: the processor in question.
3733  *
3734  * Return: The idle task for the cpu @cpu.
3735  */
3736 struct task_struct *idle_task(int cpu)
3737 {
3738         return cpu_rq(cpu)->idle;
3739 }
3740
3741 /**
3742  * find_process_by_pid - find a process with a matching PID value.
3743  * @pid: the pid in question.
3744  *
3745  * The task of @pid, if found. %NULL otherwise.
3746  */
3747 static struct task_struct *find_process_by_pid(pid_t pid)
3748 {
3749         return pid ? find_task_by_vpid(pid) : current;
3750 }
3751
3752 /*
3753  * This function initializes the sched_dl_entity of a newly becoming
3754  * SCHED_DEADLINE task.
3755  *
3756  * Only the static values are considered here, the actual runtime and the
3757  * absolute deadline will be properly calculated when the task is enqueued
3758  * for the first time with its new policy.
3759  */
3760 static void
3761 __setparam_dl(struct task_struct *p, const struct sched_attr *attr)
3762 {
3763         struct sched_dl_entity *dl_se = &p->dl;
3764
3765         dl_se->dl_runtime = attr->sched_runtime;
3766         dl_se->dl_deadline = attr->sched_deadline;
3767         dl_se->dl_period = attr->sched_period ?: dl_se->dl_deadline;
3768         dl_se->flags = attr->sched_flags;
3769         dl_se->dl_bw = to_ratio(dl_se->dl_period, dl_se->dl_runtime);
3770
3771         /*
3772          * Changing the parameters of a task is 'tricky' and we're not doing
3773          * the correct thing -- also see task_dead_dl() and switched_from_dl().
3774          *
3775          * What we SHOULD do is delay the bandwidth release until the 0-lag
3776          * point. This would include retaining the task_struct until that time
3777          * and change dl_overflow() to not immediately decrement the current
3778          * amount.
3779          *
3780          * Instead we retain the current runtime/deadline and let the new
3781          * parameters take effect after the current reservation period lapses.
3782          * This is safe (albeit pessimistic) because the 0-lag point is always
3783          * before the current scheduling deadline.
3784          *
3785          * We can still have temporary overloads because we do not delay the
3786          * change in bandwidth until that time; so admission control is
3787          * not on the safe side. It does however guarantee tasks will never
3788          * consume more than promised.
3789          */
3790 }
3791
3792 /*
3793  * sched_setparam() passes in -1 for its policy, to let the functions
3794  * it calls know not to change it.
3795  */
3796 #define SETPARAM_POLICY -1
3797
3798 static void __setscheduler_params(struct task_struct *p,
3799                 const struct sched_attr *attr)
3800 {
3801         int policy = attr->sched_policy;
3802
3803         if (policy == SETPARAM_POLICY)
3804                 policy = p->policy;
3805
3806         p->policy = policy;
3807
3808         if (dl_policy(policy))
3809                 __setparam_dl(p, attr);
3810         else if (fair_policy(policy))
3811                 p->static_prio = NICE_TO_PRIO(attr->sched_nice);
3812
3813         /*
3814          * __sched_setscheduler() ensures attr->sched_priority == 0 when
3815          * !rt_policy. Always setting this ensures that things like
3816          * getparam()/getattr() don't report silly values for !rt tasks.
3817          */
3818         p->rt_priority = attr->sched_priority;
3819         p->normal_prio = normal_prio(p);
3820         set_load_weight(p);
3821 }
3822
3823 /* Actually do priority change: must hold pi & rq lock. */
3824 static void __setscheduler(struct rq *rq, struct task_struct *p,
3825                            const struct sched_attr *attr, bool keep_boost)
3826 {
3827         __setscheduler_params(p, attr);
3828
3829         /*
3830          * Keep a potential priority boosting if called from
3831          * sched_setscheduler().
3832          */
3833         if (keep_boost)
3834                 p->prio = rt_mutex_get_effective_prio(p, normal_prio(p));
3835         else
3836                 p->prio = normal_prio(p);
3837
3838         if (dl_prio(p->prio))
3839                 p->sched_class = &dl_sched_class;
3840         else if (rt_prio(p->prio))
3841                 p->sched_class = &rt_sched_class;
3842         else
3843                 p->sched_class = &fair_sched_class;
3844 }
3845
3846 static void
3847 __getparam_dl(struct task_struct *p, struct sched_attr *attr)
3848 {
3849         struct sched_dl_entity *dl_se = &p->dl;
3850
3851         attr->sched_priority = p->rt_priority;
3852         attr->sched_runtime = dl_se->dl_runtime;
3853         attr->sched_deadline = dl_se->dl_deadline;
3854         attr->sched_period = dl_se->dl_period;
3855         attr->sched_flags = dl_se->flags;
3856 }
3857
3858 /*
3859  * This function validates the new parameters of a -deadline task.
3860  * We ask for the deadline not being zero, and greater or equal
3861  * than the runtime, as well as the period of being zero or
3862  * greater than deadline. Furthermore, we have to be sure that
3863  * user parameters are above the internal resolution of 1us (we
3864  * check sched_runtime only since it is always the smaller one) and
3865  * below 2^63 ns (we have to check both sched_deadline and
3866  * sched_period, as the latter can be zero).
3867  */
3868 static bool
3869 __checkparam_dl(const struct sched_attr *attr)
3870 {
3871         /* deadline != 0 */
3872         if (attr->sched_deadline == 0)
3873                 return false;
3874
3875         /*
3876          * Since we truncate DL_SCALE bits, make sure we're at least
3877          * that big.
3878          */
3879         if (attr->sched_runtime < (1ULL << DL_SCALE))
3880                 return false;
3881
3882         /*
3883          * Since we use the MSB for wrap-around and sign issues, make
3884          * sure it's not set (mind that period can be equal to zero).
3885          */
3886         if (attr->sched_deadline & (1ULL << 63) ||
3887             attr->sched_period & (1ULL << 63))
3888                 return false;
3889
3890         /* runtime <= deadline <= period (if period != 0) */
3891         if ((attr->sched_period != 0 &&
3892              attr->sched_period < attr->sched_deadline) ||
3893             attr->sched_deadline < attr->sched_runtime)
3894                 return false;
3895
3896         return true;
3897 }
3898
3899 /*
3900  * check the target process has a UID that matches the current process's
3901  */
3902 static bool check_same_owner(struct task_struct *p)
3903 {
3904         const struct cred *cred = current_cred(), *pcred;
3905         bool match;
3906
3907         rcu_read_lock();
3908         pcred = __task_cred(p);
3909         match = (uid_eq(cred->euid, pcred->euid) ||
3910                  uid_eq(cred->euid, pcred->uid));
3911         rcu_read_unlock();
3912         return match;
3913 }
3914
3915 static bool dl_param_changed(struct task_struct *p,
3916                 const struct sched_attr *attr)
3917 {
3918         struct sched_dl_entity *dl_se = &p->dl;
3919
3920         if (dl_se->dl_runtime != attr->sched_runtime ||
3921                 dl_se->dl_deadline != attr->sched_deadline ||
3922                 dl_se->dl_period != attr->sched_period ||
3923                 dl_se->flags != attr->sched_flags)
3924                 return true;
3925
3926         return false;
3927 }
3928
3929 static int __sched_setscheduler(struct task_struct *p,
3930                                 const struct sched_attr *attr,
3931                                 bool user, bool pi)
3932 {
3933         int newprio = dl_policy(attr->sched_policy) ? MAX_DL_PRIO - 1 :
3934                       MAX_RT_PRIO - 1 - attr->sched_priority;
3935         int retval, oldprio, oldpolicy = -1, queued, running;
3936         int new_effective_prio, policy = attr->sched_policy;
3937         unsigned long flags;
3938         const struct sched_class *prev_class;
3939         struct rq *rq;
3940         int reset_on_fork;
3941
3942         /* may grab non-irq protected spin_locks */
3943         BUG_ON(in_interrupt());
3944 recheck:
3945         /* double check policy once rq lock held */
3946         if (policy < 0) {
3947                 reset_on_fork = p->sched_reset_on_fork;
3948                 policy = oldpolicy = p->policy;
3949         } else {
3950                 reset_on_fork = !!(attr->sched_flags & SCHED_FLAG_RESET_ON_FORK);
3951
3952                 if (!valid_policy(policy))
3953                         return -EINVAL;
3954         }
3955
3956         if (attr->sched_flags & ~(SCHED_FLAG_RESET_ON_FORK))
3957                 return -EINVAL;
3958
3959         /*
3960          * Valid priorities for SCHED_FIFO and SCHED_RR are
3961          * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL,
3962          * SCHED_BATCH and SCHED_IDLE is 0.
3963          */
3964         if ((p->mm && attr->sched_priority > MAX_USER_RT_PRIO-1) ||
3965             (!p->mm && attr->sched_priority > MAX_RT_PRIO-1))
3966                 return -EINVAL;
3967         if ((dl_policy(policy) && !__checkparam_dl(attr)) ||
3968             (rt_policy(policy) != (attr->sched_priority != 0)))
3969                 return -EINVAL;
3970
3971         /*
3972          * Allow unprivileged RT tasks to decrease priority:
3973          */
3974         if (user && !capable(CAP_SYS_NICE)) {
3975                 if (fair_policy(policy)) {
3976                         if (attr->sched_nice < task_nice(p) &&
3977                             !can_nice(p, attr->sched_nice))
3978                                 return -EPERM;
3979                 }
3980
3981                 if (rt_policy(policy)) {
3982                         unsigned long rlim_rtprio =
3983                                         task_rlimit(p, RLIMIT_RTPRIO);
3984
3985                         /* can't set/change the rt policy */
3986                         if (policy != p->policy && !rlim_rtprio)
3987                                 return -EPERM;
3988
3989                         /* can't increase priority */
3990                         if (attr->sched_priority > p->rt_priority &&
3991                             attr->sched_priority > rlim_rtprio)
3992                                 return -EPERM;
3993                 }
3994
3995                  /*
3996                   * Can't set/change SCHED_DEADLINE policy at all for now
3997                   * (safest behavior); in the future we would like to allow
3998                   * unprivileged DL tasks to increase their relative deadline
3999                   * or reduce their runtime (both ways reducing utilization)
4000                   */
4001                 if (dl_policy(policy))
4002                         return -EPERM;
4003
4004                 /*
4005                  * Treat SCHED_IDLE as nice 20. Only allow a switch to
4006                  * SCHED_NORMAL if the RLIMIT_NICE would normally permit it.
4007                  */
4008                 if (idle_policy(p->policy) && !idle_policy(policy)) {
4009                         if (!can_nice(p, task_nice(p)))
4010                                 return -EPERM;
4011                 }
4012
4013                 /* can't change other user's priorities */
4014                 if (!check_same_owner(p))
4015                         return -EPERM;
4016
4017                 /* Normal users shall not reset the sched_reset_on_fork flag */
4018                 if (p->sched_reset_on_fork && !reset_on_fork)
4019                         return -EPERM;
4020         }
4021
4022         if (user) {
4023                 retval = security_task_setscheduler(p);
4024                 if (retval)
4025                         return retval;
4026         }
4027
4028         /*
4029          * make sure no PI-waiters arrive (or leave) while we are
4030          * changing the priority of the task:
4031          *
4032          * To be able to change p->policy safely, the appropriate
4033          * runqueue lock must be held.
4034          */
4035         rq = task_rq_lock(p, &flags);
4036         update_rq_clock(rq);
4037
4038         /*
4039          * Changing the policy of the stop threads its a very bad idea
4040          */
4041         if (p == rq->stop) {
4042                 task_rq_unlock(rq, p, &flags);
4043                 return -EINVAL;
4044         }
4045
4046         /*
4047          * If not changing anything there's no need to proceed further,
4048          * but store a possible modification of reset_on_fork.
4049          */
4050         if (unlikely(policy == p->policy)) {
4051                 if (fair_policy(policy) && attr->sched_nice != task_nice(p))
4052                         goto change;
4053                 if (rt_policy(policy) && attr->sched_priority != p->rt_priority)
4054                         goto change;
4055                 if (dl_policy(policy) && dl_param_changed(p, attr))
4056                         goto change;
4057
4058                 p->sched_reset_on_fork = reset_on_fork;
4059                 task_rq_unlock(rq, p, &flags);
4060                 return 0;
4061         }
4062 change:
4063
4064         if (user) {
4065 #ifdef CONFIG_RT_GROUP_SCHED
4066                 /*
4067                  * Do not allow realtime tasks into groups that have no runtime
4068                  * assigned.
4069                  */
4070                 if (rt_bandwidth_enabled() && rt_policy(policy) &&
4071                                 task_group(p)->rt_bandwidth.rt_runtime == 0 &&
4072                                 !task_group_is_autogroup(task_group(p))) {
4073                         task_rq_unlock(rq, p, &flags);
4074                         return -EPERM;
4075                 }
4076 #endif
4077 #ifdef CONFIG_SMP
4078                 if (dl_bandwidth_enabled() && dl_policy(policy)) {
4079                         cpumask_t *span = rq->rd->span;
4080
4081                         /*
4082                          * Don't allow tasks with an affinity mask smaller than
4083                          * the entire root_domain to become SCHED_DEADLINE. We
4084                          * will also fail if there's no bandwidth available.
4085                          */
4086                         if (!cpumask_subset(span, &p->cpus_allowed) ||
4087                             rq->rd->dl_bw.bw == 0) {
4088                                 task_rq_unlock(rq, p, &flags);
4089                                 return -EPERM;
4090                         }
4091                 }
4092 #endif
4093         }
4094
4095         /* recheck policy now with rq lock held */
4096         if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
4097                 policy = oldpolicy = -1;
4098                 task_rq_unlock(rq, p, &flags);
4099                 goto recheck;
4100         }
4101
4102         /*
4103          * If setscheduling to SCHED_DEADLINE (or changing the parameters
4104          * of a SCHED_DEADLINE task) we need to check if enough bandwidth
4105          * is available.
4106          */
4107         if ((dl_policy(policy) || dl_task(p)) && dl_overflow(p, policy, attr)) {
4108                 task_rq_unlock(rq, p, &flags);
4109                 return -EBUSY;
4110         }
4111
4112         p->sched_reset_on_fork = reset_on_fork;
4113         oldprio = p->prio;
4114
4115         if (pi) {
4116                 /*
4117                  * Take priority boosted tasks into account. If the new
4118                  * effective priority is unchanged, we just store the new
4119                  * normal parameters and do not touch the scheduler class and
4120                  * the runqueue. This will be done when the task deboost
4121                  * itself.
4122                  */
4123                 new_effective_prio = rt_mutex_get_effective_prio(p, newprio);
4124                 if (new_effective_prio == oldprio) {
4125                         __setscheduler_params(p, attr);
4126                         task_rq_unlock(rq, p, &flags);
4127                         return 0;
4128                 }
4129         }
4130
4131         queued = task_on_rq_queued(p);
4132         running = task_current(rq, p);
4133         if (queued)
4134                 dequeue_task(rq, p, DEQUEUE_SAVE);
4135         if (running)
4136                 put_prev_task(rq, p);
4137
4138         prev_class = p->sched_class;
4139         __setscheduler(rq, p, attr, pi);
4140
4141         if (running)
4142                 p->sched_class->set_curr_task(rq);
4143         if (queued) {
4144                 int enqueue_flags = ENQUEUE_RESTORE;
4145                 /*
4146                  * We enqueue to tail when the priority of a task is
4147                  * increased (user space view).
4148                  */
4149                 if (oldprio <= p->prio)
4150                         enqueue_flags |= ENQUEUE_HEAD;
4151
4152                 enqueue_task(rq, p, enqueue_flags);
4153         }
4154
4155         check_class_changed(rq, p, prev_class, oldprio);
4156         preempt_disable(); /* avoid rq from going away on us */
4157         task_rq_unlock(rq, p, &flags);
4158
4159         if (pi)
4160                 rt_mutex_adjust_pi(p);
4161
4162         /*
4163          * Run balance callbacks after we've adjusted the PI chain.
4164          */
4165         balance_callback(rq);
4166         preempt_enable();
4167
4168         return 0;
4169 }
4170
4171 static int _sched_setscheduler(struct task_struct *p, int policy,
4172                                const struct sched_param *param, bool check)
4173 {
4174         struct sched_attr attr = {
4175                 .sched_policy   = policy,
4176                 .sched_priority = param->sched_priority,
4177                 .sched_nice     = PRIO_TO_NICE(p->static_prio),
4178         };
4179
4180         /* Fixup the legacy SCHED_RESET_ON_FORK hack. */
4181         if ((policy != SETPARAM_POLICY) && (policy & SCHED_RESET_ON_FORK)) {
4182                 attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
4183                 policy &= ~SCHED_RESET_ON_FORK;
4184                 attr.sched_policy = policy;
4185         }
4186
4187         return __sched_setscheduler(p, &attr, check, true);
4188 }
4189 /**
4190  * sched_setscheduler - change the scheduling policy and/or RT priority of a thread.
4191  * @p: the task in question.
4192  * @policy: new policy.
4193  * @param: structure containing the new RT priority.
4194  *
4195  * Return: 0 on success. An error code otherwise.
4196  *
4197  * NOTE that the task may be already dead.
4198  */
4199 int sched_setscheduler(struct task_struct *p, int policy,
4200                        const struct sched_param *param)
4201 {
4202         return _sched_setscheduler(p, policy, param, true);
4203 }
4204 EXPORT_SYMBOL_GPL(sched_setscheduler);
4205
4206 int sched_setattr(struct task_struct *p, const struct sched_attr *attr)
4207 {
4208         return __sched_setscheduler(p, attr, true, true);
4209 }
4210 EXPORT_SYMBOL_GPL(sched_setattr);
4211
4212 /**
4213  * sched_setscheduler_nocheck - change the scheduling policy and/or RT priority of a thread from kernelspace.
4214  * @p: the task in question.
4215  * @policy: new policy.
4216  * @param: structure containing the new RT priority.
4217  *
4218  * Just like sched_setscheduler, only don't bother checking if the
4219  * current context has permission.  For example, this is needed in
4220  * stop_machine(): we create temporary high priority worker threads,
4221  * but our caller might not have that capability.
4222  *
4223  * Return: 0 on success. An error code otherwise.
4224  */
4225 int sched_setscheduler_nocheck(struct task_struct *p, int policy,
4226                                const struct sched_param *param)
4227 {
4228         return _sched_setscheduler(p, policy, param, false);
4229 }
4230 EXPORT_SYMBOL_GPL(sched_setscheduler_nocheck);
4231
4232 static int
4233 do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
4234 {
4235         struct sched_param lparam;
4236         struct task_struct *p;
4237         int retval;
4238
4239         if (!param || pid < 0)
4240                 return -EINVAL;
4241         if (copy_from_user(&lparam, param, sizeof(struct sched_param)))
4242                 return -EFAULT;
4243
4244         rcu_read_lock();
4245         retval = -ESRCH;
4246         p = find_process_by_pid(pid);
4247         if (p != NULL)
4248                 retval = sched_setscheduler(p, policy, &lparam);
4249         rcu_read_unlock();
4250
4251         return retval;
4252 }
4253
4254 /*
4255  * Mimics kernel/events/core.c perf_copy_attr().
4256  */
4257 static int sched_copy_attr(struct sched_attr __user *uattr,
4258                            struct sched_attr *attr)
4259 {
4260         u32 size;
4261         int ret;
4262
4263         if (!access_ok(VERIFY_WRITE, uattr, SCHED_ATTR_SIZE_VER0))
4264                 return -EFAULT;
4265
4266         /*
4267          * zero the full structure, so that a short copy will be nice.
4268          */
4269         memset(attr, 0, sizeof(*attr));
4270
4271         ret = get_user(size, &uattr->size);
4272         if (ret)
4273                 return ret;
4274
4275         if (size > PAGE_SIZE)   /* silly large */
4276                 goto err_size;
4277
4278         if (!size)              /* abi compat */
4279                 size = SCHED_ATTR_SIZE_VER0;
4280
4281         if (size < SCHED_ATTR_SIZE_VER0)
4282                 goto err_size;
4283
4284         /*
4285          * If we're handed a bigger struct than we know of,
4286          * ensure all the unknown bits are 0 - i.e. new
4287          * user-space does not rely on any kernel feature
4288          * extensions we dont know about yet.
4289          */
4290         if (size > sizeof(*attr)) {
4291                 unsigned char __user *addr;
4292                 unsigned char __user *end;
4293                 unsigned char val;
4294
4295                 addr = (void __user *)uattr + sizeof(*attr);
4296                 end  = (void __user *)uattr + size;
4297
4298                 for (; addr < end; addr++) {
4299                         ret = get_user(val, addr);
4300                         if (ret)
4301                                 return ret;
4302                         if (val)
4303                                 goto err_size;
4304                 }
4305                 size = sizeof(*attr);
4306         }
4307
4308         ret = copy_from_user(attr, uattr, size);
4309         if (ret)
4310                 return -EFAULT;
4311
4312         /*
4313          * XXX: do we want to be lenient like existing syscalls; or do we want
4314          * to be strict and return an error on out-of-bounds values?
4315          */
4316         attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE);
4317
4318         return 0;
4319
4320 err_size:
4321         put_user(sizeof(*attr), &uattr->size);
4322         return -E2BIG;
4323 }
4324
4325 /**
4326  * sys_sched_setscheduler - set/change the scheduler policy and RT priority
4327  * @pid: the pid in question.
4328  * @policy: new policy.
4329  * @param: structure containing the new RT priority.
4330  *
4331  * Return: 0 on success. An error code otherwise.
4332  */
4333 SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy,
4334                 struct sched_param __user *, param)
4335 {
4336         /* negative values for policy are not valid */
4337         if (policy < 0)
4338                 return -EINVAL;
4339
4340         return do_sched_setscheduler(pid, policy, param);
4341 }
4342
4343 /**
4344  * sys_sched_setparam - set/change the RT priority of a thread
4345  * @pid: the pid in question.
4346  * @param: structure containing the new RT priority.
4347  *
4348  * Return: 0 on success. An error code otherwise.
4349  */
4350 SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param)
4351 {
4352         return do_sched_setscheduler(pid, SETPARAM_POLICY, param);
4353 }
4354
4355 /**
4356  * sys_sched_setattr - same as above, but with extended sched_attr
4357  * @pid: the pid in question.
4358  * @uattr: structure containing the extended parameters.
4359  * @flags: for future extension.
4360  */
4361 SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr,
4362                                unsigned int, flags)
4363 {
4364         struct sched_attr attr;
4365         struct task_struct *p;
4366         int retval;
4367
4368         if (!uattr || pid < 0 || flags)
4369                 return -EINVAL;
4370
4371         retval = sched_copy_attr(uattr, &attr);
4372         if (retval)
4373                 return retval;
4374
4375         if ((int)attr.sched_policy < 0)
4376                 return -EINVAL;
4377
4378         rcu_read_lock();
4379         retval = -ESRCH;
4380         p = find_process_by_pid(pid);
4381         if (p != NULL)
4382                 retval = sched_setattr(p, &attr);
4383         rcu_read_unlock();
4384
4385         return retval;
4386 }
4387
4388 /**
4389  * sys_sched_getscheduler - get the policy (scheduling class) of a thread
4390  * @pid: the pid in question.
4391  *
4392  * Return: On success, the policy of the thread. Otherwise, a negative error
4393  * code.
4394  */
4395 SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
4396 {
4397         struct task_struct *p;
4398         int retval;
4399
4400         if (pid < 0)
4401                 return -EINVAL;
4402
4403         retval = -ESRCH;
4404         rcu_read_lock();
4405         p = find_process_by_pid(pid);
4406         if (p) {
4407                 retval = security_task_getscheduler(p);
4408                 if (!retval)
4409                         retval = p->policy
4410                                 | (p->sched_reset_on_fork ? SCHED_RESET_ON_FORK : 0);
4411         }
4412         rcu_read_unlock();
4413         return retval;
4414 }
4415
4416 /**
4417  * sys_sched_getparam - get the RT priority of a thread
4418  * @pid: the pid in question.
4419  * @param: structure containing the RT priority.
4420  *
4421  * Return: On success, 0 and the RT priority is in @param. Otherwise, an error
4422  * code.
4423  */
4424 SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param)
4425 {
4426         struct sched_param lp = { .sched_priority = 0 };
4427         struct task_struct *p;
4428         int retval;
4429
4430         if (!param || pid < 0)
4431                 return -EINVAL;
4432
4433         rcu_read_lock();
4434         p = find_process_by_pid(pid);
4435         retval = -ESRCH;
4436         if (!p)
4437                 goto out_unlock;
4438
4439         retval = security_task_getscheduler(p);
4440         if (retval)
4441                 goto out_unlock;
4442
4443         if (task_has_rt_policy(p))
4444                 lp.sched_priority = p->rt_priority;
4445         rcu_read_unlock();
4446
4447         /*
4448          * This one might sleep, we cannot do it with a spinlock held ...
4449          */
4450         retval = copy_to_user(param, &lp, sizeof(*param)) ? -EFAULT : 0;
4451
4452         return retval;
4453
4454 out_unlock:
4455         rcu_read_unlock();
4456         return retval;
4457 }
4458
4459 static int sched_read_attr(struct sched_attr __user *uattr,
4460                            struct sched_attr *attr,
4461                            unsigned int usize)
4462 {
4463         int ret;
4464
4465         if (!access_ok(VERIFY_WRITE, uattr, usize))
4466                 return -EFAULT;
4467
4468         /*
4469          * If we're handed a smaller struct than we know of,
4470          * ensure all the unknown bits are 0 - i.e. old
4471          * user-space does not get uncomplete information.
4472          */
4473         if (usize < sizeof(*attr)) {
4474                 unsigned char *addr;
4475                 unsigned char *end;
4476
4477                 addr = (void *)attr + usize;
4478                 end  = (void *)attr + sizeof(*attr);
4479
4480                 for (; addr < end; addr++) {
4481                         if (*addr)
4482                                 return -EFBIG;
4483                 }
4484
4485                 attr->size = usize;
4486         }
4487
4488         ret = copy_to_user(uattr, attr, attr->size);
4489         if (ret)
4490                 return -EFAULT;
4491
4492         return 0;
4493 }
4494
4495 /**
4496  * sys_sched_getattr - similar to sched_getparam, but with sched_attr
4497  * @pid: the pid in question.
4498  * @uattr: structure containing the extended parameters.
4499  * @size: sizeof(attr) for fwd/bwd comp.
4500  * @flags: for future extension.
4501  */
4502 SYSCALL_DEFINE4(sched_getattr, pid_t, pid, struct sched_attr __user *, uattr,
4503                 unsigned int, size, unsigned int, flags)
4504 {
4505         struct sched_attr attr = {
4506                 .size = sizeof(struct sched_attr),
4507         };
4508         struct task_struct *p;
4509         int retval;
4510
4511         if (!uattr || pid < 0 || size > PAGE_SIZE ||
4512             size < SCHED_ATTR_SIZE_VER0 || flags)
4513                 return -EINVAL;
4514
4515         rcu_read_lock();
4516         p = find_process_by_pid(pid);
4517         retval = -ESRCH;
4518         if (!p)
4519                 goto out_unlock;
4520
4521         retval = security_task_getscheduler(p);
4522         if (retval)
4523                 goto out_unlock;
4524
4525         attr.sched_policy = p->policy;
4526         if (p->sched_reset_on_fork)
4527                 attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
4528         if (task_has_dl_policy(p))
4529                 __getparam_dl(p, &attr);
4530         else if (task_has_rt_policy(p))
4531                 attr.sched_priority = p->rt_priority;
4532         else
4533                 attr.sched_nice = task_nice(p);
4534
4535         rcu_read_unlock();
4536
4537         retval = sched_read_attr(uattr, &attr, size);
4538         return retval;
4539
4540 out_unlock:
4541         rcu_read_unlock();
4542         return retval;
4543 }
4544
4545 long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
4546 {
4547         cpumask_var_t cpus_allowed, new_mask;
4548         struct task_struct *p;
4549         int retval;
4550
4551         rcu_read_lock();
4552
4553         p = find_process_by_pid(pid);
4554         if (!p) {
4555                 rcu_read_unlock();
4556                 return -ESRCH;
4557         }
4558
4559         /* Prevent p going away */
4560         get_task_struct(p);
4561         rcu_read_unlock();
4562
4563         if (p->flags & PF_NO_SETAFFINITY) {
4564                 retval = -EINVAL;
4565                 goto out_put_task;
4566         }
4567         if (!alloc_cpumask_var(&cpus_allowed, GFP_KERNEL)) {
4568                 retval = -ENOMEM;
4569                 goto out_put_task;
4570         }
4571         if (!alloc_cpumask_var(&new_mask, GFP_KERNEL)) {
4572                 retval = -ENOMEM;
4573                 goto out_free_cpus_allowed;
4574         }
4575         retval = -EPERM;
4576         if (!check_same_owner(p)) {
4577                 rcu_read_lock();
4578                 if (!ns_capable(__task_cred(p)->user_ns, CAP_SYS_NICE)) {
4579                         rcu_read_unlock();
4580                         goto out_free_new_mask;
4581                 }
4582                 rcu_read_unlock();
4583         }
4584
4585         retval = security_task_setscheduler(p);
4586         if (retval)
4587                 goto out_free_new_mask;
4588
4589
4590         cpuset_cpus_allowed(p, cpus_allowed);
4591         cpumask_and(new_mask, in_mask, cpus_allowed);
4592
4593         /*
4594          * Since bandwidth control happens on root_domain basis,
4595          * if admission test is enabled, we only admit -deadline
4596          * tasks allowed to run on all the CPUs in the task's
4597          * root_domain.
4598          */
4599 #ifdef CONFIG_SMP
4600         if (task_has_dl_policy(p) && dl_bandwidth_enabled()) {
4601                 rcu_read_lock();
4602                 if (!cpumask_subset(task_rq(p)->rd->span, new_mask)) {
4603                         retval = -EBUSY;
4604                         rcu_read_unlock();
4605                         goto out_free_new_mask;
4606                 }
4607                 rcu_read_unlock();
4608         }
4609 #endif
4610 again:
4611         retval = __set_cpus_allowed_ptr(p, new_mask, true);
4612
4613         if (!retval) {
4614                 cpuset_cpus_allowed(p, cpus_allowed);
4615                 if (!cpumask_subset(new_mask, cpus_allowed)) {
4616                         /*
4617                          * We must have raced with a concurrent cpuset
4618                          * update. Just reset the cpus_allowed to the
4619                          * cpuset's cpus_allowed
4620                          */
4621                         cpumask_copy(new_mask, cpus_allowed);
4622                         goto again;
4623                 }
4624         }
4625 out_free_new_mask:
4626         free_cpumask_var(new_mask);
4627 out_free_cpus_allowed:
4628         free_cpumask_var(cpus_allowed);
4629 out_put_task:
4630         put_task_struct(p);
4631         return retval;
4632 }
4633
4634 static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
4635                              struct cpumask *new_mask)
4636 {
4637         if (len < cpumask_size())
4638                 cpumask_clear(new_mask);
4639         else if (len > cpumask_size())
4640                 len = cpumask_size();
4641
4642         return copy_from_user(new_mask, user_mask_ptr, len) ? -EFAULT : 0;
4643 }
4644
4645 /**
4646  * sys_sched_setaffinity - set the cpu affinity of a process
4647  * @pid: pid of the process
4648  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4649  * @user_mask_ptr: user-space pointer to the new cpu mask
4650  *
4651  * Return: 0 on success. An error code otherwise.
4652  */
4653 SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len,
4654                 unsigned long __user *, user_mask_ptr)
4655 {
4656         cpumask_var_t new_mask;
4657         int retval;
4658
4659         if (!alloc_cpumask_var(&new_mask, GFP_KERNEL))
4660                 return -ENOMEM;
4661
4662         retval = get_user_cpu_mask(user_mask_ptr, len, new_mask);
4663         if (retval == 0)
4664                 retval = sched_setaffinity(pid, new_mask);
4665         free_cpumask_var(new_mask);
4666         return retval;
4667 }
4668
4669 long sched_getaffinity(pid_t pid, struct cpumask *mask)
4670 {
4671         struct task_struct *p;
4672         unsigned long flags;
4673         int retval;
4674
4675         rcu_read_lock();
4676
4677         retval = -ESRCH;
4678         p = find_process_by_pid(pid);
4679         if (!p)
4680                 goto out_unlock;
4681
4682         retval = security_task_getscheduler(p);
4683         if (retval)
4684                 goto out_unlock;
4685
4686         raw_spin_lock_irqsave(&p->pi_lock, flags);
4687         cpumask_and(mask, &p->cpus_allowed, cpu_active_mask);
4688         raw_spin_unlock_irqrestore(&p->pi_lock, flags);
4689
4690 out_unlock:
4691         rcu_read_unlock();
4692
4693         return retval;
4694 }
4695
4696 /**
4697  * sys_sched_getaffinity - get the cpu affinity of a process
4698  * @pid: pid of the process
4699  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4700  * @user_mask_ptr: user-space pointer to hold the current cpu mask
4701  *
4702  * Return: 0 on success. An error code otherwise.
4703  */
4704 SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
4705                 unsigned long __user *, user_mask_ptr)
4706 {
4707         int ret;
4708         cpumask_var_t mask;
4709
4710         if ((len * BITS_PER_BYTE) < nr_cpu_ids)
4711                 return -EINVAL;
4712         if (len & (sizeof(unsigned long)-1))
4713                 return -EINVAL;
4714
4715         if (!alloc_cpumask_var(&mask, GFP_KERNEL))
4716                 return -ENOMEM;
4717
4718         ret = sched_getaffinity(pid, mask);
4719         if (ret == 0) {
4720                 size_t retlen = min_t(size_t, len, cpumask_size());
4721
4722                 if (copy_to_user(user_mask_ptr, mask, retlen))
4723                         ret = -EFAULT;
4724                 else
4725                         ret = retlen;
4726         }
4727         free_cpumask_var(mask);
4728
4729         return ret;
4730 }
4731
4732 /**
4733  * sys_sched_yield - yield the current processor to other threads.
4734  *
4735  * This function yields the current CPU to other tasks. If there are no
4736  * other threads running on this CPU then this function will return.
4737  *
4738  * Return: 0.
4739  */
4740 SYSCALL_DEFINE0(sched_yield)
4741 {
4742         struct rq *rq = this_rq_lock();
4743
4744         schedstat_inc(rq, yld_count);
4745         current->sched_class->yield_task(rq);
4746
4747         /*
4748          * Since we are going to call schedule() anyway, there's
4749          * no need to preempt or enable interrupts:
4750          */
4751         __release(rq->lock);
4752         spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
4753         do_raw_spin_unlock(&rq->lock);
4754         sched_preempt_enable_no_resched();
4755
4756         schedule();
4757
4758         return 0;
4759 }
4760
4761 int __sched _cond_resched(void)
4762 {
4763         if (should_resched(0)) {
4764                 preempt_schedule_common();
4765                 return 1;
4766         }
4767         return 0;
4768 }
4769 EXPORT_SYMBOL(_cond_resched);
4770
4771 /*
4772  * __cond_resched_lock() - if a reschedule is pending, drop the given lock,
4773  * call schedule, and on return reacquire the lock.
4774  *
4775  * This works OK both with and without CONFIG_PREEMPT. We do strange low-level
4776  * operations here to prevent schedule() from being called twice (once via
4777  * spin_unlock(), once by hand).
4778  */
4779 int __cond_resched_lock(spinlock_t *lock)
4780 {
4781         int resched = should_resched(PREEMPT_LOCK_OFFSET);
4782         int ret = 0;
4783
4784         lockdep_assert_held(lock);
4785
4786         if (spin_needbreak(lock) || resched) {
4787                 spin_unlock(lock);
4788                 if (resched)
4789                         preempt_schedule_common();
4790                 else
4791                         cpu_relax();
4792                 ret = 1;
4793                 spin_lock(lock);
4794         }
4795         return ret;
4796 }
4797 EXPORT_SYMBOL(__cond_resched_lock);
4798
4799 int __sched __cond_resched_softirq(void)
4800 {
4801         BUG_ON(!in_softirq());
4802
4803         if (should_resched(SOFTIRQ_DISABLE_OFFSET)) {
4804                 local_bh_enable();
4805                 preempt_schedule_common();
4806                 local_bh_disable();
4807                 return 1;
4808         }
4809         return 0;
4810 }
4811 EXPORT_SYMBOL(__cond_resched_softirq);
4812
4813 /**
4814  * yield - yield the current processor to other threads.
4815  *
4816  * Do not ever use this function, there's a 99% chance you're doing it wrong.
4817  *
4818  * The scheduler is at all times free to pick the calling task as the most
4819  * eligible task to run, if removing the yield() call from your code breaks
4820  * it, its already broken.
4821  *
4822  * Typical broken usage is:
4823  *
4824  * while (!event)
4825  *      yield();
4826  *
4827  * where one assumes that yield() will let 'the other' process run that will
4828  * make event true. If the current task is a SCHED_FIFO task that will never
4829  * happen. Never use yield() as a progress guarantee!!
4830  *
4831  * If you want to use yield() to wait for something, use wait_event().
4832  * If you want to use yield() to be 'nice' for others, use cond_resched().
4833  * If you still want to use yield(), do not!
4834  */
4835 void __sched yield(void)
4836 {
4837         set_current_state(TASK_RUNNING);
4838         sys_sched_yield();
4839 }
4840 EXPORT_SYMBOL(yield);
4841
4842 /**
4843  * yield_to - yield the current processor to another thread in
4844  * your thread group, or accelerate that thread toward the
4845  * processor it's on.
4846  * @p: target task
4847  * @preempt: whether task preemption is allowed or not
4848  *
4849  * It's the caller's job to ensure that the target task struct
4850  * can't go away on us before we can do any checks.
4851  *
4852  * Return:
4853  *      true (>0) if we indeed boosted the target task.
4854  *      false (0) if we failed to boost the target.
4855  *      -ESRCH if there's no task to yield to.
4856  */
4857 int __sched yield_to(struct task_struct *p, bool preempt)
4858 {
4859         struct task_struct *curr = current;
4860         struct rq *rq, *p_rq;
4861         unsigned long flags;
4862         int yielded = 0;
4863
4864         local_irq_save(flags);
4865         rq = this_rq();
4866
4867 again:
4868         p_rq = task_rq(p);
4869         /*
4870          * If we're the only runnable task on the rq and target rq also
4871          * has only one task, there's absolutely no point in yielding.
4872          */
4873         if (rq->nr_running == 1 && p_rq->nr_running == 1) {
4874                 yielded = -ESRCH;
4875                 goto out_irq;
4876         }
4877
4878         double_rq_lock(rq, p_rq);
4879         if (task_rq(p) != p_rq) {
4880                 double_rq_unlock(rq, p_rq);
4881                 goto again;
4882         }
4883
4884         if (!curr->sched_class->yield_to_task)
4885                 goto out_unlock;
4886
4887         if (curr->sched_class != p->sched_class)
4888                 goto out_unlock;
4889
4890         if (task_running(p_rq, p) || p->state)
4891                 goto out_unlock;
4892
4893         yielded = curr->sched_class->yield_to_task(rq, p, preempt);
4894         if (yielded) {
4895                 schedstat_inc(rq, yld_count);
4896                 /*
4897                  * Make p's CPU reschedule; pick_next_entity takes care of
4898                  * fairness.
4899                  */
4900                 if (preempt && rq != p_rq)
4901                         resched_curr(p_rq);
4902         }
4903
4904 out_unlock:
4905         double_rq_unlock(rq, p_rq);
4906 out_irq:
4907         local_irq_restore(flags);
4908
4909         if (yielded > 0)
4910                 schedule();
4911
4912         return yielded;
4913 }
4914 EXPORT_SYMBOL_GPL(yield_to);
4915
4916 /*
4917  * This task is about to go to sleep on IO. Increment rq->nr_iowait so
4918  * that process accounting knows that this is a task in IO wait state.
4919  */
4920 long __sched io_schedule_timeout(long timeout)
4921 {
4922         int old_iowait = current->in_iowait;
4923         struct rq *rq;
4924         long ret;
4925
4926         current->in_iowait = 1;
4927         blk_schedule_flush_plug(current);
4928
4929         delayacct_blkio_start();
4930         rq = raw_rq();
4931         atomic_inc(&rq->nr_iowait);
4932         ret = schedule_timeout(timeout);
4933         current->in_iowait = old_iowait;
4934         atomic_dec(&rq->nr_iowait);
4935         delayacct_blkio_end();
4936
4937         return ret;
4938 }
4939 EXPORT_SYMBOL(io_schedule_timeout);
4940
4941 /**
4942  * sys_sched_get_priority_max - return maximum RT priority.
4943  * @policy: scheduling class.
4944  *
4945  * Return: On success, this syscall returns the maximum
4946  * rt_priority that can be used by a given scheduling class.
4947  * On failure, a negative error code is returned.
4948  */
4949 SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
4950 {
4951         int ret = -EINVAL;
4952
4953         switch (policy) {
4954         case SCHED_FIFO:
4955         case SCHED_RR:
4956                 ret = MAX_USER_RT_PRIO-1;
4957                 break;
4958         case SCHED_DEADLINE:
4959         case SCHED_NORMAL:
4960         case SCHED_BATCH:
4961         case SCHED_IDLE:
4962                 ret = 0;
4963                 break;
4964         }
4965         return ret;
4966 }
4967
4968 /**
4969  * sys_sched_get_priority_min - return minimum RT priority.
4970  * @policy: scheduling class.
4971  *
4972  * Return: On success, this syscall returns the minimum
4973  * rt_priority that can be used by a given scheduling class.
4974  * On failure, a negative error code is returned.
4975  */
4976 SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
4977 {
4978         int ret = -EINVAL;
4979
4980         switch (policy) {
4981         case SCHED_FIFO:
4982         case SCHED_RR:
4983                 ret = 1;
4984                 break;
4985         case SCHED_DEADLINE:
4986         case SCHED_NORMAL:
4987         case SCHED_BATCH:
4988         case SCHED_IDLE:
4989                 ret = 0;
4990         }
4991         return ret;
4992 }
4993
4994 /**
4995  * sys_sched_rr_get_interval - return the default timeslice of a process.
4996  * @pid: pid of the process.
4997  * @interval: userspace pointer to the timeslice value.
4998  *
4999  * this syscall writes the default timeslice value of a given process
5000  * into the user-space timespec buffer. A value of '0' means infinity.
5001  *
5002  * Return: On success, 0 and the timeslice is in @interval. Otherwise,
5003  * an error code.
5004  */
5005 SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
5006                 struct timespec __user *, interval)
5007 {
5008         struct task_struct *p;
5009         unsigned int time_slice;
5010         unsigned long flags;
5011         struct rq *rq;
5012         int retval;
5013         struct timespec t;
5014
5015         if (pid < 0)
5016                 return -EINVAL;
5017
5018         retval = -ESRCH;
5019         rcu_read_lock();
5020         p = find_process_by_pid(pid);
5021         if (!p)
5022                 goto out_unlock;
5023
5024         retval = security_task_getscheduler(p);
5025         if (retval)
5026                 goto out_unlock;
5027
5028         rq = task_rq_lock(p, &flags);
5029         time_slice = 0;
5030         if (p->sched_class->get_rr_interval)
5031                 time_slice = p->sched_class->get_rr_interval(rq, p);
5032         task_rq_unlock(rq, p, &flags);
5033
5034         rcu_read_unlock();
5035         jiffies_to_timespec(time_slice, &t);
5036         retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0;
5037         return retval;
5038
5039 out_unlock:
5040         rcu_read_unlock();
5041         return retval;
5042 }
5043
5044 static const char stat_nam[] = TASK_STATE_TO_CHAR_STR;
5045
5046 void sched_show_task(struct task_struct *p)
5047 {
5048         unsigned long free = 0;
5049         int ppid;
5050         unsigned long state = p->state;
5051
5052         if (state)
5053                 state = __ffs(state) + 1;
5054         printk(KERN_INFO "%-15.15s %c", p->comm,
5055                 state < sizeof(stat_nam) - 1 ? stat_nam[state] : '?');
5056 #if BITS_PER_LONG == 32
5057         if (state == TASK_RUNNING)
5058                 printk(KERN_CONT " running  ");
5059         else
5060                 printk(KERN_CONT " %08lx ", thread_saved_pc(p));
5061 #else
5062         if (state == TASK_RUNNING)
5063                 printk(KERN_CONT "  running task    ");
5064         else
5065                 printk(KERN_CONT " %016lx ", thread_saved_pc(p));
5066 #endif
5067 #ifdef CONFIG_DEBUG_STACK_USAGE
5068         free = stack_not_used(p);
5069 #endif
5070         ppid = 0;
5071         rcu_read_lock();
5072         if (pid_alive(p))
5073                 ppid = task_pid_nr(rcu_dereference(p->real_parent));
5074         rcu_read_unlock();
5075         printk(KERN_CONT "%5lu %5d %6d 0x%08lx\n", free,
5076                 task_pid_nr(p), ppid,
5077                 (unsigned long)task_thread_info(p)->flags);
5078
5079         print_worker_info(KERN_INFO, p);
5080         show_stack(p, NULL);
5081 }
5082
5083 void show_state_filter(unsigned long state_filter)
5084 {
5085         struct task_struct *g, *p;
5086
5087 #if BITS_PER_LONG == 32
5088         printk(KERN_INFO
5089                 "  task                PC stack   pid father\n");
5090 #else
5091         printk(KERN_INFO
5092                 "  task                        PC stack   pid father\n");
5093 #endif
5094         rcu_read_lock();
5095         for_each_process_thread(g, p) {
5096                 /*
5097                  * reset the NMI-timeout, listing all files on a slow
5098                  * console might take a lot of time:
5099                  * Also, reset softlockup watchdogs on all CPUs, because
5100                  * another CPU might be blocked waiting for us to process
5101                  * an IPI.
5102                  */
5103                 touch_nmi_watchdog();
5104                 touch_all_softlockup_watchdogs();
5105                 if (!state_filter || (p->state & state_filter))
5106                         sched_show_task(p);
5107         }
5108
5109 #ifdef CONFIG_SCHED_DEBUG
5110         sysrq_sched_debug_show();
5111 #endif
5112         rcu_read_unlock();
5113         /*
5114          * Only show locks if all tasks are dumped:
5115          */
5116         if (!state_filter)
5117                 debug_show_all_locks();
5118 }
5119
5120 void init_idle_bootup_task(struct task_struct *idle)
5121 {
5122         idle->sched_class = &idle_sched_class;
5123 }
5124
5125 /**
5126  * init_idle - set up an idle thread for a given CPU
5127  * @idle: task in question
5128  * @cpu: cpu the idle task belongs to
5129  *
5130  * NOTE: this function does not set the idle thread's NEED_RESCHED
5131  * flag, to make booting more robust.
5132  */
5133 void init_idle(struct task_struct *idle, int cpu)
5134 {
5135         struct rq *rq = cpu_rq(cpu);
5136         unsigned long flags;
5137
5138         raw_spin_lock_irqsave(&idle->pi_lock, flags);
5139         raw_spin_lock(&rq->lock);
5140
5141         __sched_fork(0, idle);
5142
5143         idle->state = TASK_RUNNING;
5144         idle->se.exec_start = sched_clock();
5145
5146 #ifdef CONFIG_SMP
5147         /*
5148          * Its possible that init_idle() gets called multiple times on a task,
5149          * in that case do_set_cpus_allowed() will not do the right thing.
5150          *
5151          * And since this is boot we can forgo the serialization.
5152          */
5153         set_cpus_allowed_common(idle, cpumask_of(cpu));
5154 #endif
5155         /*
5156          * We're having a chicken and egg problem, even though we are
5157          * holding rq->lock, the cpu isn't yet set to this cpu so the
5158          * lockdep check in task_group() will fail.
5159          *
5160          * Similar case to sched_fork(). / Alternatively we could
5161          * use task_rq_lock() here and obtain the other rq->lock.
5162          *
5163          * Silence PROVE_RCU
5164          */
5165         rcu_read_lock();
5166         __set_task_cpu(idle, cpu);
5167         rcu_read_unlock();
5168
5169         rq->curr = rq->idle = idle;
5170         idle->on_rq = TASK_ON_RQ_QUEUED;
5171 #ifdef CONFIG_SMP
5172         idle->on_cpu = 1;
5173 #endif
5174         raw_spin_unlock(&rq->lock);
5175         raw_spin_unlock_irqrestore(&idle->pi_lock, flags);
5176
5177         /* Set the preempt count _outside_ the spinlocks! */
5178         init_idle_preempt_count(idle, cpu);
5179
5180         /*
5181          * The idle tasks have their own, simple scheduling class:
5182          */
5183         idle->sched_class = &idle_sched_class;
5184         ftrace_graph_init_idle_task(idle, cpu);
5185         vtime_init_idle(idle, cpu);
5186 #ifdef CONFIG_SMP
5187         sprintf(idle->comm, "%s/%d", INIT_TASK_COMM, cpu);
5188 #endif
5189 }
5190
5191 int cpuset_cpumask_can_shrink(const struct cpumask *cur,
5192                               const struct cpumask *trial)
5193 {
5194         int ret = 1, trial_cpus;
5195         struct dl_bw *cur_dl_b;
5196         unsigned long flags;
5197
5198         if (!cpumask_weight(cur))
5199                 return ret;
5200
5201         rcu_read_lock_sched();
5202         cur_dl_b = dl_bw_of(cpumask_any(cur));
5203         trial_cpus = cpumask_weight(trial);
5204
5205         raw_spin_lock_irqsave(&cur_dl_b->lock, flags);
5206         if (cur_dl_b->bw != -1 &&
5207             cur_dl_b->bw * trial_cpus < cur_dl_b->total_bw)
5208                 ret = 0;
5209         raw_spin_unlock_irqrestore(&cur_dl_b->lock, flags);
5210         rcu_read_unlock_sched();
5211
5212         return ret;
5213 }
5214
5215 int task_can_attach(struct task_struct *p,
5216                     const struct cpumask *cs_cpus_allowed)
5217 {
5218         int ret = 0;
5219
5220         /*
5221          * Kthreads which disallow setaffinity shouldn't be moved
5222          * to a new cpuset; we don't want to change their cpu
5223          * affinity and isolating such threads by their set of
5224          * allowed nodes is unnecessary.  Thus, cpusets are not
5225          * applicable for such threads.  This prevents checking for
5226          * success of set_cpus_allowed_ptr() on all attached tasks
5227          * before cpus_allowed may be changed.
5228          */
5229         if (p->flags & PF_NO_SETAFFINITY) {
5230                 ret = -EINVAL;
5231                 goto out;
5232         }
5233
5234 #ifdef CONFIG_SMP
5235         if (dl_task(p) && !cpumask_intersects(task_rq(p)->rd->span,
5236                                               cs_cpus_allowed)) {
5237                 unsigned int dest_cpu = cpumask_any_and(cpu_active_mask,
5238                                                         cs_cpus_allowed);
5239                 struct dl_bw *dl_b;
5240                 bool overflow;
5241                 int cpus;
5242                 unsigned long flags;
5243
5244                 rcu_read_lock_sched();
5245                 dl_b = dl_bw_of(dest_cpu);
5246                 raw_spin_lock_irqsave(&dl_b->lock, flags);
5247                 cpus = dl_bw_cpus(dest_cpu);
5248                 overflow = __dl_overflow(dl_b, cpus, 0, p->dl.dl_bw);
5249                 if (overflow)
5250                         ret = -EBUSY;
5251                 else {
5252                         /*
5253                          * We reserve space for this task in the destination
5254                          * root_domain, as we can't fail after this point.
5255                          * We will free resources in the source root_domain
5256                          * later on (see set_cpus_allowed_dl()).
5257                          */
5258                         __dl_add(dl_b, p->dl.dl_bw);
5259                 }
5260                 raw_spin_unlock_irqrestore(&dl_b->lock, flags);
5261                 rcu_read_unlock_sched();
5262
5263         }
5264 #endif
5265 out:
5266         return ret;
5267 }
5268
5269 #ifdef CONFIG_SMP
5270
5271 #ifdef CONFIG_NUMA_BALANCING
5272 /* Migrate current task p to target_cpu */
5273 int migrate_task_to(struct task_struct *p, int target_cpu)
5274 {
5275         struct migration_arg arg = { p, target_cpu };
5276         int curr_cpu = task_cpu(p);
5277
5278         if (curr_cpu == target_cpu)
5279                 return 0;
5280
5281         if (!cpumask_test_cpu(target_cpu, tsk_cpus_allowed(p)))
5282                 return -EINVAL;
5283
5284         /* TODO: This is not properly updating schedstats */
5285
5286         trace_sched_move_numa(p, curr_cpu, target_cpu);
5287         return stop_one_cpu(curr_cpu, migration_cpu_stop, &arg);
5288 }
5289
5290 /*
5291  * Requeue a task on a given node and accurately track the number of NUMA
5292  * tasks on the runqueues
5293  */
5294 void sched_setnuma(struct task_struct *p, int nid)
5295 {
5296         struct rq *rq;
5297         unsigned long flags;
5298         bool queued, running;
5299
5300         rq = task_rq_lock(p, &flags);
5301         queued = task_on_rq_queued(p);
5302         running = task_current(rq, p);
5303
5304         if (queued)
5305                 dequeue_task(rq, p, DEQUEUE_SAVE);
5306         if (running)
5307                 put_prev_task(rq, p);
5308
5309         p->numa_preferred_nid = nid;
5310
5311         if (running)
5312                 p->sched_class->set_curr_task(rq);
5313         if (queued)
5314                 enqueue_task(rq, p, ENQUEUE_RESTORE);
5315         task_rq_unlock(rq, p, &flags);
5316 }
5317 #endif /* CONFIG_NUMA_BALANCING */
5318
5319 #ifdef CONFIG_HOTPLUG_CPU
5320 /*
5321  * Ensures that the idle task is using init_mm right before its cpu goes
5322  * offline.
5323  */
5324 void idle_task_exit(void)
5325 {
5326         struct mm_struct *mm = current->active_mm;
5327
5328         BUG_ON(cpu_online(smp_processor_id()));
5329
5330         if (mm != &init_mm) {
5331                 switch_mm(mm, &init_mm, current);
5332                 finish_arch_post_lock_switch();
5333         }
5334         mmdrop(mm);
5335 }
5336
5337 /*
5338  * Since this CPU is going 'away' for a while, fold any nr_active delta
5339  * we might have. Assumes we're called after migrate_tasks() so that the
5340  * nr_active count is stable.
5341  *
5342  * Also see the comment "Global load-average calculations".
5343  */
5344 static void calc_load_migrate(struct rq *rq)
5345 {
5346         long delta = calc_load_fold_active(rq);
5347         if (delta)
5348                 atomic_long_add(delta, &calc_load_tasks);
5349 }
5350
5351 static void put_prev_task_fake(struct rq *rq, struct task_struct *prev)
5352 {
5353 }
5354
5355 static const struct sched_class fake_sched_class = {
5356         .put_prev_task = put_prev_task_fake,
5357 };
5358
5359 static struct task_struct fake_task = {
5360         /*
5361          * Avoid pull_{rt,dl}_task()
5362          */
5363         .prio = MAX_PRIO + 1,
5364         .sched_class = &fake_sched_class,
5365 };
5366
5367 /*
5368  * Migrate all tasks from the rq, sleeping tasks will be migrated by
5369  * try_to_wake_up()->select_task_rq().
5370  *
5371  * Called with rq->lock held even though we'er in stop_machine() and
5372  * there's no concurrency possible, we hold the required locks anyway
5373  * because of lock validation efforts.
5374  */
5375 static void migrate_tasks(struct rq *dead_rq)
5376 {
5377         struct rq *rq = dead_rq;
5378         struct task_struct *next, *stop = rq->stop;
5379         int dest_cpu;
5380
5381         /*
5382          * Fudge the rq selection such that the below task selection loop
5383          * doesn't get stuck on the currently eligible stop task.
5384          *
5385          * We're currently inside stop_machine() and the rq is either stuck
5386          * in the stop_machine_cpu_stop() loop, or we're executing this code,
5387          * either way we should never end up calling schedule() until we're
5388          * done here.
5389          */
5390         rq->stop = NULL;
5391
5392         /*
5393          * put_prev_task() and pick_next_task() sched
5394          * class method both need to have an up-to-date
5395          * value of rq->clock[_task]
5396          */
5397         update_rq_clock(rq);
5398
5399         for (;;) {
5400                 /*
5401                  * There's this thread running, bail when that's the only
5402                  * remaining thread.
5403                  */
5404                 if (rq->nr_running == 1)
5405                         break;
5406
5407                 /*
5408                  * pick_next_task assumes pinned rq->lock.
5409                  */
5410                 lockdep_pin_lock(&rq->lock);
5411                 next = pick_next_task(rq, &fake_task);
5412                 BUG_ON(!next);
5413                 next->sched_class->put_prev_task(rq, next);
5414
5415                 /*
5416                  * Rules for changing task_struct::cpus_allowed are holding
5417                  * both pi_lock and rq->lock, such that holding either
5418                  * stabilizes the mask.
5419                  *
5420                  * Drop rq->lock is not quite as disastrous as it usually is
5421                  * because !cpu_active at this point, which means load-balance
5422                  * will not interfere. Also, stop-machine.
5423                  */
5424                 lockdep_unpin_lock(&rq->lock);
5425                 raw_spin_unlock(&rq->lock);
5426                 raw_spin_lock(&next->pi_lock);
5427                 raw_spin_lock(&rq->lock);
5428
5429                 /*
5430                  * Since we're inside stop-machine, _nothing_ should have
5431                  * changed the task, WARN if weird stuff happened, because in
5432                  * that case the above rq->lock drop is a fail too.
5433                  */
5434                 if (WARN_ON(task_rq(next) != rq || !task_on_rq_queued(next))) {
5435                         raw_spin_unlock(&next->pi_lock);
5436                         continue;
5437                 }
5438
5439                 /* Find suitable destination for @next, with force if needed. */
5440                 dest_cpu = select_fallback_rq(dead_rq->cpu, next);
5441
5442                 rq = __migrate_task(rq, next, dest_cpu);
5443                 if (rq != dead_rq) {
5444                         raw_spin_unlock(&rq->lock);
5445                         rq = dead_rq;
5446                         raw_spin_lock(&rq->lock);
5447                 }
5448                 raw_spin_unlock(&next->pi_lock);
5449         }
5450
5451         rq->stop = stop;
5452 }
5453 #endif /* CONFIG_HOTPLUG_CPU */
5454
5455 #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
5456
5457 static struct ctl_table sd_ctl_dir[] = {
5458         {
5459                 .procname       = "sched_domain",
5460                 .mode           = 0555,
5461         },
5462         {}
5463 };
5464
5465 static struct ctl_table sd_ctl_root[] = {
5466         {
5467                 .procname       = "kernel",
5468                 .mode           = 0555,
5469                 .child          = sd_ctl_dir,
5470         },
5471         {}
5472 };
5473
5474 static struct ctl_table *sd_alloc_ctl_entry(int n)
5475 {
5476         struct ctl_table *entry =
5477                 kcalloc(n, sizeof(struct ctl_table), GFP_KERNEL);
5478
5479         return entry;
5480 }
5481
5482 static void sd_free_ctl_entry(struct ctl_table **tablep)
5483 {
5484         struct ctl_table *entry;
5485
5486         /*
5487          * In the intermediate directories, both the child directory and
5488          * procname are dynamically allocated and could fail but the mode
5489          * will always be set. In the lowest directory the names are
5490          * static strings and all have proc handlers.
5491          */
5492         for (entry = *tablep; entry->mode; entry++) {
5493                 if (entry->child)
5494                         sd_free_ctl_entry(&entry->child);
5495                 if (entry->proc_handler == NULL)
5496                         kfree(entry->procname);
5497         }
5498
5499         kfree(*tablep);
5500         *tablep = NULL;
5501 }
5502
5503 static int min_load_idx = 0;
5504 static int max_load_idx = CPU_LOAD_IDX_MAX-1;
5505
5506 static void
5507 set_table_entry(struct ctl_table *entry,
5508                 const char *procname, void *data, int maxlen,
5509                 umode_t mode, proc_handler *proc_handler,
5510                 bool load_idx)
5511 {
5512         entry->procname = procname;
5513         entry->data = data;
5514         entry->maxlen = maxlen;
5515         entry->mode = mode;
5516         entry->proc_handler = proc_handler;
5517
5518         if (load_idx) {
5519                 entry->extra1 = &min_load_idx;
5520                 entry->extra2 = &max_load_idx;
5521         }
5522 }
5523
5524 static struct ctl_table *
5525 sd_alloc_ctl_energy_table(struct sched_group_energy *sge)
5526 {
5527         struct ctl_table *table = sd_alloc_ctl_entry(5);
5528
5529         if (table == NULL)
5530                 return NULL;
5531
5532         set_table_entry(&table[0], "nr_idle_states", &sge->nr_idle_states,
5533                         sizeof(int), 0644, proc_dointvec_minmax, false);
5534         set_table_entry(&table[1], "idle_states", &sge->idle_states[0].power,
5535                         sge->nr_idle_states*sizeof(struct idle_state), 0644,
5536                         proc_doulongvec_minmax, false);
5537         set_table_entry(&table[2], "nr_cap_states", &sge->nr_cap_states,
5538                         sizeof(int), 0644, proc_dointvec_minmax, false);
5539         set_table_entry(&table[3], "cap_states", &sge->cap_states[0].cap,
5540                         sge->nr_cap_states*sizeof(struct capacity_state), 0644,
5541                         proc_doulongvec_minmax, false);
5542
5543         return table;
5544 }
5545
5546 static struct ctl_table *
5547 sd_alloc_ctl_group_table(struct sched_group *sg)
5548 {
5549         struct ctl_table *table = sd_alloc_ctl_entry(2);
5550
5551         if (table == NULL)
5552                 return NULL;
5553
5554         table->procname = kstrdup("energy", GFP_KERNEL);
5555         table->mode = 0555;
5556         table->child = sd_alloc_ctl_energy_table((struct sched_group_energy *)sg->sge);
5557
5558         return table;
5559 }
5560
5561 static struct ctl_table *
5562 sd_alloc_ctl_domain_table(struct sched_domain *sd)
5563 {
5564         struct ctl_table *table;
5565         unsigned int nr_entries = 14;
5566
5567         int i = 0;
5568         struct sched_group *sg = sd->groups;
5569
5570         if (sg->sge) {
5571                 int nr_sgs = 0;
5572
5573                 do {} while (nr_sgs++, sg = sg->next, sg != sd->groups);
5574
5575                 nr_entries += nr_sgs;
5576         }
5577
5578         table = sd_alloc_ctl_entry(nr_entries);
5579
5580         if (table == NULL)
5581                 return NULL;
5582
5583         set_table_entry(&table[0], "min_interval", &sd->min_interval,
5584                 sizeof(long), 0644, proc_doulongvec_minmax, false);
5585         set_table_entry(&table[1], "max_interval", &sd->max_interval,
5586                 sizeof(long), 0644, proc_doulongvec_minmax, false);
5587         set_table_entry(&table[2], "busy_idx", &sd->busy_idx,
5588                 sizeof(int), 0644, proc_dointvec_minmax, true);
5589         set_table_entry(&table[3], "idle_idx", &sd->idle_idx,
5590                 sizeof(int), 0644, proc_dointvec_minmax, true);
5591         set_table_entry(&table[4], "newidle_idx", &sd->newidle_idx,
5592                 sizeof(int), 0644, proc_dointvec_minmax, true);
5593         set_table_entry(&table[5], "wake_idx", &sd->wake_idx,
5594                 sizeof(int), 0644, proc_dointvec_minmax, true);
5595         set_table_entry(&table[6], "forkexec_idx", &sd->forkexec_idx,
5596                 sizeof(int), 0644, proc_dointvec_minmax, true);
5597         set_table_entry(&table[7], "busy_factor", &sd->busy_factor,
5598                 sizeof(int), 0644, proc_dointvec_minmax, false);
5599         set_table_entry(&table[8], "imbalance_pct", &sd->imbalance_pct,
5600                 sizeof(int), 0644, proc_dointvec_minmax, false);
5601         set_table_entry(&table[9], "cache_nice_tries",
5602                 &sd->cache_nice_tries,
5603                 sizeof(int), 0644, proc_dointvec_minmax, false);
5604         set_table_entry(&table[10], "flags", &sd->flags,
5605                 sizeof(int), 0644, proc_dointvec_minmax, false);
5606         set_table_entry(&table[11], "max_newidle_lb_cost",
5607                 &sd->max_newidle_lb_cost,
5608                 sizeof(long), 0644, proc_doulongvec_minmax, false);
5609         set_table_entry(&table[12], "name", sd->name,
5610                 CORENAME_MAX_SIZE, 0444, proc_dostring, false);
5611         sg = sd->groups;
5612         if (sg->sge) {
5613                 char buf[32];
5614                 struct ctl_table *entry = &table[13];
5615
5616                 do {
5617                         snprintf(buf, 32, "group%d", i);
5618                         entry->procname = kstrdup(buf, GFP_KERNEL);
5619                         entry->mode = 0555;
5620                         entry->child = sd_alloc_ctl_group_table(sg);
5621                 } while (entry++, i++, sg = sg->next, sg != sd->groups);
5622         }
5623         /* &table[nr_entries-1] is terminator */
5624
5625         return table;
5626 }
5627
5628 static struct ctl_table *sd_alloc_ctl_cpu_table(int cpu)
5629 {
5630         struct ctl_table *entry, *table;
5631         struct sched_domain *sd;
5632         int domain_num = 0, i;
5633         char buf[32];
5634
5635         for_each_domain(cpu, sd)
5636                 domain_num++;
5637         entry = table = sd_alloc_ctl_entry(domain_num + 1);
5638         if (table == NULL)
5639                 return NULL;
5640
5641         i = 0;
5642         for_each_domain(cpu, sd) {
5643                 snprintf(buf, 32, "domain%d", i);
5644                 entry->procname = kstrdup(buf, GFP_KERNEL);
5645                 entry->mode = 0555;
5646                 entry->child = sd_alloc_ctl_domain_table(sd);
5647                 entry++;
5648                 i++;
5649         }
5650         return table;
5651 }
5652
5653 static struct ctl_table_header *sd_sysctl_header;
5654 static void register_sched_domain_sysctl(void)
5655 {
5656         int i, cpu_num = num_possible_cpus();
5657         struct ctl_table *entry = sd_alloc_ctl_entry(cpu_num + 1);
5658         char buf[32];
5659
5660         WARN_ON(sd_ctl_dir[0].child);
5661         sd_ctl_dir[0].child = entry;
5662
5663         if (entry == NULL)
5664                 return;
5665
5666         for_each_possible_cpu(i) {
5667                 snprintf(buf, 32, "cpu%d", i);
5668                 entry->procname = kstrdup(buf, GFP_KERNEL);
5669                 entry->mode = 0555;
5670                 entry->child = sd_alloc_ctl_cpu_table(i);
5671                 entry++;
5672         }
5673
5674         WARN_ON(sd_sysctl_header);
5675         sd_sysctl_header = register_sysctl_table(sd_ctl_root);
5676 }
5677
5678 /* may be called multiple times per register */
5679 static void unregister_sched_domain_sysctl(void)
5680 {
5681         unregister_sysctl_table(sd_sysctl_header);
5682         sd_sysctl_header = NULL;
5683         if (sd_ctl_dir[0].child)
5684                 sd_free_ctl_entry(&sd_ctl_dir[0].child);
5685 }
5686 #else
5687 static void register_sched_domain_sysctl(void)
5688 {
5689 }
5690 static void unregister_sched_domain_sysctl(void)
5691 {
5692 }
5693 #endif /* CONFIG_SCHED_DEBUG && CONFIG_SYSCTL */
5694
5695 static void set_rq_online(struct rq *rq)
5696 {
5697         if (!rq->online) {
5698                 const struct sched_class *class;
5699
5700                 cpumask_set_cpu(rq->cpu, rq->rd->online);
5701                 rq->online = 1;
5702
5703                 for_each_class(class) {
5704                         if (class->rq_online)
5705                                 class->rq_online(rq);
5706                 }
5707         }
5708 }
5709
5710 static void set_rq_offline(struct rq *rq)
5711 {
5712         if (rq->online) {
5713                 const struct sched_class *class;
5714
5715                 for_each_class(class) {
5716                         if (class->rq_offline)
5717                                 class->rq_offline(rq);
5718                 }
5719
5720                 cpumask_clear_cpu(rq->cpu, rq->rd->online);
5721                 rq->online = 0;
5722         }
5723 }
5724
5725 /*
5726  * migration_call - callback that gets triggered when a CPU is added.
5727  * Here we can start up the necessary migration thread for the new CPU.
5728  */
5729 static int
5730 migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
5731 {
5732         int cpu = (long)hcpu;
5733         unsigned long flags;
5734         struct rq *rq = cpu_rq(cpu);
5735
5736         switch (action & ~CPU_TASKS_FROZEN) {
5737
5738         case CPU_UP_PREPARE:
5739                 raw_spin_lock_irqsave(&rq->lock, flags);
5740                 walt_set_window_start(rq);
5741                 raw_spin_unlock_irqrestore(&rq->lock, flags);
5742                 rq->calc_load_update = calc_load_update;
5743                 break;
5744
5745         case CPU_ONLINE:
5746                 /* Update our root-domain */
5747                 raw_spin_lock_irqsave(&rq->lock, flags);
5748                 if (rq->rd) {
5749                         BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
5750
5751                         set_rq_online(rq);
5752                 }
5753                 raw_spin_unlock_irqrestore(&rq->lock, flags);
5754                 break;
5755
5756 #ifdef CONFIG_HOTPLUG_CPU
5757         case CPU_DYING:
5758                 sched_ttwu_pending();
5759                 /* Update our root-domain */
5760                 raw_spin_lock_irqsave(&rq->lock, flags);
5761                 walt_migrate_sync_cpu(cpu);
5762                 if (rq->rd) {
5763                         BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
5764                         set_rq_offline(rq);
5765                 }
5766                 migrate_tasks(rq);
5767                 BUG_ON(rq->nr_running != 1); /* the migration thread */
5768                 raw_spin_unlock_irqrestore(&rq->lock, flags);
5769                 break;
5770
5771         case CPU_DEAD:
5772                 calc_load_migrate(rq);
5773                 break;
5774 #endif
5775         }
5776
5777         update_max_interval();
5778
5779         return NOTIFY_OK;
5780 }
5781
5782 /*
5783  * Register at high priority so that task migration (migrate_all_tasks)
5784  * happens before everything else.  This has to be lower priority than
5785  * the notifier in the perf_event subsystem, though.
5786  */
5787 static struct notifier_block migration_notifier = {
5788         .notifier_call = migration_call,
5789         .priority = CPU_PRI_MIGRATION,
5790 };
5791
5792 static void set_cpu_rq_start_time(void)
5793 {
5794         int cpu = smp_processor_id();
5795         struct rq *rq = cpu_rq(cpu);
5796         rq->age_stamp = sched_clock_cpu(cpu);
5797 }
5798
5799 static int sched_cpu_active(struct notifier_block *nfb,
5800                                       unsigned long action, void *hcpu)
5801 {
5802         int cpu = (long)hcpu;
5803
5804         switch (action & ~CPU_TASKS_FROZEN) {
5805         case CPU_STARTING:
5806                 set_cpu_rq_start_time();
5807                 return NOTIFY_OK;
5808
5809         case CPU_ONLINE:
5810                 /*
5811                  * At this point a starting CPU has marked itself as online via
5812                  * set_cpu_online(). But it might not yet have marked itself
5813                  * as active, which is essential from here on.
5814                  */
5815                 set_cpu_active(cpu, true);
5816                 stop_machine_unpark(cpu);
5817                 return NOTIFY_OK;
5818
5819         case CPU_DOWN_FAILED:
5820                 set_cpu_active(cpu, true);
5821                 return NOTIFY_OK;
5822
5823         default:
5824                 return NOTIFY_DONE;
5825         }
5826 }
5827
5828 static int sched_cpu_inactive(struct notifier_block *nfb,
5829                                         unsigned long action, void *hcpu)
5830 {
5831         switch (action & ~CPU_TASKS_FROZEN) {
5832         case CPU_DOWN_PREPARE:
5833                 set_cpu_active((long)hcpu, false);
5834                 return NOTIFY_OK;
5835         default:
5836                 return NOTIFY_DONE;
5837         }
5838 }
5839
5840 static int __init migration_init(void)
5841 {
5842         void *cpu = (void *)(long)smp_processor_id();
5843         int err;
5844
5845         /* Initialize migration for the boot CPU */
5846         err = migration_call(&migration_notifier, CPU_UP_PREPARE, cpu);
5847         BUG_ON(err == NOTIFY_BAD);
5848         migration_call(&migration_notifier, CPU_ONLINE, cpu);
5849         register_cpu_notifier(&migration_notifier);
5850
5851         /* Register cpu active notifiers */
5852         cpu_notifier(sched_cpu_active, CPU_PRI_SCHED_ACTIVE);
5853         cpu_notifier(sched_cpu_inactive, CPU_PRI_SCHED_INACTIVE);
5854
5855         return 0;
5856 }
5857 early_initcall(migration_init);
5858
5859 static cpumask_var_t sched_domains_tmpmask; /* sched_domains_mutex */
5860
5861 #ifdef CONFIG_SCHED_DEBUG
5862
5863 static __read_mostly int sched_debug_enabled;
5864
5865 static int __init sched_debug_setup(char *str)
5866 {
5867         sched_debug_enabled = 1;
5868
5869         return 0;
5870 }
5871 early_param("sched_debug", sched_debug_setup);
5872
5873 static inline bool sched_debug(void)
5874 {
5875         return sched_debug_enabled;
5876 }
5877
5878 static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level,
5879                                   struct cpumask *groupmask)
5880 {
5881         struct sched_group *group = sd->groups;
5882
5883         cpumask_clear(groupmask);
5884
5885         printk(KERN_DEBUG "%*s domain %d: ", level, "", level);
5886
5887         if (!(sd->flags & SD_LOAD_BALANCE)) {
5888                 printk("does not load-balance\n");
5889                 return -1;
5890         }
5891
5892         printk(KERN_CONT "span %*pbl level %s\n",
5893                cpumask_pr_args(sched_domain_span(sd)), sd->name);
5894
5895         if (!cpumask_test_cpu(cpu, sched_domain_span(sd))) {
5896                 printk(KERN_ERR "ERROR: domain->span does not contain "
5897                                 "CPU%d\n", cpu);
5898         }
5899         if (!cpumask_test_cpu(cpu, sched_group_cpus(group))) {
5900                 printk(KERN_ERR "ERROR: domain->groups does not contain"
5901                                 " CPU%d\n", cpu);
5902         }
5903
5904         printk(KERN_DEBUG "%*s groups:", level + 1, "");
5905         do {
5906                 if (!group) {
5907                         printk("\n");
5908                         printk(KERN_ERR "ERROR: group is NULL\n");
5909                         break;
5910                 }
5911
5912                 if (!cpumask_weight(sched_group_cpus(group))) {
5913                         printk(KERN_CONT "\n");
5914                         printk(KERN_ERR "ERROR: empty group\n");
5915                         break;
5916                 }
5917
5918                 if (!(sd->flags & SD_OVERLAP) &&
5919                     cpumask_intersects(groupmask, sched_group_cpus(group))) {
5920                         printk(KERN_CONT "\n");
5921                         printk(KERN_ERR "ERROR: repeated CPUs\n");
5922                         break;
5923                 }
5924
5925                 cpumask_or(groupmask, groupmask, sched_group_cpus(group));
5926
5927                 printk(KERN_CONT " %*pbl",
5928                        cpumask_pr_args(sched_group_cpus(group)));
5929                 if (group->sgc->capacity != SCHED_CAPACITY_SCALE) {
5930                         printk(KERN_CONT " (cpu_capacity = %lu)",
5931                                 group->sgc->capacity);
5932                 }
5933
5934                 group = group->next;
5935         } while (group != sd->groups);
5936         printk(KERN_CONT "\n");
5937
5938         if (!cpumask_equal(sched_domain_span(sd), groupmask))
5939                 printk(KERN_ERR "ERROR: groups don't span domain->span\n");
5940
5941         if (sd->parent &&
5942             !cpumask_subset(groupmask, sched_domain_span(sd->parent)))
5943                 printk(KERN_ERR "ERROR: parent span is not a superset "
5944                         "of domain->span\n");
5945         return 0;
5946 }
5947
5948 static void sched_domain_debug(struct sched_domain *sd, int cpu)
5949 {
5950         int level = 0;
5951
5952         if (!sched_debug_enabled)
5953                 return;
5954
5955         if (!sd) {
5956                 printk(KERN_DEBUG "CPU%d attaching NULL sched-domain.\n", cpu);
5957                 return;
5958         }
5959
5960         printk(KERN_DEBUG "CPU%d attaching sched-domain:\n", cpu);
5961
5962         for (;;) {
5963                 if (sched_domain_debug_one(sd, cpu, level, sched_domains_tmpmask))
5964                         break;
5965                 level++;
5966                 sd = sd->parent;
5967                 if (!sd)
5968                         break;
5969         }
5970 }
5971 #else /* !CONFIG_SCHED_DEBUG */
5972 # define sched_domain_debug(sd, cpu) do { } while (0)
5973 static inline bool sched_debug(void)
5974 {
5975         return false;
5976 }
5977 #endif /* CONFIG_SCHED_DEBUG */
5978
5979 static int sd_degenerate(struct sched_domain *sd)
5980 {
5981         if (cpumask_weight(sched_domain_span(sd)) == 1) {
5982                 if (sd->groups->sge)
5983                         sd->flags &= ~SD_LOAD_BALANCE;
5984                 else
5985                         return 1;
5986         }
5987
5988         /* Following flags need at least 2 groups */
5989         if (sd->flags & (SD_LOAD_BALANCE |
5990                          SD_BALANCE_NEWIDLE |
5991                          SD_BALANCE_FORK |
5992                          SD_BALANCE_EXEC |
5993                          SD_SHARE_CPUCAPACITY |
5994                          SD_ASYM_CPUCAPACITY |
5995                          SD_SHARE_PKG_RESOURCES |
5996                          SD_SHARE_POWERDOMAIN |
5997                          SD_SHARE_CAP_STATES)) {
5998                 if (sd->groups != sd->groups->next)
5999                         return 0;
6000         }
6001
6002         /* Following flags don't use groups */
6003         if (sd->flags & (SD_WAKE_AFFINE))
6004                 return 0;
6005
6006         return 1;
6007 }
6008
6009 static int
6010 sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent)
6011 {
6012         unsigned long cflags = sd->flags, pflags = parent->flags;
6013
6014         if (sd_degenerate(parent))
6015                 return 1;
6016
6017         if (!cpumask_equal(sched_domain_span(sd), sched_domain_span(parent)))
6018                 return 0;
6019
6020         /* Flags needing groups don't count if only 1 group in parent */
6021         if (parent->groups == parent->groups->next) {
6022                 pflags &= ~(SD_LOAD_BALANCE |
6023                                 SD_BALANCE_NEWIDLE |
6024                                 SD_BALANCE_FORK |
6025                                 SD_BALANCE_EXEC |
6026                                 SD_ASYM_CPUCAPACITY |
6027                                 SD_SHARE_CPUCAPACITY |
6028                                 SD_SHARE_PKG_RESOURCES |
6029                                 SD_PREFER_SIBLING |
6030                                 SD_SHARE_POWERDOMAIN |
6031                                 SD_SHARE_CAP_STATES);
6032                 if (parent->groups->sge) {
6033                         parent->flags &= ~SD_LOAD_BALANCE;
6034                         return 0;
6035                 }
6036                 if (nr_node_ids == 1)
6037                         pflags &= ~SD_SERIALIZE;
6038         }
6039         if (~cflags & pflags)
6040                 return 0;
6041
6042         return 1;
6043 }
6044
6045 static void free_rootdomain(struct rcu_head *rcu)
6046 {
6047         struct root_domain *rd = container_of(rcu, struct root_domain, rcu);
6048
6049         cpupri_cleanup(&rd->cpupri);
6050         cpudl_cleanup(&rd->cpudl);
6051         free_cpumask_var(rd->dlo_mask);
6052         free_cpumask_var(rd->rto_mask);
6053         free_cpumask_var(rd->online);
6054         free_cpumask_var(rd->span);
6055         kfree(rd);
6056 }
6057
6058 static void rq_attach_root(struct rq *rq, struct root_domain *rd)
6059 {
6060         struct root_domain *old_rd = NULL;
6061         unsigned long flags;
6062
6063         raw_spin_lock_irqsave(&rq->lock, flags);
6064
6065         if (rq->rd) {
6066                 old_rd = rq->rd;
6067
6068                 if (cpumask_test_cpu(rq->cpu, old_rd->online))
6069                         set_rq_offline(rq);
6070
6071                 cpumask_clear_cpu(rq->cpu, old_rd->span);
6072
6073                 /*
6074                  * If we dont want to free the old_rd yet then
6075                  * set old_rd to NULL to skip the freeing later
6076                  * in this function:
6077                  */
6078                 if (!atomic_dec_and_test(&old_rd->refcount))
6079                         old_rd = NULL;
6080         }
6081
6082         atomic_inc(&rd->refcount);
6083         rq->rd = rd;
6084
6085         cpumask_set_cpu(rq->cpu, rd->span);
6086         if (cpumask_test_cpu(rq->cpu, cpu_active_mask))
6087                 set_rq_online(rq);
6088
6089         raw_spin_unlock_irqrestore(&rq->lock, flags);
6090
6091         if (old_rd)
6092                 call_rcu_sched(&old_rd->rcu, free_rootdomain);
6093 }
6094
6095 static int init_rootdomain(struct root_domain *rd)
6096 {
6097         memset(rd, 0, sizeof(*rd));
6098
6099         if (!zalloc_cpumask_var(&rd->span, GFP_KERNEL))
6100                 goto out;
6101         if (!zalloc_cpumask_var(&rd->online, GFP_KERNEL))
6102                 goto free_span;
6103         if (!zalloc_cpumask_var(&rd->dlo_mask, GFP_KERNEL))
6104                 goto free_online;
6105         if (!zalloc_cpumask_var(&rd->rto_mask, GFP_KERNEL))
6106                 goto free_dlo_mask;
6107
6108 #ifdef HAVE_RT_PUSH_IPI
6109         rd->rto_cpu = -1;
6110         raw_spin_lock_init(&rd->rto_lock);
6111         init_irq_work(&rd->rto_push_work, rto_push_irq_work_func);
6112 #endif
6113
6114         init_dl_bw(&rd->dl_bw);
6115         if (cpudl_init(&rd->cpudl) != 0)
6116                 goto free_dlo_mask;
6117
6118         if (cpupri_init(&rd->cpupri) != 0)
6119                 goto free_rto_mask;
6120
6121         init_max_cpu_capacity(&rd->max_cpu_capacity);
6122
6123         rd->max_cap_orig_cpu = rd->min_cap_orig_cpu = -1;
6124
6125         return 0;
6126
6127 free_rto_mask:
6128         free_cpumask_var(rd->rto_mask);
6129 free_dlo_mask:
6130         free_cpumask_var(rd->dlo_mask);
6131 free_online:
6132         free_cpumask_var(rd->online);
6133 free_span:
6134         free_cpumask_var(rd->span);
6135 out:
6136         return -ENOMEM;
6137 }
6138
6139 /*
6140  * By default the system creates a single root-domain with all cpus as
6141  * members (mimicking the global state we have today).
6142  */
6143 struct root_domain def_root_domain;
6144
6145 static void init_defrootdomain(void)
6146 {
6147         init_rootdomain(&def_root_domain);
6148
6149         atomic_set(&def_root_domain.refcount, 1);
6150 }
6151
6152 static struct root_domain *alloc_rootdomain(void)
6153 {
6154         struct root_domain *rd;
6155
6156         rd = kmalloc(sizeof(*rd), GFP_KERNEL);
6157         if (!rd)
6158                 return NULL;
6159
6160         if (init_rootdomain(rd) != 0) {
6161                 kfree(rd);
6162                 return NULL;
6163         }
6164
6165         return rd;
6166 }
6167
6168 static void free_sched_groups(struct sched_group *sg, int free_sgc)
6169 {
6170         struct sched_group *tmp, *first;
6171
6172         if (!sg)
6173                 return;
6174
6175         first = sg;
6176         do {
6177                 tmp = sg->next;
6178
6179                 if (free_sgc && atomic_dec_and_test(&sg->sgc->ref))
6180                         kfree(sg->sgc);
6181
6182                 kfree(sg);
6183                 sg = tmp;
6184         } while (sg != first);
6185 }
6186
6187 static void free_sched_domain(struct rcu_head *rcu)
6188 {
6189         struct sched_domain *sd = container_of(rcu, struct sched_domain, rcu);
6190
6191         /*
6192          * If its an overlapping domain it has private groups, iterate and
6193          * nuke them all.
6194          */
6195         if (sd->flags & SD_OVERLAP) {
6196                 free_sched_groups(sd->groups, 1);
6197         } else if (atomic_dec_and_test(&sd->groups->ref)) {
6198                 kfree(sd->groups->sgc);
6199                 kfree(sd->groups);
6200         }
6201         kfree(sd);
6202 }
6203
6204 static void destroy_sched_domain(struct sched_domain *sd, int cpu)
6205 {
6206         call_rcu(&sd->rcu, free_sched_domain);
6207 }
6208
6209 static void destroy_sched_domains(struct sched_domain *sd, int cpu)
6210 {
6211         for (; sd; sd = sd->parent)
6212                 destroy_sched_domain(sd, cpu);
6213 }
6214
6215 /*
6216  * Keep a special pointer to the highest sched_domain that has
6217  * SD_SHARE_PKG_RESOURCE set (Last Level Cache Domain) for this
6218  * allows us to avoid some pointer chasing select_idle_sibling().
6219  *
6220  * Also keep a unique ID per domain (we use the first cpu number in
6221  * the cpumask of the domain), this allows us to quickly tell if
6222  * two cpus are in the same cache domain, see cpus_share_cache().
6223  */
6224 DEFINE_PER_CPU(struct sched_domain *, sd_llc);
6225 DEFINE_PER_CPU(int, sd_llc_size);
6226 DEFINE_PER_CPU(int, sd_llc_id);
6227 DEFINE_PER_CPU(struct sched_domain *, sd_numa);
6228 DEFINE_PER_CPU(struct sched_domain *, sd_busy);
6229 DEFINE_PER_CPU(struct sched_domain *, sd_asym);
6230 DEFINE_PER_CPU(struct sched_domain *, sd_ea);
6231 DEFINE_PER_CPU(struct sched_domain *, sd_scs);
6232
6233 static void update_top_cache_domain(int cpu)
6234 {
6235         struct sched_domain *sd;
6236         struct sched_domain *busy_sd = NULL, *ea_sd = NULL;
6237         int id = cpu;
6238         int size = 1;
6239
6240         sd = highest_flag_domain(cpu, SD_SHARE_PKG_RESOURCES);
6241         if (sd) {
6242                 id = cpumask_first(sched_domain_span(sd));
6243                 size = cpumask_weight(sched_domain_span(sd));
6244                 busy_sd = sd->parent; /* sd_busy */
6245         }
6246         rcu_assign_pointer(per_cpu(sd_busy, cpu), busy_sd);
6247
6248         rcu_assign_pointer(per_cpu(sd_llc, cpu), sd);
6249         per_cpu(sd_llc_size, cpu) = size;
6250         per_cpu(sd_llc_id, cpu) = id;
6251
6252         sd = lowest_flag_domain(cpu, SD_NUMA);
6253         rcu_assign_pointer(per_cpu(sd_numa, cpu), sd);
6254
6255         sd = highest_flag_domain(cpu, SD_ASYM_PACKING);
6256         rcu_assign_pointer(per_cpu(sd_asym, cpu), sd);
6257
6258         for_each_domain(cpu, sd) {
6259                 if (sd->groups->sge)
6260                         ea_sd = sd;
6261                 else
6262                         break;
6263         }
6264         rcu_assign_pointer(per_cpu(sd_ea, cpu), ea_sd);
6265
6266         sd = highest_flag_domain(cpu, SD_SHARE_CAP_STATES);
6267         rcu_assign_pointer(per_cpu(sd_scs, cpu), sd);
6268 }
6269
6270 /*
6271  * Attach the domain 'sd' to 'cpu' as its base domain. Callers must
6272  * hold the hotplug lock.
6273  */
6274 static void
6275 cpu_attach_domain(struct sched_domain *sd, struct root_domain *rd, int cpu)
6276 {
6277         struct rq *rq = cpu_rq(cpu);
6278         struct sched_domain *tmp;
6279
6280         /* Remove the sched domains which do not contribute to scheduling. */
6281         for (tmp = sd; tmp; ) {
6282                 struct sched_domain *parent = tmp->parent;
6283                 if (!parent)
6284                         break;
6285
6286                 if (sd_parent_degenerate(tmp, parent)) {
6287                         tmp->parent = parent->parent;
6288                         if (parent->parent)
6289                                 parent->parent->child = tmp;
6290                         /*
6291                          * Transfer SD_PREFER_SIBLING down in case of a
6292                          * degenerate parent; the spans match for this
6293                          * so the property transfers.
6294                          */
6295                         if (parent->flags & SD_PREFER_SIBLING)
6296                                 tmp->flags |= SD_PREFER_SIBLING;
6297                         destroy_sched_domain(parent, cpu);
6298                 } else
6299                         tmp = tmp->parent;
6300         }
6301
6302         if (sd && sd_degenerate(sd)) {
6303                 tmp = sd;
6304                 sd = sd->parent;
6305                 destroy_sched_domain(tmp, cpu);
6306                 if (sd)
6307                         sd->child = NULL;
6308         }
6309
6310         sched_domain_debug(sd, cpu);
6311
6312         rq_attach_root(rq, rd);
6313         tmp = rq->sd;
6314         rcu_assign_pointer(rq->sd, sd);
6315         destroy_sched_domains(tmp, cpu);
6316
6317         update_top_cache_domain(cpu);
6318 }
6319
6320 /* Setup the mask of cpus configured for isolated domains */
6321 static int __init isolated_cpu_setup(char *str)
6322 {
6323         alloc_bootmem_cpumask_var(&cpu_isolated_map);
6324         cpulist_parse(str, cpu_isolated_map);
6325         return 1;
6326 }
6327
6328 __setup("isolcpus=", isolated_cpu_setup);
6329
6330 struct s_data {
6331         struct sched_domain ** __percpu sd;
6332         struct root_domain      *rd;
6333 };
6334
6335 enum s_alloc {
6336         sa_rootdomain,
6337         sa_sd,
6338         sa_sd_storage,
6339         sa_none,
6340 };
6341
6342 /*
6343  * Build an iteration mask that can exclude certain CPUs from the upwards
6344  * domain traversal.
6345  *
6346  * Only CPUs that can arrive at this group should be considered to continue
6347  * balancing.
6348  *
6349  * Asymmetric node setups can result in situations where the domain tree is of
6350  * unequal depth, make sure to skip domains that already cover the entire
6351  * range.
6352  *
6353  * In that case build_sched_domains() will have terminated the iteration early
6354  * and our sibling sd spans will be empty. Domains should always include the
6355  * cpu they're built on, so check that.
6356  *
6357  */
6358 static void build_group_mask(struct sched_domain *sd, struct sched_group *sg)
6359 {
6360         const struct cpumask *sg_span = sched_group_cpus(sg);
6361         struct sd_data *sdd = sd->private;
6362         struct sched_domain *sibling;
6363         int i;
6364
6365         for_each_cpu(i, sg_span) {
6366                 sibling = *per_cpu_ptr(sdd->sd, i);
6367
6368                 /*
6369                  * Can happen in the asymmetric case, where these siblings are
6370                  * unused. The mask will not be empty because those CPUs that
6371                  * do have the top domain _should_ span the domain.
6372                  */
6373                 if (!sibling->child)
6374                         continue;
6375
6376                 /* If we would not end up here, we can't continue from here */
6377                 if (!cpumask_equal(sg_span, sched_domain_span(sibling->child)))
6378                         continue;
6379
6380                 cpumask_set_cpu(i, sched_group_mask(sg));
6381         }
6382
6383         /* We must not have empty masks here */
6384         WARN_ON_ONCE(cpumask_empty(sched_group_mask(sg)));
6385 }
6386
6387 /*
6388  * Return the canonical balance cpu for this group, this is the first cpu
6389  * of this group that's also in the iteration mask.
6390  */
6391 int group_balance_cpu(struct sched_group *sg)
6392 {
6393         return cpumask_first_and(sched_group_cpus(sg), sched_group_mask(sg));
6394 }
6395
6396 static int
6397 build_overlap_sched_groups(struct sched_domain *sd, int cpu)
6398 {
6399         struct sched_group *first = NULL, *last = NULL, *groups = NULL, *sg;
6400         const struct cpumask *span = sched_domain_span(sd);
6401         struct cpumask *covered = sched_domains_tmpmask;
6402         struct sd_data *sdd = sd->private;
6403         struct sched_domain *sibling;
6404         int i;
6405
6406         cpumask_clear(covered);
6407
6408         for_each_cpu(i, span) {
6409                 struct cpumask *sg_span;
6410
6411                 if (cpumask_test_cpu(i, covered))
6412                         continue;
6413
6414                 sibling = *per_cpu_ptr(sdd->sd, i);
6415
6416                 /* See the comment near build_group_mask(). */
6417                 if (!cpumask_test_cpu(i, sched_domain_span(sibling)))
6418                         continue;
6419
6420                 sg = kzalloc_node(sizeof(struct sched_group) + cpumask_size(),
6421                                 GFP_KERNEL, cpu_to_node(cpu));
6422
6423                 if (!sg)
6424                         goto fail;
6425
6426                 sg_span = sched_group_cpus(sg);
6427                 if (sibling->child)
6428                         cpumask_copy(sg_span, sched_domain_span(sibling->child));
6429                 else
6430                         cpumask_set_cpu(i, sg_span);
6431
6432                 cpumask_or(covered, covered, sg_span);
6433
6434                 sg->sgc = *per_cpu_ptr(sdd->sgc, i);
6435                 if (atomic_inc_return(&sg->sgc->ref) == 1)
6436                         build_group_mask(sd, sg);
6437
6438                 /*
6439                  * Initialize sgc->capacity such that even if we mess up the
6440                  * domains and no possible iteration will get us here, we won't
6441                  * die on a /0 trap.
6442                  */
6443                 sg->sgc->capacity = SCHED_CAPACITY_SCALE * cpumask_weight(sg_span);
6444                 sg->sgc->max_capacity = SCHED_CAPACITY_SCALE;
6445                 sg->sgc->min_capacity = SCHED_CAPACITY_SCALE;
6446
6447                 /*
6448                  * Make sure the first group of this domain contains the
6449                  * canonical balance cpu. Otherwise the sched_domain iteration
6450                  * breaks. See update_sg_lb_stats().
6451                  */
6452                 if ((!groups && cpumask_test_cpu(cpu, sg_span)) ||
6453                     group_balance_cpu(sg) == cpu)
6454                         groups = sg;
6455
6456                 if (!first)
6457                         first = sg;
6458                 if (last)
6459                         last->next = sg;
6460                 last = sg;
6461                 last->next = first;
6462         }
6463         sd->groups = groups;
6464
6465         return 0;
6466
6467 fail:
6468         free_sched_groups(first, 0);
6469
6470         return -ENOMEM;
6471 }
6472
6473 static int get_group(int cpu, struct sd_data *sdd, struct sched_group **sg)
6474 {
6475         struct sched_domain *sd = *per_cpu_ptr(sdd->sd, cpu);
6476         struct sched_domain *child = sd->child;
6477
6478         if (child)
6479                 cpu = cpumask_first(sched_domain_span(child));
6480
6481         if (sg) {
6482                 *sg = *per_cpu_ptr(sdd->sg, cpu);
6483                 (*sg)->sgc = *per_cpu_ptr(sdd->sgc, cpu);
6484                 atomic_set(&(*sg)->sgc->ref, 1); /* for claim_allocations */
6485         }
6486
6487         return cpu;
6488 }
6489
6490 /*
6491  * build_sched_groups will build a circular linked list of the groups
6492  * covered by the given span, and will set each group's ->cpumask correctly,
6493  * and ->cpu_capacity to 0.
6494  *
6495  * Assumes the sched_domain tree is fully constructed
6496  */
6497 static int
6498 build_sched_groups(struct sched_domain *sd, int cpu)
6499 {
6500         struct sched_group *first = NULL, *last = NULL;
6501         struct sd_data *sdd = sd->private;
6502         const struct cpumask *span = sched_domain_span(sd);
6503         struct cpumask *covered;
6504         int i;
6505
6506         get_group(cpu, sdd, &sd->groups);
6507         atomic_inc(&sd->groups->ref);
6508
6509         if (cpu != cpumask_first(span))
6510                 return 0;
6511
6512         lockdep_assert_held(&sched_domains_mutex);
6513         covered = sched_domains_tmpmask;
6514
6515         cpumask_clear(covered);
6516
6517         for_each_cpu(i, span) {
6518                 struct sched_group *sg;
6519                 int group, j;
6520
6521                 if (cpumask_test_cpu(i, covered))
6522                         continue;
6523
6524                 group = get_group(i, sdd, &sg);
6525                 cpumask_setall(sched_group_mask(sg));
6526
6527                 for_each_cpu(j, span) {
6528                         if (get_group(j, sdd, NULL) != group)
6529                                 continue;
6530
6531                         cpumask_set_cpu(j, covered);
6532                         cpumask_set_cpu(j, sched_group_cpus(sg));
6533                 }
6534
6535                 if (!first)
6536                         first = sg;
6537                 if (last)
6538                         last->next = sg;
6539                 last = sg;
6540         }
6541         last->next = first;
6542
6543         return 0;
6544 }
6545
6546 /*
6547  * Initialize sched groups cpu_capacity.
6548  *
6549  * cpu_capacity indicates the capacity of sched group, which is used while
6550  * distributing the load between different sched groups in a sched domain.
6551  * Typically cpu_capacity for all the groups in a sched domain will be same
6552  * unless there are asymmetries in the topology. If there are asymmetries,
6553  * group having more cpu_capacity will pickup more load compared to the
6554  * group having less cpu_capacity.
6555  */
6556 static void init_sched_groups_capacity(int cpu, struct sched_domain *sd)
6557 {
6558         struct sched_group *sg = sd->groups;
6559
6560         WARN_ON(!sg);
6561
6562         do {
6563                 sg->group_weight = cpumask_weight(sched_group_cpus(sg));
6564                 sg = sg->next;
6565         } while (sg != sd->groups);
6566
6567         if (cpu != group_balance_cpu(sg))
6568                 return;
6569
6570         update_group_capacity(sd, cpu);
6571         atomic_set(&sg->sgc->nr_busy_cpus, sg->group_weight);
6572 }
6573
6574 /*
6575  * Check that the per-cpu provided sd energy data is consistent for all cpus
6576  * within the mask.
6577  */
6578 static inline void check_sched_energy_data(int cpu, sched_domain_energy_f fn,
6579                                            const struct cpumask *cpumask)
6580 {
6581         const struct sched_group_energy * const sge = fn(cpu);
6582         struct cpumask mask;
6583         int i;
6584
6585         if (cpumask_weight(cpumask) <= 1)
6586                 return;
6587
6588         cpumask_xor(&mask, cpumask, get_cpu_mask(cpu));
6589
6590         for_each_cpu(i, &mask) {
6591                 const struct sched_group_energy * const e = fn(i);
6592                 int y;
6593
6594                 BUG_ON(e->nr_idle_states != sge->nr_idle_states);
6595
6596                 for (y = 0; y < (e->nr_idle_states); y++) {
6597                         BUG_ON(e->idle_states[y].power !=
6598                                         sge->idle_states[y].power);
6599                 }
6600
6601                 BUG_ON(e->nr_cap_states != sge->nr_cap_states);
6602
6603                 for (y = 0; y < (e->nr_cap_states); y++) {
6604                         BUG_ON(e->cap_states[y].cap != sge->cap_states[y].cap);
6605                         BUG_ON(e->cap_states[y].power !=
6606                                         sge->cap_states[y].power);
6607                 }
6608         }
6609 }
6610
6611 static void init_sched_energy(int cpu, struct sched_domain *sd,
6612                               sched_domain_energy_f fn)
6613 {
6614         if (!(fn && fn(cpu)))
6615                 return;
6616
6617         if (cpu != group_balance_cpu(sd->groups))
6618                 return;
6619
6620         if (sd->child && !sd->child->groups->sge) {
6621                 pr_err("BUG: EAS setup broken for CPU%d\n", cpu);
6622 #ifdef CONFIG_SCHED_DEBUG
6623                 pr_err("     energy data on %s but not on %s domain\n",
6624                         sd->name, sd->child->name);
6625 #endif
6626                 return;
6627         }
6628
6629         check_sched_energy_data(cpu, fn, sched_group_cpus(sd->groups));
6630
6631         sd->groups->sge = fn(cpu);
6632 }
6633
6634 /*
6635  * Initializers for schedule domains
6636  * Non-inlined to reduce accumulated stack pressure in build_sched_domains()
6637  */
6638
6639 static int default_relax_domain_level = -1;
6640 int sched_domain_level_max;
6641
6642 static int __init setup_relax_domain_level(char *str)
6643 {
6644         if (kstrtoint(str, 0, &default_relax_domain_level))
6645                 pr_warn("Unable to set relax_domain_level\n");
6646
6647         return 1;
6648 }
6649 __setup("relax_domain_level=", setup_relax_domain_level);
6650
6651 static void set_domain_attribute(struct sched_domain *sd,
6652                                  struct sched_domain_attr *attr)
6653 {
6654         int request;
6655
6656         if (!attr || attr->relax_domain_level < 0) {
6657                 if (default_relax_domain_level < 0)
6658                         return;
6659                 else
6660                         request = default_relax_domain_level;
6661         } else
6662                 request = attr->relax_domain_level;
6663         if (request < sd->level) {
6664                 /* turn off idle balance on this domain */
6665                 sd->flags &= ~(SD_BALANCE_WAKE|SD_BALANCE_NEWIDLE);
6666         } else {
6667                 /* turn on idle balance on this domain */
6668                 sd->flags |= (SD_BALANCE_WAKE|SD_BALANCE_NEWIDLE);
6669         }
6670 }
6671
6672 static void __sdt_free(const struct cpumask *cpu_map);
6673 static int __sdt_alloc(const struct cpumask *cpu_map);
6674
6675 static void __free_domain_allocs(struct s_data *d, enum s_alloc what,
6676                                  const struct cpumask *cpu_map)
6677 {
6678         switch (what) {
6679         case sa_rootdomain:
6680                 if (!atomic_read(&d->rd->refcount))
6681                         free_rootdomain(&d->rd->rcu); /* fall through */
6682         case sa_sd:
6683                 free_percpu(d->sd); /* fall through */
6684         case sa_sd_storage:
6685                 __sdt_free(cpu_map); /* fall through */
6686         case sa_none:
6687                 break;
6688         }
6689 }
6690
6691 static enum s_alloc __visit_domain_allocation_hell(struct s_data *d,
6692                                                    const struct cpumask *cpu_map)
6693 {
6694         memset(d, 0, sizeof(*d));
6695
6696         if (__sdt_alloc(cpu_map))
6697                 return sa_sd_storage;
6698         d->sd = alloc_percpu(struct sched_domain *);
6699         if (!d->sd)
6700                 return sa_sd_storage;
6701         d->rd = alloc_rootdomain();
6702         if (!d->rd)
6703                 return sa_sd;
6704         return sa_rootdomain;
6705 }
6706
6707 /*
6708  * NULL the sd_data elements we've used to build the sched_domain and
6709  * sched_group structure so that the subsequent __free_domain_allocs()
6710  * will not free the data we're using.
6711  */
6712 static void claim_allocations(int cpu, struct sched_domain *sd)
6713 {
6714         struct sd_data *sdd = sd->private;
6715
6716         WARN_ON_ONCE(*per_cpu_ptr(sdd->sd, cpu) != sd);
6717         *per_cpu_ptr(sdd->sd, cpu) = NULL;
6718
6719         if (atomic_read(&(*per_cpu_ptr(sdd->sg, cpu))->ref))
6720                 *per_cpu_ptr(sdd->sg, cpu) = NULL;
6721
6722         if (atomic_read(&(*per_cpu_ptr(sdd->sgc, cpu))->ref))
6723                 *per_cpu_ptr(sdd->sgc, cpu) = NULL;
6724 }
6725
6726 #ifdef CONFIG_NUMA
6727 static int sched_domains_numa_levels;
6728 enum numa_topology_type sched_numa_topology_type;
6729 static int *sched_domains_numa_distance;
6730 int sched_max_numa_distance;
6731 static struct cpumask ***sched_domains_numa_masks;
6732 static int sched_domains_curr_level;
6733 #endif
6734
6735 /*
6736  * SD_flags allowed in topology descriptions.
6737  *
6738  * These flags are purely descriptive of the topology and do not prescribe
6739  * behaviour. Behaviour is artificial and mapped in the below sd_init()
6740  * function:
6741  *
6742  *   SD_SHARE_CPUCAPACITY   - describes SMT topologies
6743  *   SD_SHARE_PKG_RESOURCES - describes shared caches
6744  *   SD_NUMA                - describes NUMA topologies
6745  *   SD_SHARE_POWERDOMAIN   - describes shared power domain
6746  *   SD_ASYM_CPUCAPACITY    - describes mixed capacity topologies
6747  *   SD_SHARE_CAP_STATES    - describes shared capacity states
6748  *
6749  * Odd one out, which beside describing the topology has a quirk also
6750  * prescribes the desired behaviour that goes along with it:
6751  *
6752  * Odd one out:
6753  * SD_ASYM_PACKING        - describes SMT quirks
6754  */
6755 #define TOPOLOGY_SD_FLAGS               \
6756         (SD_SHARE_CPUCAPACITY |         \
6757          SD_SHARE_PKG_RESOURCES |       \
6758          SD_NUMA |                      \
6759          SD_ASYM_PACKING |              \
6760          SD_ASYM_CPUCAPACITY |          \
6761          SD_SHARE_POWERDOMAIN |         \
6762          SD_SHARE_CAP_STATES)
6763
6764 static struct sched_domain *
6765 sd_init(struct sched_domain_topology_level *tl,
6766         struct sched_domain *child, int cpu)
6767 {
6768         struct sched_domain *sd = *per_cpu_ptr(tl->data.sd, cpu);
6769         int sd_weight, sd_flags = 0;
6770
6771 #ifdef CONFIG_NUMA
6772         /*
6773          * Ugly hack to pass state to sd_numa_mask()...
6774          */
6775         sched_domains_curr_level = tl->numa_level;
6776 #endif
6777
6778         sd_weight = cpumask_weight(tl->mask(cpu));
6779
6780         if (tl->sd_flags)
6781                 sd_flags = (*tl->sd_flags)();
6782         if (WARN_ONCE(sd_flags & ~TOPOLOGY_SD_FLAGS,
6783                         "wrong sd_flags in topology description\n"))
6784                 sd_flags &= ~TOPOLOGY_SD_FLAGS;
6785
6786         *sd = (struct sched_domain){
6787                 .min_interval           = sd_weight,
6788                 .max_interval           = 2*sd_weight,
6789                 .busy_factor            = 32,
6790                 .imbalance_pct          = 125,
6791
6792                 .cache_nice_tries       = 0,
6793                 .busy_idx               = 0,
6794                 .idle_idx               = 0,
6795                 .newidle_idx            = 0,
6796                 .wake_idx               = 0,
6797                 .forkexec_idx           = 0,
6798
6799                 .flags                  = 1*SD_LOAD_BALANCE
6800                                         | 1*SD_BALANCE_NEWIDLE
6801                                         | 1*SD_BALANCE_EXEC
6802                                         | 1*SD_BALANCE_FORK
6803                                         | 0*SD_BALANCE_WAKE
6804                                         | 1*SD_WAKE_AFFINE
6805                                         | 0*SD_SHARE_CPUCAPACITY
6806                                         | 0*SD_SHARE_PKG_RESOURCES
6807                                         | 0*SD_SERIALIZE
6808                                         | 0*SD_PREFER_SIBLING
6809                                         | 0*SD_NUMA
6810                                         | sd_flags
6811                                         ,
6812
6813                 .last_balance           = jiffies,
6814                 .balance_interval       = sd_weight,
6815                 .smt_gain               = 0,
6816                 .max_newidle_lb_cost    = 0,
6817                 .next_decay_max_lb_cost = jiffies,
6818                 .child                  = child,
6819 #ifdef CONFIG_SCHED_DEBUG
6820                 .name                   = tl->name,
6821 #endif
6822         };
6823
6824         /*
6825          * Convert topological properties into behaviour.
6826          */
6827
6828         if (sd->flags & SD_ASYM_CPUCAPACITY) {
6829                 struct sched_domain *t = sd;
6830
6831                 for_each_lower_domain(t)
6832                         t->flags |= SD_BALANCE_WAKE;
6833         }
6834
6835         if (sd->flags & SD_SHARE_CPUCAPACITY) {
6836                 sd->flags |= SD_PREFER_SIBLING;
6837                 sd->imbalance_pct = 110;
6838                 sd->smt_gain = 1178; /* ~15% */
6839
6840         } else if (sd->flags & SD_SHARE_PKG_RESOURCES) {
6841                 sd->imbalance_pct = 117;
6842                 sd->cache_nice_tries = 1;
6843                 sd->busy_idx = 2;
6844
6845 #ifdef CONFIG_NUMA
6846         } else if (sd->flags & SD_NUMA) {
6847                 sd->cache_nice_tries = 2;
6848                 sd->busy_idx = 3;
6849                 sd->idle_idx = 2;
6850
6851                 sd->flags |= SD_SERIALIZE;
6852                 if (sched_domains_numa_distance[tl->numa_level] > RECLAIM_DISTANCE) {
6853                         sd->flags &= ~(SD_BALANCE_EXEC |
6854                                        SD_BALANCE_FORK |
6855                                        SD_WAKE_AFFINE);
6856                 }
6857
6858 #endif
6859         } else {
6860                 sd->flags |= SD_PREFER_SIBLING;
6861                 sd->cache_nice_tries = 1;
6862                 sd->busy_idx = 2;
6863                 sd->idle_idx = 1;
6864         }
6865
6866         sd->private = &tl->data;
6867
6868         return sd;
6869 }
6870
6871 /*
6872  * Topology list, bottom-up.
6873  */
6874 static struct sched_domain_topology_level default_topology[] = {
6875 #ifdef CONFIG_SCHED_SMT
6876         { cpu_smt_mask, cpu_smt_flags, SD_INIT_NAME(SMT) },
6877 #endif
6878 #ifdef CONFIG_SCHED_MC
6879         { cpu_coregroup_mask, cpu_core_flags, SD_INIT_NAME(MC) },
6880 #endif
6881         { cpu_cpu_mask, SD_INIT_NAME(DIE) },
6882         { NULL, },
6883 };
6884
6885 static struct sched_domain_topology_level *sched_domain_topology =
6886         default_topology;
6887
6888 #define for_each_sd_topology(tl)                        \
6889         for (tl = sched_domain_topology; tl->mask; tl++)
6890
6891 void set_sched_topology(struct sched_domain_topology_level *tl)
6892 {
6893         sched_domain_topology = tl;
6894 }
6895
6896 #ifdef CONFIG_NUMA
6897
6898 static const struct cpumask *sd_numa_mask(int cpu)
6899 {
6900         return sched_domains_numa_masks[sched_domains_curr_level][cpu_to_node(cpu)];
6901 }
6902
6903 static void sched_numa_warn(const char *str)
6904 {
6905         static int done = false;
6906         int i,j;
6907
6908         if (done)
6909                 return;
6910
6911         done = true;
6912
6913         printk(KERN_WARNING "ERROR: %s\n\n", str);
6914
6915         for (i = 0; i < nr_node_ids; i++) {
6916                 printk(KERN_WARNING "  ");
6917                 for (j = 0; j < nr_node_ids; j++)
6918                         printk(KERN_CONT "%02d ", node_distance(i,j));
6919                 printk(KERN_CONT "\n");
6920         }
6921         printk(KERN_WARNING "\n");
6922 }
6923
6924 bool find_numa_distance(int distance)
6925 {
6926         int i;
6927
6928         if (distance == node_distance(0, 0))
6929                 return true;
6930
6931         for (i = 0; i < sched_domains_numa_levels; i++) {
6932                 if (sched_domains_numa_distance[i] == distance)
6933                         return true;
6934         }
6935
6936         return false;
6937 }
6938
6939 /*
6940  * A system can have three types of NUMA topology:
6941  * NUMA_DIRECT: all nodes are directly connected, or not a NUMA system
6942  * NUMA_GLUELESS_MESH: some nodes reachable through intermediary nodes
6943  * NUMA_BACKPLANE: nodes can reach other nodes through a backplane
6944  *
6945  * The difference between a glueless mesh topology and a backplane
6946  * topology lies in whether communication between not directly
6947  * connected nodes goes through intermediary nodes (where programs
6948  * could run), or through backplane controllers. This affects
6949  * placement of programs.
6950  *
6951  * The type of topology can be discerned with the following tests:
6952  * - If the maximum distance between any nodes is 1 hop, the system
6953  *   is directly connected.
6954  * - If for two nodes A and B, located N > 1 hops away from each other,
6955  *   there is an intermediary node C, which is < N hops away from both
6956  *   nodes A and B, the system is a glueless mesh.
6957  */
6958 static void init_numa_topology_type(void)
6959 {
6960         int a, b, c, n;
6961
6962         n = sched_max_numa_distance;
6963
6964         if (sched_domains_numa_levels <= 1) {
6965                 sched_numa_topology_type = NUMA_DIRECT;
6966                 return;
6967         }
6968
6969         for_each_online_node(a) {
6970                 for_each_online_node(b) {
6971                         /* Find two nodes furthest removed from each other. */
6972                         if (node_distance(a, b) < n)
6973                                 continue;
6974
6975                         /* Is there an intermediary node between a and b? */
6976                         for_each_online_node(c) {
6977                                 if (node_distance(a, c) < n &&
6978                                     node_distance(b, c) < n) {
6979                                         sched_numa_topology_type =
6980                                                         NUMA_GLUELESS_MESH;
6981                                         return;
6982                                 }
6983                         }
6984
6985                         sched_numa_topology_type = NUMA_BACKPLANE;
6986                         return;
6987                 }
6988         }
6989 }
6990
6991 static void sched_init_numa(void)
6992 {
6993         int next_distance, curr_distance = node_distance(0, 0);
6994         struct sched_domain_topology_level *tl;
6995         int level = 0;
6996         int i, j, k;
6997
6998         sched_domains_numa_distance = kzalloc(sizeof(int) * nr_node_ids, GFP_KERNEL);
6999         if (!sched_domains_numa_distance)
7000                 return;
7001
7002         /*
7003          * O(nr_nodes^2) deduplicating selection sort -- in order to find the
7004          * unique distances in the node_distance() table.
7005          *
7006          * Assumes node_distance(0,j) includes all distances in
7007          * node_distance(i,j) in order to avoid cubic time.
7008          */
7009         next_distance = curr_distance;
7010         for (i = 0; i < nr_node_ids; i++) {
7011                 for (j = 0; j < nr_node_ids; j++) {
7012                         for (k = 0; k < nr_node_ids; k++) {
7013                                 int distance = node_distance(i, k);
7014
7015                                 if (distance > curr_distance &&
7016                                     (distance < next_distance ||
7017                                      next_distance == curr_distance))
7018                                         next_distance = distance;
7019
7020                                 /*
7021                                  * While not a strong assumption it would be nice to know
7022                                  * about cases where if node A is connected to B, B is not
7023                                  * equally connected to A.
7024                                  */
7025                                 if (sched_debug() && node_distance(k, i) != distance)
7026                                         sched_numa_warn("Node-distance not symmetric");
7027
7028                                 if (sched_debug() && i && !find_numa_distance(distance))
7029                                         sched_numa_warn("Node-0 not representative");
7030                         }
7031                         if (next_distance != curr_distance) {
7032                                 sched_domains_numa_distance[level++] = next_distance;
7033                                 sched_domains_numa_levels = level;
7034                                 curr_distance = next_distance;
7035                         } else break;
7036                 }
7037
7038                 /*
7039                  * In case of sched_debug() we verify the above assumption.
7040                  */
7041                 if (!sched_debug())
7042                         break;
7043         }
7044
7045         if (!level)
7046                 return;
7047
7048         /*
7049          * 'level' contains the number of unique distances, excluding the
7050          * identity distance node_distance(i,i).
7051          *
7052          * The sched_domains_numa_distance[] array includes the actual distance
7053          * numbers.
7054          */
7055
7056         /*
7057          * Here, we should temporarily reset sched_domains_numa_levels to 0.
7058          * If it fails to allocate memory for array sched_domains_numa_masks[][],
7059          * the array will contain less then 'level' members. This could be
7060          * dangerous when we use it to iterate array sched_domains_numa_masks[][]
7061          * in other functions.
7062          *
7063          * We reset it to 'level' at the end of this function.
7064          */
7065         sched_domains_numa_levels = 0;
7066
7067         sched_domains_numa_masks = kzalloc(sizeof(void *) * level, GFP_KERNEL);
7068         if (!sched_domains_numa_masks)
7069                 return;
7070
7071         /*
7072          * Now for each level, construct a mask per node which contains all
7073          * cpus of nodes that are that many hops away from us.
7074          */
7075         for (i = 0; i < level; i++) {
7076                 sched_domains_numa_masks[i] =
7077                         kzalloc(nr_node_ids * sizeof(void *), GFP_KERNEL);
7078                 if (!sched_domains_numa_masks[i])
7079                         return;
7080
7081                 for (j = 0; j < nr_node_ids; j++) {
7082                         struct cpumask *mask = kzalloc(cpumask_size(), GFP_KERNEL);
7083                         if (!mask)
7084                                 return;
7085
7086                         sched_domains_numa_masks[i][j] = mask;
7087
7088                         for_each_node(k) {
7089                                 if (node_distance(j, k) > sched_domains_numa_distance[i])
7090                                         continue;
7091
7092                                 cpumask_or(mask, mask, cpumask_of_node(k));
7093                         }
7094                 }
7095         }
7096
7097         /* Compute default topology size */
7098         for (i = 0; sched_domain_topology[i].mask; i++);
7099
7100         tl = kzalloc((i + level + 1) *
7101                         sizeof(struct sched_domain_topology_level), GFP_KERNEL);
7102         if (!tl)
7103                 return;
7104
7105         /*
7106          * Copy the default topology bits..
7107          */
7108         for (i = 0; sched_domain_topology[i].mask; i++)
7109                 tl[i] = sched_domain_topology[i];
7110
7111         /*
7112          * .. and append 'j' levels of NUMA goodness.
7113          */
7114         for (j = 0; j < level; i++, j++) {
7115                 tl[i] = (struct sched_domain_topology_level){
7116                         .mask = sd_numa_mask,
7117                         .sd_flags = cpu_numa_flags,
7118                         .flags = SDTL_OVERLAP,
7119                         .numa_level = j,
7120                         SD_INIT_NAME(NUMA)
7121                 };
7122         }
7123
7124         sched_domain_topology = tl;
7125
7126         sched_domains_numa_levels = level;
7127         sched_max_numa_distance = sched_domains_numa_distance[level - 1];
7128
7129         init_numa_topology_type();
7130 }
7131
7132 static void sched_domains_numa_masks_set(int cpu)
7133 {
7134         int i, j;
7135         int node = cpu_to_node(cpu);
7136
7137         for (i = 0; i < sched_domains_numa_levels; i++) {
7138                 for (j = 0; j < nr_node_ids; j++) {
7139                         if (node_distance(j, node) <= sched_domains_numa_distance[i])
7140                                 cpumask_set_cpu(cpu, sched_domains_numa_masks[i][j]);
7141                 }
7142         }
7143 }
7144
7145 static void sched_domains_numa_masks_clear(int cpu)
7146 {
7147         int i, j;
7148         for (i = 0; i < sched_domains_numa_levels; i++) {
7149                 for (j = 0; j < nr_node_ids; j++)
7150                         cpumask_clear_cpu(cpu, sched_domains_numa_masks[i][j]);
7151         }
7152 }
7153
7154 /*
7155  * Update sched_domains_numa_masks[level][node] array when new cpus
7156  * are onlined.
7157  */
7158 static int sched_domains_numa_masks_update(struct notifier_block *nfb,
7159                                            unsigned long action,
7160                                            void *hcpu)
7161 {
7162         int cpu = (long)hcpu;
7163
7164         switch (action & ~CPU_TASKS_FROZEN) {
7165         case CPU_ONLINE:
7166                 sched_domains_numa_masks_set(cpu);
7167                 break;
7168
7169         case CPU_DEAD:
7170                 sched_domains_numa_masks_clear(cpu);
7171                 break;
7172
7173         default:
7174                 return NOTIFY_DONE;
7175         }
7176
7177         return NOTIFY_OK;
7178 }
7179 #else
7180 static inline void sched_init_numa(void)
7181 {
7182 }
7183
7184 static int sched_domains_numa_masks_update(struct notifier_block *nfb,
7185                                            unsigned long action,
7186                                            void *hcpu)
7187 {
7188         return 0;
7189 }
7190 #endif /* CONFIG_NUMA */
7191
7192 static int __sdt_alloc(const struct cpumask *cpu_map)
7193 {
7194         struct sched_domain_topology_level *tl;
7195         int j;
7196
7197         for_each_sd_topology(tl) {
7198                 struct sd_data *sdd = &tl->data;
7199
7200                 sdd->sd = alloc_percpu(struct sched_domain *);
7201                 if (!sdd->sd)
7202                         return -ENOMEM;
7203
7204                 sdd->sg = alloc_percpu(struct sched_group *);
7205                 if (!sdd->sg)
7206                         return -ENOMEM;
7207
7208                 sdd->sgc = alloc_percpu(struct sched_group_capacity *);
7209                 if (!sdd->sgc)
7210                         return -ENOMEM;
7211
7212                 for_each_cpu(j, cpu_map) {
7213                         struct sched_domain *sd;
7214                         struct sched_group *sg;
7215                         struct sched_group_capacity *sgc;
7216
7217                         sd = kzalloc_node(sizeof(struct sched_domain) + cpumask_size(),
7218                                         GFP_KERNEL, cpu_to_node(j));
7219                         if (!sd)
7220                                 return -ENOMEM;
7221
7222                         *per_cpu_ptr(sdd->sd, j) = sd;
7223
7224                         sg = kzalloc_node(sizeof(struct sched_group) + cpumask_size(),
7225                                         GFP_KERNEL, cpu_to_node(j));
7226                         if (!sg)
7227                                 return -ENOMEM;
7228
7229                         sg->next = sg;
7230
7231                         *per_cpu_ptr(sdd->sg, j) = sg;
7232
7233                         sgc = kzalloc_node(sizeof(struct sched_group_capacity) + cpumask_size(),
7234                                         GFP_KERNEL, cpu_to_node(j));
7235                         if (!sgc)
7236                                 return -ENOMEM;
7237
7238                         *per_cpu_ptr(sdd->sgc, j) = sgc;
7239                 }
7240         }
7241
7242         return 0;
7243 }
7244
7245 static void __sdt_free(const struct cpumask *cpu_map)
7246 {
7247         struct sched_domain_topology_level *tl;
7248         int j;
7249
7250         for_each_sd_topology(tl) {
7251                 struct sd_data *sdd = &tl->data;
7252
7253                 for_each_cpu(j, cpu_map) {
7254                         struct sched_domain *sd;
7255
7256                         if (sdd->sd) {
7257                                 sd = *per_cpu_ptr(sdd->sd, j);
7258                                 if (sd && (sd->flags & SD_OVERLAP))
7259                                         free_sched_groups(sd->groups, 0);
7260                                 kfree(*per_cpu_ptr(sdd->sd, j));
7261                         }
7262
7263                         if (sdd->sg)
7264                                 kfree(*per_cpu_ptr(sdd->sg, j));
7265                         if (sdd->sgc)
7266                                 kfree(*per_cpu_ptr(sdd->sgc, j));
7267                 }
7268                 free_percpu(sdd->sd);
7269                 sdd->sd = NULL;
7270                 free_percpu(sdd->sg);
7271                 sdd->sg = NULL;
7272                 free_percpu(sdd->sgc);
7273                 sdd->sgc = NULL;
7274         }
7275 }
7276
7277 struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
7278                 const struct cpumask *cpu_map, struct sched_domain_attr *attr,
7279                 struct sched_domain *child, int cpu)
7280 {
7281         struct sched_domain *sd = sd_init(tl, child, cpu);
7282
7283         cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
7284         if (child) {
7285                 sd->level = child->level + 1;
7286                 sched_domain_level_max = max(sched_domain_level_max, sd->level);
7287                 child->parent = sd;
7288
7289                 if (!cpumask_subset(sched_domain_span(child),
7290                                     sched_domain_span(sd))) {
7291                         pr_err("BUG: arch topology borken\n");
7292 #ifdef CONFIG_SCHED_DEBUG
7293                         pr_err("     the %s domain not a subset of the %s domain\n",
7294                                         child->name, sd->name);
7295 #endif
7296                         /* Fixup, ensure @sd has at least @child cpus. */
7297                         cpumask_or(sched_domain_span(sd),
7298                                    sched_domain_span(sd),
7299                                    sched_domain_span(child));
7300                 }
7301
7302         }
7303         set_domain_attribute(sd, attr);
7304
7305         return sd;
7306 }
7307
7308 /*
7309  * Build sched domains for a given set of cpus and attach the sched domains
7310  * to the individual cpus
7311  */
7312 static int build_sched_domains(const struct cpumask *cpu_map,
7313                                struct sched_domain_attr *attr)
7314 {
7315         enum s_alloc alloc_state;
7316         struct sched_domain *sd;
7317         struct s_data d;
7318         int i, ret = -ENOMEM;
7319
7320         alloc_state = __visit_domain_allocation_hell(&d, cpu_map);
7321         if (alloc_state != sa_rootdomain)
7322                 goto error;
7323
7324         /* Set up domains for cpus specified by the cpu_map. */
7325         for_each_cpu(i, cpu_map) {
7326                 struct sched_domain_topology_level *tl;
7327
7328                 sd = NULL;
7329                 for_each_sd_topology(tl) {
7330                         sd = build_sched_domain(tl, cpu_map, attr, sd, i);
7331                         if (tl == sched_domain_topology)
7332                                 *per_cpu_ptr(d.sd, i) = sd;
7333                         if (tl->flags & SDTL_OVERLAP || sched_feat(FORCE_SD_OVERLAP))
7334                                 sd->flags |= SD_OVERLAP;
7335                 }
7336         }
7337
7338         /* Build the groups for the domains */
7339         for_each_cpu(i, cpu_map) {
7340                 for (sd = *per_cpu_ptr(d.sd, i); sd; sd = sd->parent) {
7341                         sd->span_weight = cpumask_weight(sched_domain_span(sd));
7342                         if (sd->flags & SD_OVERLAP) {
7343                                 if (build_overlap_sched_groups(sd, i))
7344                                         goto error;
7345                         } else {
7346                                 if (build_sched_groups(sd, i))
7347                                         goto error;
7348                         }
7349                 }
7350         }
7351
7352         /* Calculate CPU capacity for physical packages and nodes */
7353         for (i = nr_cpumask_bits-1; i >= 0; i--) {
7354                 struct sched_domain_topology_level *tl = sched_domain_topology;
7355
7356                 if (!cpumask_test_cpu(i, cpu_map))
7357                         continue;
7358
7359                 for (sd = *per_cpu_ptr(d.sd, i); sd; sd = sd->parent, tl++) {
7360                         init_sched_energy(i, sd, tl->energy);
7361                         claim_allocations(i, sd);
7362                         init_sched_groups_capacity(i, sd);
7363                 }
7364         }
7365
7366         /* Attach the domains */
7367         rcu_read_lock();
7368         for_each_cpu(i, cpu_map) {
7369                 int max_cpu = READ_ONCE(d.rd->max_cap_orig_cpu);
7370                 int min_cpu = READ_ONCE(d.rd->min_cap_orig_cpu);
7371
7372                 if ((max_cpu < 0) || (cpu_rq(i)->cpu_capacity_orig >
7373                     cpu_rq(max_cpu)->cpu_capacity_orig))
7374                         WRITE_ONCE(d.rd->max_cap_orig_cpu, i);
7375
7376                 if ((min_cpu < 0) || (cpu_rq(i)->cpu_capacity_orig <
7377                     cpu_rq(min_cpu)->cpu_capacity_orig))
7378                         WRITE_ONCE(d.rd->min_cap_orig_cpu, i);
7379
7380                 sd = *per_cpu_ptr(d.sd, i);
7381
7382                 cpu_attach_domain(sd, d.rd, i);
7383         }
7384         rcu_read_unlock();
7385
7386         ret = 0;
7387 error:
7388         __free_domain_allocs(&d, alloc_state, cpu_map);
7389         return ret;
7390 }
7391
7392 static cpumask_var_t *doms_cur; /* current sched domains */
7393 static int ndoms_cur;           /* number of sched domains in 'doms_cur' */
7394 static struct sched_domain_attr *dattr_cur;
7395                                 /* attribues of custom domains in 'doms_cur' */
7396
7397 /*
7398  * Special case: If a kmalloc of a doms_cur partition (array of
7399  * cpumask) fails, then fallback to a single sched domain,
7400  * as determined by the single cpumask fallback_doms.
7401  */
7402 static cpumask_var_t fallback_doms;
7403
7404 /*
7405  * arch_update_cpu_topology lets virtualized architectures update the
7406  * cpu core maps. It is supposed to return 1 if the topology changed
7407  * or 0 if it stayed the same.
7408  */
7409 int __weak arch_update_cpu_topology(void)
7410 {
7411         return 0;
7412 }
7413
7414 cpumask_var_t *alloc_sched_domains(unsigned int ndoms)
7415 {
7416         int i;
7417         cpumask_var_t *doms;
7418
7419         doms = kmalloc(sizeof(*doms) * ndoms, GFP_KERNEL);
7420         if (!doms)
7421                 return NULL;
7422         for (i = 0; i < ndoms; i++) {
7423                 if (!alloc_cpumask_var(&doms[i], GFP_KERNEL)) {
7424                         free_sched_domains(doms, i);
7425                         return NULL;
7426                 }
7427         }
7428         return doms;
7429 }
7430
7431 void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms)
7432 {
7433         unsigned int i;
7434         for (i = 0; i < ndoms; i++)
7435                 free_cpumask_var(doms[i]);
7436         kfree(doms);
7437 }
7438
7439 /*
7440  * Set up scheduler domains and groups. Callers must hold the hotplug lock.
7441  * For now this just excludes isolated cpus, but could be used to
7442  * exclude other special cases in the future.
7443  */
7444 static int init_sched_domains(const struct cpumask *cpu_map)
7445 {
7446         int err;
7447
7448         arch_update_cpu_topology();
7449         ndoms_cur = 1;
7450         doms_cur = alloc_sched_domains(ndoms_cur);
7451         if (!doms_cur)
7452                 doms_cur = &fallback_doms;
7453         cpumask_andnot(doms_cur[0], cpu_map, cpu_isolated_map);
7454         err = build_sched_domains(doms_cur[0], NULL);
7455         register_sched_domain_sysctl();
7456
7457         return err;
7458 }
7459
7460 /*
7461  * Detach sched domains from a group of cpus specified in cpu_map
7462  * These cpus will now be attached to the NULL domain
7463  */
7464 static void detach_destroy_domains(const struct cpumask *cpu_map)
7465 {
7466         int i;
7467
7468         rcu_read_lock();
7469         for_each_cpu(i, cpu_map)
7470                 cpu_attach_domain(NULL, &def_root_domain, i);
7471         rcu_read_unlock();
7472 }
7473
7474 /* handle null as "default" */
7475 static int dattrs_equal(struct sched_domain_attr *cur, int idx_cur,
7476                         struct sched_domain_attr *new, int idx_new)
7477 {
7478         struct sched_domain_attr tmp;
7479
7480         /* fast path */
7481         if (!new && !cur)
7482                 return 1;
7483
7484         tmp = SD_ATTR_INIT;
7485         return !memcmp(cur ? (cur + idx_cur) : &tmp,
7486                         new ? (new + idx_new) : &tmp,
7487                         sizeof(struct sched_domain_attr));
7488 }
7489
7490 /*
7491  * Partition sched domains as specified by the 'ndoms_new'
7492  * cpumasks in the array doms_new[] of cpumasks. This compares
7493  * doms_new[] to the current sched domain partitioning, doms_cur[].
7494  * It destroys each deleted domain and builds each new domain.
7495  *
7496  * 'doms_new' is an array of cpumask_var_t's of length 'ndoms_new'.
7497  * The masks don't intersect (don't overlap.) We should setup one
7498  * sched domain for each mask. CPUs not in any of the cpumasks will
7499  * not be load balanced. If the same cpumask appears both in the
7500  * current 'doms_cur' domains and in the new 'doms_new', we can leave
7501  * it as it is.
7502  *
7503  * The passed in 'doms_new' should be allocated using
7504  * alloc_sched_domains.  This routine takes ownership of it and will
7505  * free_sched_domains it when done with it. If the caller failed the
7506  * alloc call, then it can pass in doms_new == NULL && ndoms_new == 1,
7507  * and partition_sched_domains() will fallback to the single partition
7508  * 'fallback_doms', it also forces the domains to be rebuilt.
7509  *
7510  * If doms_new == NULL it will be replaced with cpu_online_mask.
7511  * ndoms_new == 0 is a special case for destroying existing domains,
7512  * and it will not create the default domain.
7513  *
7514  * Call with hotplug lock held
7515  */
7516 void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[],
7517                              struct sched_domain_attr *dattr_new)
7518 {
7519         int i, j, n;
7520         int new_topology;
7521
7522         mutex_lock(&sched_domains_mutex);
7523
7524         /* always unregister in case we don't destroy any domains */
7525         unregister_sched_domain_sysctl();
7526
7527         /* Let architecture update cpu core mappings. */
7528         new_topology = arch_update_cpu_topology();
7529
7530         n = doms_new ? ndoms_new : 0;
7531
7532         /* Destroy deleted domains */
7533         for (i = 0; i < ndoms_cur; i++) {
7534                 for (j = 0; j < n && !new_topology; j++) {
7535                         if (cpumask_equal(doms_cur[i], doms_new[j])
7536                             && dattrs_equal(dattr_cur, i, dattr_new, j))
7537                                 goto match1;
7538                 }
7539                 /* no match - a current sched domain not in new doms_new[] */
7540                 detach_destroy_domains(doms_cur[i]);
7541 match1:
7542                 ;
7543         }
7544
7545         n = ndoms_cur;
7546         if (doms_new == NULL) {
7547                 n = 0;
7548                 doms_new = &fallback_doms;
7549                 cpumask_andnot(doms_new[0], cpu_active_mask, cpu_isolated_map);
7550                 WARN_ON_ONCE(dattr_new);
7551         }
7552
7553         /* Build new domains */
7554         for (i = 0; i < ndoms_new; i++) {
7555                 for (j = 0; j < n && !new_topology; j++) {
7556                         if (cpumask_equal(doms_new[i], doms_cur[j])
7557                             && dattrs_equal(dattr_new, i, dattr_cur, j))
7558                                 goto match2;
7559                 }
7560                 /* no match - add a new doms_new */
7561                 build_sched_domains(doms_new[i], dattr_new ? dattr_new + i : NULL);
7562 match2:
7563                 ;
7564         }
7565
7566         /* Remember the new sched domains */
7567         if (doms_cur != &fallback_doms)
7568                 free_sched_domains(doms_cur, ndoms_cur);
7569         kfree(dattr_cur);       /* kfree(NULL) is safe */
7570         doms_cur = doms_new;
7571         dattr_cur = dattr_new;
7572         ndoms_cur = ndoms_new;
7573
7574         register_sched_domain_sysctl();
7575
7576         mutex_unlock(&sched_domains_mutex);
7577 }
7578
7579 static int num_cpus_frozen;     /* used to mark begin/end of suspend/resume */
7580
7581 /*
7582  * Update cpusets according to cpu_active mask.  If cpusets are
7583  * disabled, cpuset_update_active_cpus() becomes a simple wrapper
7584  * around partition_sched_domains().
7585  *
7586  * If we come here as part of a suspend/resume, don't touch cpusets because we
7587  * want to restore it back to its original state upon resume anyway.
7588  */
7589 static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action,
7590                              void *hcpu)
7591 {
7592         switch (action) {
7593         case CPU_ONLINE_FROZEN:
7594         case CPU_DOWN_FAILED_FROZEN:
7595
7596                 /*
7597                  * num_cpus_frozen tracks how many CPUs are involved in suspend
7598                  * resume sequence. As long as this is not the last online
7599                  * operation in the resume sequence, just build a single sched
7600                  * domain, ignoring cpusets.
7601                  */
7602                 partition_sched_domains(1, NULL, NULL);
7603                 if (--num_cpus_frozen)
7604                         break;
7605
7606                 /*
7607                  * This is the last CPU online operation. So fall through and
7608                  * restore the original sched domains by considering the
7609                  * cpuset configurations.
7610                  */
7611                 cpuset_force_rebuild();
7612
7613         case CPU_ONLINE:
7614                 cpuset_update_active_cpus(true);
7615                 break;
7616         default:
7617                 return NOTIFY_DONE;
7618         }
7619         return NOTIFY_OK;
7620 }
7621
7622 static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action,
7623                                void *hcpu)
7624 {
7625         unsigned long flags;
7626         long cpu = (long)hcpu;
7627         struct dl_bw *dl_b;
7628         bool overflow;
7629         int cpus;
7630
7631         switch (action) {
7632         case CPU_DOWN_PREPARE:
7633                 rcu_read_lock_sched();
7634                 dl_b = dl_bw_of(cpu);
7635
7636                 raw_spin_lock_irqsave(&dl_b->lock, flags);
7637                 cpus = dl_bw_cpus(cpu);
7638                 overflow = __dl_overflow(dl_b, cpus, 0, 0);
7639                 raw_spin_unlock_irqrestore(&dl_b->lock, flags);
7640
7641                 rcu_read_unlock_sched();
7642
7643                 if (overflow)
7644                         return notifier_from_errno(-EBUSY);
7645                 cpuset_update_active_cpus(false);
7646                 break;
7647         case CPU_DOWN_PREPARE_FROZEN:
7648                 num_cpus_frozen++;
7649                 partition_sched_domains(1, NULL, NULL);
7650                 break;
7651         default:
7652                 return NOTIFY_DONE;
7653         }
7654         return NOTIFY_OK;
7655 }
7656
7657 void __init sched_init_smp(void)
7658 {
7659         cpumask_var_t non_isolated_cpus;
7660
7661         alloc_cpumask_var(&non_isolated_cpus, GFP_KERNEL);
7662         alloc_cpumask_var(&fallback_doms, GFP_KERNEL);
7663
7664         sched_init_numa();
7665
7666         /*
7667          * There's no userspace yet to cause hotplug operations; hence all the
7668          * cpu masks are stable and all blatant races in the below code cannot
7669          * happen.
7670          */
7671         mutex_lock(&sched_domains_mutex);
7672         init_sched_domains(cpu_active_mask);
7673         cpumask_andnot(non_isolated_cpus, cpu_possible_mask, cpu_isolated_map);
7674         if (cpumask_empty(non_isolated_cpus))
7675                 cpumask_set_cpu(smp_processor_id(), non_isolated_cpus);
7676         mutex_unlock(&sched_domains_mutex);
7677
7678         hotcpu_notifier(sched_domains_numa_masks_update, CPU_PRI_SCHED_ACTIVE);
7679         hotcpu_notifier(cpuset_cpu_active, CPU_PRI_CPUSET_ACTIVE);
7680         hotcpu_notifier(cpuset_cpu_inactive, CPU_PRI_CPUSET_INACTIVE);
7681
7682         init_hrtick();
7683
7684         /* Move init over to a non-isolated CPU */
7685         if (set_cpus_allowed_ptr(current, non_isolated_cpus) < 0)
7686                 BUG();
7687         sched_init_granularity();
7688         free_cpumask_var(non_isolated_cpus);
7689
7690         init_sched_rt_class();
7691         init_sched_dl_class();
7692 }
7693 #else
7694 void __init sched_init_smp(void)
7695 {
7696         sched_init_granularity();
7697 }
7698 #endif /* CONFIG_SMP */
7699
7700 int in_sched_functions(unsigned long addr)
7701 {
7702         return in_lock_functions(addr) ||
7703                 (addr >= (unsigned long)__sched_text_start
7704                 && addr < (unsigned long)__sched_text_end);
7705 }
7706
7707 #ifdef CONFIG_CGROUP_SCHED
7708 /*
7709  * Default task group.
7710  * Every task in system belongs to this group at bootup.
7711  */
7712 struct task_group root_task_group;
7713 LIST_HEAD(task_groups);
7714 #endif
7715
7716 DECLARE_PER_CPU(cpumask_var_t, load_balance_mask);
7717
7718 void __init sched_init(void)
7719 {
7720         int i, j;
7721         unsigned long alloc_size = 0, ptr;
7722
7723 #ifdef CONFIG_FAIR_GROUP_SCHED
7724         alloc_size += 2 * nr_cpu_ids * sizeof(void **);
7725 #endif
7726 #ifdef CONFIG_RT_GROUP_SCHED
7727         alloc_size += 2 * nr_cpu_ids * sizeof(void **);
7728 #endif
7729         if (alloc_size) {
7730                 ptr = (unsigned long)kzalloc(alloc_size, GFP_NOWAIT);
7731
7732 #ifdef CONFIG_FAIR_GROUP_SCHED
7733                 root_task_group.se = (struct sched_entity **)ptr;
7734                 ptr += nr_cpu_ids * sizeof(void **);
7735
7736                 root_task_group.cfs_rq = (struct cfs_rq **)ptr;
7737                 ptr += nr_cpu_ids * sizeof(void **);
7738
7739 #endif /* CONFIG_FAIR_GROUP_SCHED */
7740 #ifdef CONFIG_RT_GROUP_SCHED
7741                 root_task_group.rt_se = (struct sched_rt_entity **)ptr;
7742                 ptr += nr_cpu_ids * sizeof(void **);
7743
7744                 root_task_group.rt_rq = (struct rt_rq **)ptr;
7745                 ptr += nr_cpu_ids * sizeof(void **);
7746
7747 #endif /* CONFIG_RT_GROUP_SCHED */
7748         }
7749 #ifdef CONFIG_CPUMASK_OFFSTACK
7750         for_each_possible_cpu(i) {
7751                 per_cpu(load_balance_mask, i) = (cpumask_var_t)kzalloc_node(
7752                         cpumask_size(), GFP_KERNEL, cpu_to_node(i));
7753         }
7754 #endif /* CONFIG_CPUMASK_OFFSTACK */
7755
7756         init_rt_bandwidth(&def_rt_bandwidth,
7757                         global_rt_period(), global_rt_runtime());
7758         init_dl_bandwidth(&def_dl_bandwidth,
7759                         global_rt_period(), global_rt_runtime());
7760
7761 #ifdef CONFIG_SMP
7762         init_defrootdomain();
7763 #endif
7764
7765 #ifdef CONFIG_RT_GROUP_SCHED
7766         init_rt_bandwidth(&root_task_group.rt_bandwidth,
7767                         global_rt_period(), global_rt_runtime());
7768 #endif /* CONFIG_RT_GROUP_SCHED */
7769
7770 #ifdef CONFIG_CGROUP_SCHED
7771         list_add(&root_task_group.list, &task_groups);
7772         INIT_LIST_HEAD(&root_task_group.children);
7773         INIT_LIST_HEAD(&root_task_group.siblings);
7774         autogroup_init(&init_task);
7775
7776 #endif /* CONFIG_CGROUP_SCHED */
7777
7778         for_each_possible_cpu(i) {
7779                 struct rq *rq;
7780
7781                 rq = cpu_rq(i);
7782                 raw_spin_lock_init(&rq->lock);
7783                 rq->nr_running = 0;
7784                 rq->calc_load_active = 0;
7785                 rq->calc_load_update = jiffies + LOAD_FREQ;
7786                 init_cfs_rq(&rq->cfs);
7787                 init_rt_rq(&rq->rt);
7788                 init_dl_rq(&rq->dl);
7789 #ifdef CONFIG_FAIR_GROUP_SCHED
7790                 root_task_group.shares = ROOT_TASK_GROUP_LOAD;
7791                 INIT_LIST_HEAD(&rq->leaf_cfs_rq_list);
7792                 rq->tmp_alone_branch = &rq->leaf_cfs_rq_list;
7793                 /*
7794                  * How much cpu bandwidth does root_task_group get?
7795                  *
7796                  * In case of task-groups formed thr' the cgroup filesystem, it
7797                  * gets 100% of the cpu resources in the system. This overall
7798                  * system cpu resource is divided among the tasks of
7799                  * root_task_group and its child task-groups in a fair manner,
7800                  * based on each entity's (task or task-group's) weight
7801                  * (se->load.weight).
7802                  *
7803                  * In other words, if root_task_group has 10 tasks of weight
7804                  * 1024) and two child groups A0 and A1 (of weight 1024 each),
7805                  * then A0's share of the cpu resource is:
7806                  *
7807                  *      A0's bandwidth = 1024 / (10*1024 + 1024 + 1024) = 8.33%
7808                  *
7809                  * We achieve this by letting root_task_group's tasks sit
7810                  * directly in rq->cfs (i.e root_task_group->se[] = NULL).
7811                  */
7812                 init_cfs_bandwidth(&root_task_group.cfs_bandwidth);
7813                 init_tg_cfs_entry(&root_task_group, &rq->cfs, NULL, i, NULL);
7814 #endif /* CONFIG_FAIR_GROUP_SCHED */
7815
7816                 rq->rt.rt_runtime = def_rt_bandwidth.rt_runtime;
7817 #ifdef CONFIG_RT_GROUP_SCHED
7818                 init_tg_rt_entry(&root_task_group, &rq->rt, NULL, i, NULL);
7819 #endif
7820
7821                 for (j = 0; j < CPU_LOAD_IDX_MAX; j++)
7822                         rq->cpu_load[j] = 0;
7823
7824                 rq->last_load_update_tick = jiffies;
7825
7826 #ifdef CONFIG_SMP
7827                 rq->sd = NULL;
7828                 rq->rd = NULL;
7829                 rq->cpu_capacity = rq->cpu_capacity_orig = SCHED_CAPACITY_SCALE;
7830                 rq->balance_callback = NULL;
7831                 rq->active_balance = 0;
7832                 rq->next_balance = jiffies;
7833                 rq->push_cpu = 0;
7834                 rq->push_task = NULL;
7835                 rq->cpu = i;
7836                 rq->online = 0;
7837                 rq->idle_stamp = 0;
7838                 rq->avg_idle = 2*sysctl_sched_migration_cost;
7839                 rq->max_idle_balance_cost = sysctl_sched_migration_cost;
7840 #ifdef CONFIG_SCHED_WALT
7841                 rq->cur_irqload = 0;
7842                 rq->avg_irqload = 0;
7843                 rq->irqload_ts = 0;
7844 #endif
7845
7846                 INIT_LIST_HEAD(&rq->cfs_tasks);
7847
7848                 rq_attach_root(rq, &def_root_domain);
7849 #ifdef CONFIG_NO_HZ_COMMON
7850                 rq->nohz_flags = 0;
7851 #endif
7852 #ifdef CONFIG_NO_HZ_FULL
7853                 rq->last_sched_tick = 0;
7854 #endif
7855 #endif
7856                 init_rq_hrtick(rq);
7857                 atomic_set(&rq->nr_iowait, 0);
7858         }
7859
7860         set_load_weight(&init_task);
7861
7862 #ifdef CONFIG_PREEMPT_NOTIFIERS
7863         INIT_HLIST_HEAD(&init_task.preempt_notifiers);
7864 #endif
7865
7866         /*
7867          * The boot idle thread does lazy MMU switching as well:
7868          */
7869         atomic_inc(&init_mm.mm_count);
7870         enter_lazy_tlb(&init_mm, current);
7871
7872         /*
7873          * During early bootup we pretend to be a normal task:
7874          */
7875         current->sched_class = &fair_sched_class;
7876
7877         /*
7878          * Make us the idle thread. Technically, schedule() should not be
7879          * called from this thread, however somewhere below it might be,
7880          * but because we are the idle thread, we just pick up running again
7881          * when this runqueue becomes "idle".
7882          */
7883         init_idle(current, smp_processor_id());
7884
7885         calc_load_update = jiffies + LOAD_FREQ;
7886
7887 #ifdef CONFIG_SMP
7888         zalloc_cpumask_var(&sched_domains_tmpmask, GFP_NOWAIT);
7889         /* May be allocated at isolcpus cmdline parse time */
7890         if (cpu_isolated_map == NULL)
7891                 zalloc_cpumask_var(&cpu_isolated_map, GFP_NOWAIT);
7892         idle_thread_set_boot_cpu();
7893         set_cpu_rq_start_time();
7894 #endif
7895         init_sched_fair_class();
7896
7897         scheduler_running = 1;
7898 }
7899
7900 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
7901 static inline int preempt_count_equals(int preempt_offset)
7902 {
7903         int nested = preempt_count() + rcu_preempt_depth();
7904
7905         return (nested == preempt_offset);
7906 }
7907
7908 static int __might_sleep_init_called;
7909 int __init __might_sleep_init(void)
7910 {
7911         __might_sleep_init_called = 1;
7912         return 0;
7913 }
7914 early_initcall(__might_sleep_init);
7915
7916 void __might_sleep(const char *file, int line, int preempt_offset)
7917 {
7918         /*
7919          * Blocking primitives will set (and therefore destroy) current->state,
7920          * since we will exit with TASK_RUNNING make sure we enter with it,
7921          * otherwise we will destroy state.
7922          */
7923         WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change,
7924                         "do not call blocking ops when !TASK_RUNNING; "
7925                         "state=%lx set at [<%p>] %pS\n",
7926                         current->state,
7927                         (void *)current->task_state_change,
7928                         (void *)current->task_state_change);
7929
7930         ___might_sleep(file, line, preempt_offset);
7931 }
7932 EXPORT_SYMBOL(__might_sleep);
7933
7934 void ___might_sleep(const char *file, int line, int preempt_offset)
7935 {
7936         static unsigned long prev_jiffy;        /* ratelimiting */
7937
7938         rcu_sleep_check(); /* WARN_ON_ONCE() by default, no rate limit reqd. */
7939         if ((preempt_count_equals(preempt_offset) && !irqs_disabled() &&
7940              !is_idle_task(current)) || oops_in_progress)
7941                 return;
7942         if (system_state != SYSTEM_RUNNING &&
7943             (!__might_sleep_init_called || system_state != SYSTEM_BOOTING))
7944                 return;
7945         if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
7946                 return;
7947         prev_jiffy = jiffies;
7948
7949         printk(KERN_ERR
7950                 "BUG: sleeping function called from invalid context at %s:%d\n",
7951                         file, line);
7952         printk(KERN_ERR
7953                 "in_atomic(): %d, irqs_disabled(): %d, pid: %d, name: %s\n",
7954                         in_atomic(), irqs_disabled(),
7955                         current->pid, current->comm);
7956
7957         if (task_stack_end_corrupted(current))
7958                 printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
7959
7960         debug_show_held_locks(current);
7961         if (irqs_disabled())
7962                 print_irqtrace_events(current);
7963 #ifdef CONFIG_DEBUG_PREEMPT
7964         if (!preempt_count_equals(preempt_offset)) {
7965                 pr_err("Preemption disabled at:");
7966                 print_ip_sym(current->preempt_disable_ip);
7967                 pr_cont("\n");
7968         }
7969 #endif
7970         dump_stack();
7971 }
7972 EXPORT_SYMBOL(___might_sleep);
7973 #endif
7974
7975 #ifdef CONFIG_MAGIC_SYSRQ
7976 void normalize_rt_tasks(void)
7977 {
7978         struct task_struct *g, *p;
7979         struct sched_attr attr = {
7980                 .sched_policy = SCHED_NORMAL,
7981         };
7982
7983         read_lock(&tasklist_lock);
7984         for_each_process_thread(g, p) {
7985                 /*
7986                  * Only normalize user tasks:
7987                  */
7988                 if (p->flags & PF_KTHREAD)
7989                         continue;
7990
7991                 p->se.exec_start                = 0;
7992 #ifdef CONFIG_SCHEDSTATS
7993                 p->se.statistics.wait_start     = 0;
7994                 p->se.statistics.sleep_start    = 0;
7995                 p->se.statistics.block_start    = 0;
7996 #endif
7997
7998                 if (!dl_task(p) && !rt_task(p)) {
7999                         /*
8000                          * Renice negative nice level userspace
8001                          * tasks back to 0:
8002                          */
8003                         if (task_nice(p) < 0)
8004                                 set_user_nice(p, 0);
8005                         continue;
8006                 }
8007
8008                 __sched_setscheduler(p, &attr, false, false);
8009         }
8010         read_unlock(&tasklist_lock);
8011 }
8012
8013 #endif /* CONFIG_MAGIC_SYSRQ */
8014
8015 #if defined(CONFIG_IA64) || defined(CONFIG_KGDB_KDB)
8016 /*
8017  * These functions are only useful for the IA64 MCA handling, or kdb.
8018  *
8019  * They can only be called when the whole system has been
8020  * stopped - every CPU needs to be quiescent, and no scheduling
8021  * activity can take place. Using them for anything else would
8022  * be a serious bug, and as a result, they aren't even visible
8023  * under any other configuration.
8024  */
8025
8026 /**
8027  * curr_task - return the current task for a given cpu.
8028  * @cpu: the processor in question.
8029  *
8030  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
8031  *
8032  * Return: The current task for @cpu.
8033  */
8034 struct task_struct *curr_task(int cpu)
8035 {
8036         return cpu_curr(cpu);
8037 }
8038
8039 #endif /* defined(CONFIG_IA64) || defined(CONFIG_KGDB_KDB) */
8040
8041 #ifdef CONFIG_IA64
8042 /**
8043  * set_curr_task - set the current task for a given cpu.
8044  * @cpu: the processor in question.
8045  * @p: the task pointer to set.
8046  *
8047  * Description: This function must only be used when non-maskable interrupts
8048  * are serviced on a separate stack. It allows the architecture to switch the
8049  * notion of the current task on a cpu in a non-blocking manner. This function
8050  * must be called with all CPU's synchronized, and interrupts disabled, the
8051  * and caller must save the original value of the current task (see
8052  * curr_task() above) and restore that value before reenabling interrupts and
8053  * re-starting the system.
8054  *
8055  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
8056  */
8057 void set_curr_task(int cpu, struct task_struct *p)
8058 {
8059         cpu_curr(cpu) = p;
8060 }
8061
8062 #endif
8063
8064 #ifdef CONFIG_CGROUP_SCHED
8065 /* task_group_lock serializes the addition/removal of task groups */
8066 static DEFINE_SPINLOCK(task_group_lock);
8067
8068 static void sched_free_group(struct task_group *tg)
8069 {
8070         free_fair_sched_group(tg);
8071         free_rt_sched_group(tg);
8072         autogroup_free(tg);
8073         kfree(tg);
8074 }
8075
8076 /* allocate runqueue etc for a new task group */
8077 struct task_group *sched_create_group(struct task_group *parent)
8078 {
8079         struct task_group *tg;
8080
8081         tg = kzalloc(sizeof(*tg), GFP_KERNEL);
8082         if (!tg)
8083                 return ERR_PTR(-ENOMEM);
8084
8085         if (!alloc_fair_sched_group(tg, parent))
8086                 goto err;
8087
8088         if (!alloc_rt_sched_group(tg, parent))
8089                 goto err;
8090
8091         return tg;
8092
8093 err:
8094         sched_free_group(tg);
8095         return ERR_PTR(-ENOMEM);
8096 }
8097
8098 void sched_online_group(struct task_group *tg, struct task_group *parent)
8099 {
8100         unsigned long flags;
8101
8102         spin_lock_irqsave(&task_group_lock, flags);
8103         list_add_rcu(&tg->list, &task_groups);
8104
8105         WARN_ON(!parent); /* root should already exist */
8106
8107         tg->parent = parent;
8108         INIT_LIST_HEAD(&tg->children);
8109         list_add_rcu(&tg->siblings, &parent->children);
8110         spin_unlock_irqrestore(&task_group_lock, flags);
8111 }
8112
8113 /* rcu callback to free various structures associated with a task group */
8114 static void sched_free_group_rcu(struct rcu_head *rhp)
8115 {
8116         /* now it should be safe to free those cfs_rqs */
8117         sched_free_group(container_of(rhp, struct task_group, rcu));
8118 }
8119
8120 void sched_destroy_group(struct task_group *tg)
8121 {
8122         /* wait for possible concurrent references to cfs_rqs complete */
8123         call_rcu(&tg->rcu, sched_free_group_rcu);
8124 }
8125
8126 void sched_offline_group(struct task_group *tg)
8127 {
8128         unsigned long flags;
8129         int i;
8130
8131         /* end participation in shares distribution */
8132         for_each_possible_cpu(i)
8133                 unregister_fair_sched_group(tg, i);
8134
8135         spin_lock_irqsave(&task_group_lock, flags);
8136         list_del_rcu(&tg->list);
8137         list_del_rcu(&tg->siblings);
8138         spin_unlock_irqrestore(&task_group_lock, flags);
8139 }
8140
8141 static void sched_change_group(struct task_struct *tsk, int type)
8142 {
8143         struct task_group *tg;
8144
8145         /*
8146          * All callers are synchronized by task_rq_lock(); we do not use RCU
8147          * which is pointless here. Thus, we pass "true" to task_css_check()
8148          * to prevent lockdep warnings.
8149          */
8150         tg = container_of(task_css_check(tsk, cpu_cgrp_id, true),
8151                           struct task_group, css);
8152         tg = autogroup_task_group(tsk, tg);
8153         tsk->sched_task_group = tg;
8154
8155 #ifdef CONFIG_FAIR_GROUP_SCHED
8156         if (tsk->sched_class->task_change_group)
8157                 tsk->sched_class->task_change_group(tsk, type);
8158         else
8159 #endif
8160                 set_task_rq(tsk, task_cpu(tsk));
8161 }
8162
8163 /*
8164  * Change task's runqueue when it moves between groups.
8165  *
8166  * The caller of this function should have put the task in its new group by
8167  * now. This function just updates tsk->se.cfs_rq and tsk->se.parent to reflect
8168  * its new group.
8169  */
8170 void sched_move_task(struct task_struct *tsk)
8171 {
8172         int queued, running;
8173         unsigned long flags;
8174         struct rq *rq;
8175
8176         rq = task_rq_lock(tsk, &flags);
8177
8178         running = task_current(rq, tsk);
8179         queued = task_on_rq_queued(tsk);
8180
8181         if (queued)
8182                 dequeue_task(rq, tsk, DEQUEUE_SAVE);
8183         if (unlikely(running))
8184                 put_prev_task(rq, tsk);
8185
8186         sched_change_group(tsk, TASK_MOVE_GROUP);
8187
8188         if (unlikely(running))
8189                 tsk->sched_class->set_curr_task(rq);
8190         if (queued)
8191                 enqueue_task(rq, tsk, ENQUEUE_RESTORE);
8192
8193         task_rq_unlock(rq, tsk, &flags);
8194 }
8195 #endif /* CONFIG_CGROUP_SCHED */
8196
8197 #ifdef CONFIG_RT_GROUP_SCHED
8198 /*
8199  * Ensure that the real time constraints are schedulable.
8200  */
8201 static DEFINE_MUTEX(rt_constraints_mutex);
8202
8203 /* Must be called with tasklist_lock held */
8204 static inline int tg_has_rt_tasks(struct task_group *tg)
8205 {
8206         struct task_struct *g, *p;
8207
8208         /*
8209          * Autogroups do not have RT tasks; see autogroup_create().
8210          */
8211         if (task_group_is_autogroup(tg))
8212                 return 0;
8213
8214         for_each_process_thread(g, p) {
8215                 if (rt_task(p) && task_group(p) == tg)
8216                         return 1;
8217         }
8218
8219         return 0;
8220 }
8221
8222 struct rt_schedulable_data {
8223         struct task_group *tg;
8224         u64 rt_period;
8225         u64 rt_runtime;
8226 };
8227
8228 static int tg_rt_schedulable(struct task_group *tg, void *data)
8229 {
8230         struct rt_schedulable_data *d = data;
8231         struct task_group *child;
8232         unsigned long total, sum = 0;
8233         u64 period, runtime;
8234
8235         period = ktime_to_ns(tg->rt_bandwidth.rt_period);
8236         runtime = tg->rt_bandwidth.rt_runtime;
8237
8238         if (tg == d->tg) {
8239                 period = d->rt_period;
8240                 runtime = d->rt_runtime;
8241         }
8242
8243         /*
8244          * Cannot have more runtime than the period.
8245          */
8246         if (runtime > period && runtime != RUNTIME_INF)
8247                 return -EINVAL;
8248
8249         /*
8250          * Ensure we don't starve existing RT tasks.
8251          */
8252         if (rt_bandwidth_enabled() && !runtime && tg_has_rt_tasks(tg))
8253                 return -EBUSY;
8254
8255         total = to_ratio(period, runtime);
8256
8257         /*
8258          * Nobody can have more than the global setting allows.
8259          */
8260         if (total > to_ratio(global_rt_period(), global_rt_runtime()))
8261                 return -EINVAL;
8262
8263         /*
8264          * The sum of our children's runtime should not exceed our own.
8265          */
8266         list_for_each_entry_rcu(child, &tg->children, siblings) {
8267                 period = ktime_to_ns(child->rt_bandwidth.rt_period);
8268                 runtime = child->rt_bandwidth.rt_runtime;
8269
8270                 if (child == d->tg) {
8271                         period = d->rt_period;
8272                         runtime = d->rt_runtime;
8273                 }
8274
8275                 sum += to_ratio(period, runtime);
8276         }
8277
8278         if (sum > total)
8279                 return -EINVAL;
8280
8281         return 0;
8282 }
8283
8284 static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
8285 {
8286         int ret;
8287
8288         struct rt_schedulable_data data = {
8289                 .tg = tg,
8290                 .rt_period = period,
8291                 .rt_runtime = runtime,
8292         };
8293
8294         rcu_read_lock();
8295         ret = walk_tg_tree(tg_rt_schedulable, tg_nop, &data);
8296         rcu_read_unlock();
8297
8298         return ret;
8299 }
8300
8301 static int tg_set_rt_bandwidth(struct task_group *tg,
8302                 u64 rt_period, u64 rt_runtime)
8303 {
8304         int i, err = 0;
8305
8306         /*
8307          * Disallowing the root group RT runtime is BAD, it would disallow the
8308          * kernel creating (and or operating) RT threads.
8309          */
8310         if (tg == &root_task_group && rt_runtime == 0)
8311                 return -EINVAL;
8312
8313         /* No period doesn't make any sense. */
8314         if (rt_period == 0)
8315                 return -EINVAL;
8316
8317         mutex_lock(&rt_constraints_mutex);
8318         read_lock(&tasklist_lock);
8319         err = __rt_schedulable(tg, rt_period, rt_runtime);
8320         if (err)
8321                 goto unlock;
8322
8323         raw_spin_lock_irq(&tg->rt_bandwidth.rt_runtime_lock);
8324         tg->rt_bandwidth.rt_period = ns_to_ktime(rt_period);
8325         tg->rt_bandwidth.rt_runtime = rt_runtime;
8326
8327         for_each_possible_cpu(i) {
8328                 struct rt_rq *rt_rq = tg->rt_rq[i];
8329
8330                 raw_spin_lock(&rt_rq->rt_runtime_lock);
8331                 rt_rq->rt_runtime = rt_runtime;
8332                 raw_spin_unlock(&rt_rq->rt_runtime_lock);
8333         }
8334         raw_spin_unlock_irq(&tg->rt_bandwidth.rt_runtime_lock);
8335 unlock:
8336         read_unlock(&tasklist_lock);
8337         mutex_unlock(&rt_constraints_mutex);
8338
8339         return err;
8340 }
8341
8342 static int sched_group_set_rt_runtime(struct task_group *tg, long rt_runtime_us)
8343 {
8344         u64 rt_runtime, rt_period;
8345
8346         rt_period = ktime_to_ns(tg->rt_bandwidth.rt_period);
8347         rt_runtime = (u64)rt_runtime_us * NSEC_PER_USEC;
8348         if (rt_runtime_us < 0)
8349                 rt_runtime = RUNTIME_INF;
8350
8351         return tg_set_rt_bandwidth(tg, rt_period, rt_runtime);
8352 }
8353
8354 static long sched_group_rt_runtime(struct task_group *tg)
8355 {
8356         u64 rt_runtime_us;
8357
8358         if (tg->rt_bandwidth.rt_runtime == RUNTIME_INF)
8359                 return -1;
8360
8361         rt_runtime_us = tg->rt_bandwidth.rt_runtime;
8362         do_div(rt_runtime_us, NSEC_PER_USEC);
8363         return rt_runtime_us;
8364 }
8365
8366 static int sched_group_set_rt_period(struct task_group *tg, u64 rt_period_us)
8367 {
8368         u64 rt_runtime, rt_period;
8369
8370         rt_period = rt_period_us * NSEC_PER_USEC;
8371         rt_runtime = tg->rt_bandwidth.rt_runtime;
8372
8373         return tg_set_rt_bandwidth(tg, rt_period, rt_runtime);
8374 }
8375
8376 static long sched_group_rt_period(struct task_group *tg)
8377 {
8378         u64 rt_period_us;
8379
8380         rt_period_us = ktime_to_ns(tg->rt_bandwidth.rt_period);
8381         do_div(rt_period_us, NSEC_PER_USEC);
8382         return rt_period_us;
8383 }
8384 #endif /* CONFIG_RT_GROUP_SCHED */
8385
8386 #ifdef CONFIG_RT_GROUP_SCHED
8387 static int sched_rt_global_constraints(void)
8388 {
8389         int ret = 0;
8390
8391         mutex_lock(&rt_constraints_mutex);
8392         read_lock(&tasklist_lock);
8393         ret = __rt_schedulable(NULL, 0, 0);
8394         read_unlock(&tasklist_lock);
8395         mutex_unlock(&rt_constraints_mutex);
8396
8397         return ret;
8398 }
8399
8400 static int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk)
8401 {
8402         /* Don't accept realtime tasks when there is no way for them to run */
8403         if (rt_task(tsk) && tg->rt_bandwidth.rt_runtime == 0)
8404                 return 0;
8405
8406         return 1;
8407 }
8408
8409 #else /* !CONFIG_RT_GROUP_SCHED */
8410 static int sched_rt_global_constraints(void)
8411 {
8412         unsigned long flags;
8413         int i, ret = 0;
8414
8415         raw_spin_lock_irqsave(&def_rt_bandwidth.rt_runtime_lock, flags);
8416         for_each_possible_cpu(i) {
8417                 struct rt_rq *rt_rq = &cpu_rq(i)->rt;
8418
8419                 raw_spin_lock(&rt_rq->rt_runtime_lock);
8420                 rt_rq->rt_runtime = global_rt_runtime();
8421                 raw_spin_unlock(&rt_rq->rt_runtime_lock);
8422         }
8423         raw_spin_unlock_irqrestore(&def_rt_bandwidth.rt_runtime_lock, flags);
8424
8425         return ret;
8426 }
8427 #endif /* CONFIG_RT_GROUP_SCHED */
8428
8429 static int sched_dl_global_validate(void)
8430 {
8431         u64 runtime = global_rt_runtime();
8432         u64 period = global_rt_period();
8433         u64 new_bw = to_ratio(period, runtime);
8434         struct dl_bw *dl_b;
8435         int cpu, ret = 0;
8436         unsigned long flags;
8437
8438         /*
8439          * Here we want to check the bandwidth not being set to some
8440          * value smaller than the currently allocated bandwidth in
8441          * any of the root_domains.
8442          *
8443          * FIXME: Cycling on all the CPUs is overdoing, but simpler than
8444          * cycling on root_domains... Discussion on different/better
8445          * solutions is welcome!
8446          */
8447         for_each_possible_cpu(cpu) {
8448                 rcu_read_lock_sched();
8449                 dl_b = dl_bw_of(cpu);
8450
8451                 raw_spin_lock_irqsave(&dl_b->lock, flags);
8452                 if (new_bw < dl_b->total_bw)
8453                         ret = -EBUSY;
8454                 raw_spin_unlock_irqrestore(&dl_b->lock, flags);
8455
8456                 rcu_read_unlock_sched();
8457
8458                 if (ret)
8459                         break;
8460         }
8461
8462         return ret;
8463 }
8464
8465 static void sched_dl_do_global(void)
8466 {
8467         u64 new_bw = -1;
8468         struct dl_bw *dl_b;
8469         int cpu;
8470         unsigned long flags;
8471
8472         def_dl_bandwidth.dl_period = global_rt_period();
8473         def_dl_bandwidth.dl_runtime = global_rt_runtime();
8474
8475         if (global_rt_runtime() != RUNTIME_INF)
8476                 new_bw = to_ratio(global_rt_period(), global_rt_runtime());
8477
8478         /*
8479          * FIXME: As above...
8480          */
8481         for_each_possible_cpu(cpu) {
8482                 rcu_read_lock_sched();
8483                 dl_b = dl_bw_of(cpu);
8484
8485                 raw_spin_lock_irqsave(&dl_b->lock, flags);
8486                 dl_b->bw = new_bw;
8487                 raw_spin_unlock_irqrestore(&dl_b->lock, flags);
8488
8489                 rcu_read_unlock_sched();
8490         }
8491 }
8492
8493 static int sched_rt_global_validate(void)
8494 {
8495         if (sysctl_sched_rt_period <= 0)
8496                 return -EINVAL;
8497
8498         if ((sysctl_sched_rt_runtime != RUNTIME_INF) &&
8499                 (sysctl_sched_rt_runtime > sysctl_sched_rt_period))
8500                 return -EINVAL;
8501
8502         return 0;
8503 }
8504
8505 static void sched_rt_do_global(void)
8506 {
8507         def_rt_bandwidth.rt_runtime = global_rt_runtime();
8508         def_rt_bandwidth.rt_period = ns_to_ktime(global_rt_period());
8509 }
8510
8511 int sched_rt_handler(struct ctl_table *table, int write,
8512                 void __user *buffer, size_t *lenp,
8513                 loff_t *ppos)
8514 {
8515         int old_period, old_runtime;
8516         static DEFINE_MUTEX(mutex);
8517         int ret;
8518
8519         mutex_lock(&mutex);
8520         old_period = sysctl_sched_rt_period;
8521         old_runtime = sysctl_sched_rt_runtime;
8522
8523         ret = proc_dointvec(table, write, buffer, lenp, ppos);
8524
8525         if (!ret && write) {
8526                 ret = sched_rt_global_validate();
8527                 if (ret)
8528                         goto undo;
8529
8530                 ret = sched_dl_global_validate();
8531                 if (ret)
8532                         goto undo;
8533
8534                 ret = sched_rt_global_constraints();
8535                 if (ret)
8536                         goto undo;
8537
8538                 sched_rt_do_global();
8539                 sched_dl_do_global();
8540         }
8541         if (0) {
8542 undo:
8543                 sysctl_sched_rt_period = old_period;
8544                 sysctl_sched_rt_runtime = old_runtime;
8545         }
8546         mutex_unlock(&mutex);
8547
8548         return ret;
8549 }
8550
8551 int sched_rr_handler(struct ctl_table *table, int write,
8552                 void __user *buffer, size_t *lenp,
8553                 loff_t *ppos)
8554 {
8555         int ret;
8556         static DEFINE_MUTEX(mutex);
8557
8558         mutex_lock(&mutex);
8559         ret = proc_dointvec(table, write, buffer, lenp, ppos);
8560         /* make sure that internally we keep jiffies */
8561         /* also, writing zero resets timeslice to default */
8562         if (!ret && write) {
8563                 sched_rr_timeslice = sched_rr_timeslice <= 0 ?
8564                         RR_TIMESLICE : msecs_to_jiffies(sched_rr_timeslice);
8565         }
8566         mutex_unlock(&mutex);
8567         return ret;
8568 }
8569
8570 #ifdef CONFIG_CGROUP_SCHED
8571
8572 static inline struct task_group *css_tg(struct cgroup_subsys_state *css)
8573 {
8574         return css ? container_of(css, struct task_group, css) : NULL;
8575 }
8576
8577 static struct cgroup_subsys_state *
8578 cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
8579 {
8580         struct task_group *parent = css_tg(parent_css);
8581         struct task_group *tg;
8582
8583         if (!parent) {
8584                 /* This is early initialization for the top cgroup */
8585                 return &root_task_group.css;
8586         }
8587
8588         tg = sched_create_group(parent);
8589         if (IS_ERR(tg))
8590                 return ERR_PTR(-ENOMEM);
8591
8592         return &tg->css;
8593 }
8594
8595 /* Expose task group only after completing cgroup initialization */
8596 static int cpu_cgroup_css_online(struct cgroup_subsys_state *css)
8597 {
8598         struct task_group *tg = css_tg(css);
8599         struct task_group *parent = css_tg(css->parent);
8600
8601         if (parent)
8602                 sched_online_group(tg, parent);
8603         return 0;
8604 }
8605
8606 static void cpu_cgroup_css_released(struct cgroup_subsys_state *css)
8607 {
8608         struct task_group *tg = css_tg(css);
8609
8610         sched_offline_group(tg);
8611 }
8612
8613 static void cpu_cgroup_css_free(struct cgroup_subsys_state *css)
8614 {
8615         struct task_group *tg = css_tg(css);
8616
8617         /*
8618          * Relies on the RCU grace period between css_released() and this.
8619          */
8620         sched_free_group(tg);
8621 }
8622
8623 /*
8624  * This is called before wake_up_new_task(), therefore we really only
8625  * have to set its group bits, all the other stuff does not apply.
8626  */
8627 static void cpu_cgroup_fork(struct task_struct *task, void *private)
8628 {
8629         unsigned long flags;
8630         struct rq *rq;
8631
8632         rq = task_rq_lock(task, &flags);
8633
8634         update_rq_clock(rq);
8635         sched_change_group(task, TASK_SET_GROUP);
8636
8637         task_rq_unlock(rq, task, &flags);
8638 }
8639
8640 static int cpu_cgroup_can_attach(struct cgroup_taskset *tset)
8641 {
8642         struct task_struct *task;
8643         struct cgroup_subsys_state *css;
8644         int ret = 0;
8645
8646         cgroup_taskset_for_each(task, css, tset) {
8647 #ifdef CONFIG_RT_GROUP_SCHED
8648                 if (!sched_rt_can_attach(css_tg(css), task))
8649                         return -EINVAL;
8650 #else
8651                 /* We don't support RT-tasks being in separate groups */
8652                 if (task->sched_class != &fair_sched_class)
8653                         return -EINVAL;
8654 #endif
8655                 /*
8656                  * Serialize against wake_up_new_task() such that if its
8657                  * running, we're sure to observe its full state.
8658                  */
8659                 raw_spin_lock_irq(&task->pi_lock);
8660                 /*
8661                  * Avoid calling sched_move_task() before wake_up_new_task()
8662                  * has happened. This would lead to problems with PELT, due to
8663                  * move wanting to detach+attach while we're not attached yet.
8664                  */
8665                 if (task->state == TASK_NEW)
8666                         ret = -EINVAL;
8667                 raw_spin_unlock_irq(&task->pi_lock);
8668
8669                 if (ret)
8670                         break;
8671         }
8672         return ret;
8673 }
8674
8675 static void cpu_cgroup_attach(struct cgroup_taskset *tset)
8676 {
8677         struct task_struct *task;
8678         struct cgroup_subsys_state *css;
8679
8680         cgroup_taskset_for_each(task, css, tset)
8681                 sched_move_task(task);
8682 }
8683
8684 #ifdef CONFIG_FAIR_GROUP_SCHED
8685 static int cpu_shares_write_u64(struct cgroup_subsys_state *css,
8686                                 struct cftype *cftype, u64 shareval)
8687 {
8688         return sched_group_set_shares(css_tg(css), scale_load(shareval));
8689 }
8690
8691 static u64 cpu_shares_read_u64(struct cgroup_subsys_state *css,
8692                                struct cftype *cft)
8693 {
8694         struct task_group *tg = css_tg(css);
8695
8696         return (u64) scale_load_down(tg->shares);
8697 }
8698
8699 #ifdef CONFIG_CFS_BANDWIDTH
8700 static DEFINE_MUTEX(cfs_constraints_mutex);
8701
8702 const u64 max_cfs_quota_period = 1 * NSEC_PER_SEC; /* 1s */
8703 const u64 min_cfs_quota_period = 1 * NSEC_PER_MSEC; /* 1ms */
8704
8705 static int __cfs_schedulable(struct task_group *tg, u64 period, u64 runtime);
8706
8707 static int tg_set_cfs_bandwidth(struct task_group *tg, u64 period, u64 quota)
8708 {
8709         int i, ret = 0, runtime_enabled, runtime_was_enabled;
8710         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
8711
8712         if (tg == &root_task_group)
8713                 return -EINVAL;
8714
8715         /*
8716          * Ensure we have at some amount of bandwidth every period.  This is
8717          * to prevent reaching a state of large arrears when throttled via
8718          * entity_tick() resulting in prolonged exit starvation.
8719          */
8720         if (quota < min_cfs_quota_period || period < min_cfs_quota_period)
8721                 return -EINVAL;
8722
8723         /*
8724          * Likewise, bound things on the otherside by preventing insane quota
8725          * periods.  This also allows us to normalize in computing quota
8726          * feasibility.
8727          */
8728         if (period > max_cfs_quota_period)
8729                 return -EINVAL;
8730
8731         /*
8732          * Prevent race between setting of cfs_rq->runtime_enabled and
8733          * unthrottle_offline_cfs_rqs().
8734          */
8735         get_online_cpus();
8736         mutex_lock(&cfs_constraints_mutex);
8737         ret = __cfs_schedulable(tg, period, quota);
8738         if (ret)
8739                 goto out_unlock;
8740
8741         runtime_enabled = quota != RUNTIME_INF;
8742         runtime_was_enabled = cfs_b->quota != RUNTIME_INF;
8743         /*
8744          * If we need to toggle cfs_bandwidth_used, off->on must occur
8745          * before making related changes, and on->off must occur afterwards
8746          */
8747         if (runtime_enabled && !runtime_was_enabled)
8748                 cfs_bandwidth_usage_inc();
8749         raw_spin_lock_irq(&cfs_b->lock);
8750         cfs_b->period = ns_to_ktime(period);
8751         cfs_b->quota = quota;
8752
8753         __refill_cfs_bandwidth_runtime(cfs_b);
8754         /* restart the period timer (if active) to handle new period expiry */
8755         if (runtime_enabled)
8756                 start_cfs_bandwidth(cfs_b);
8757         raw_spin_unlock_irq(&cfs_b->lock);
8758
8759         for_each_online_cpu(i) {
8760                 struct cfs_rq *cfs_rq = tg->cfs_rq[i];
8761                 struct rq *rq = cfs_rq->rq;
8762
8763                 raw_spin_lock_irq(&rq->lock);
8764                 cfs_rq->runtime_enabled = runtime_enabled;
8765                 cfs_rq->runtime_remaining = 0;
8766
8767                 if (cfs_rq->throttled)
8768                         unthrottle_cfs_rq(cfs_rq);
8769                 raw_spin_unlock_irq(&rq->lock);
8770         }
8771         if (runtime_was_enabled && !runtime_enabled)
8772                 cfs_bandwidth_usage_dec();
8773 out_unlock:
8774         mutex_unlock(&cfs_constraints_mutex);
8775         put_online_cpus();
8776
8777         return ret;
8778 }
8779
8780 int tg_set_cfs_quota(struct task_group *tg, long cfs_quota_us)
8781 {
8782         u64 quota, period;
8783
8784         period = ktime_to_ns(tg->cfs_bandwidth.period);
8785         if (cfs_quota_us < 0)
8786                 quota = RUNTIME_INF;
8787         else
8788                 quota = (u64)cfs_quota_us * NSEC_PER_USEC;
8789
8790         return tg_set_cfs_bandwidth(tg, period, quota);
8791 }
8792
8793 long tg_get_cfs_quota(struct task_group *tg)
8794 {
8795         u64 quota_us;
8796
8797         if (tg->cfs_bandwidth.quota == RUNTIME_INF)
8798                 return -1;
8799
8800         quota_us = tg->cfs_bandwidth.quota;
8801         do_div(quota_us, NSEC_PER_USEC);
8802
8803         return quota_us;
8804 }
8805
8806 int tg_set_cfs_period(struct task_group *tg, long cfs_period_us)
8807 {
8808         u64 quota, period;
8809
8810         period = (u64)cfs_period_us * NSEC_PER_USEC;
8811         quota = tg->cfs_bandwidth.quota;
8812
8813         return tg_set_cfs_bandwidth(tg, period, quota);
8814 }
8815
8816 long tg_get_cfs_period(struct task_group *tg)
8817 {
8818         u64 cfs_period_us;
8819
8820         cfs_period_us = ktime_to_ns(tg->cfs_bandwidth.period);
8821         do_div(cfs_period_us, NSEC_PER_USEC);
8822
8823         return cfs_period_us;
8824 }
8825
8826 static s64 cpu_cfs_quota_read_s64(struct cgroup_subsys_state *css,
8827                                   struct cftype *cft)
8828 {
8829         return tg_get_cfs_quota(css_tg(css));
8830 }
8831
8832 static int cpu_cfs_quota_write_s64(struct cgroup_subsys_state *css,
8833                                    struct cftype *cftype, s64 cfs_quota_us)
8834 {
8835         return tg_set_cfs_quota(css_tg(css), cfs_quota_us);
8836 }
8837
8838 static u64 cpu_cfs_period_read_u64(struct cgroup_subsys_state *css,
8839                                    struct cftype *cft)
8840 {
8841         return tg_get_cfs_period(css_tg(css));
8842 }
8843
8844 static int cpu_cfs_period_write_u64(struct cgroup_subsys_state *css,
8845                                     struct cftype *cftype, u64 cfs_period_us)
8846 {
8847         return tg_set_cfs_period(css_tg(css), cfs_period_us);
8848 }
8849
8850 struct cfs_schedulable_data {
8851         struct task_group *tg;
8852         u64 period, quota;
8853 };
8854
8855 /*
8856  * normalize group quota/period to be quota/max_period
8857  * note: units are usecs
8858  */
8859 static u64 normalize_cfs_quota(struct task_group *tg,
8860                                struct cfs_schedulable_data *d)
8861 {
8862         u64 quota, period;
8863
8864         if (tg == d->tg) {
8865                 period = d->period;
8866                 quota = d->quota;
8867         } else {
8868                 period = tg_get_cfs_period(tg);
8869                 quota = tg_get_cfs_quota(tg);
8870         }
8871
8872         /* note: these should typically be equivalent */
8873         if (quota == RUNTIME_INF || quota == -1)
8874                 return RUNTIME_INF;
8875
8876         return to_ratio(period, quota);
8877 }
8878
8879 static int tg_cfs_schedulable_down(struct task_group *tg, void *data)
8880 {
8881         struct cfs_schedulable_data *d = data;
8882         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
8883         s64 quota = 0, parent_quota = -1;
8884
8885         if (!tg->parent) {
8886                 quota = RUNTIME_INF;
8887         } else {
8888                 struct cfs_bandwidth *parent_b = &tg->parent->cfs_bandwidth;
8889
8890                 quota = normalize_cfs_quota(tg, d);
8891                 parent_quota = parent_b->hierarchical_quota;
8892
8893                 /*
8894                  * ensure max(child_quota) <= parent_quota, inherit when no
8895                  * limit is set
8896                  */
8897                 if (quota == RUNTIME_INF)
8898                         quota = parent_quota;
8899                 else if (parent_quota != RUNTIME_INF && quota > parent_quota)
8900                         return -EINVAL;
8901         }
8902         cfs_b->hierarchical_quota = quota;
8903
8904         return 0;
8905 }
8906
8907 static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota)
8908 {
8909         int ret;
8910         struct cfs_schedulable_data data = {
8911                 .tg = tg,
8912                 .period = period,
8913                 .quota = quota,
8914         };
8915
8916         if (quota != RUNTIME_INF) {
8917                 do_div(data.period, NSEC_PER_USEC);
8918                 do_div(data.quota, NSEC_PER_USEC);
8919         }
8920
8921         rcu_read_lock();
8922         ret = walk_tg_tree(tg_cfs_schedulable_down, tg_nop, &data);
8923         rcu_read_unlock();
8924
8925         return ret;
8926 }
8927
8928 static int cpu_stats_show(struct seq_file *sf, void *v)
8929 {
8930         struct task_group *tg = css_tg(seq_css(sf));
8931         struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
8932
8933         seq_printf(sf, "nr_periods %d\n", cfs_b->nr_periods);
8934         seq_printf(sf, "nr_throttled %d\n", cfs_b->nr_throttled);
8935         seq_printf(sf, "throttled_time %llu\n", cfs_b->throttled_time);
8936
8937         return 0;
8938 }
8939 #endif /* CONFIG_CFS_BANDWIDTH */
8940 #endif /* CONFIG_FAIR_GROUP_SCHED */
8941
8942 #ifdef CONFIG_RT_GROUP_SCHED
8943 static int cpu_rt_runtime_write(struct cgroup_subsys_state *css,
8944                                 struct cftype *cft, s64 val)
8945 {
8946         return sched_group_set_rt_runtime(css_tg(css), val);
8947 }
8948
8949 static s64 cpu_rt_runtime_read(struct cgroup_subsys_state *css,
8950                                struct cftype *cft)
8951 {
8952         return sched_group_rt_runtime(css_tg(css));
8953 }
8954
8955 static int cpu_rt_period_write_uint(struct cgroup_subsys_state *css,
8956                                     struct cftype *cftype, u64 rt_period_us)
8957 {
8958         return sched_group_set_rt_period(css_tg(css), rt_period_us);
8959 }
8960
8961 static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css,
8962                                    struct cftype *cft)
8963 {
8964         return sched_group_rt_period(css_tg(css));
8965 }
8966 #endif /* CONFIG_RT_GROUP_SCHED */
8967
8968 static struct cftype cpu_files[] = {
8969 #ifdef CONFIG_FAIR_GROUP_SCHED
8970         {
8971                 .name = "shares",
8972                 .read_u64 = cpu_shares_read_u64,
8973                 .write_u64 = cpu_shares_write_u64,
8974         },
8975 #endif
8976 #ifdef CONFIG_CFS_BANDWIDTH
8977         {
8978                 .name = "cfs_quota_us",
8979                 .read_s64 = cpu_cfs_quota_read_s64,
8980                 .write_s64 = cpu_cfs_quota_write_s64,
8981         },
8982         {
8983                 .name = "cfs_period_us",
8984                 .read_u64 = cpu_cfs_period_read_u64,
8985                 .write_u64 = cpu_cfs_period_write_u64,
8986         },
8987         {
8988                 .name = "stat",
8989                 .seq_show = cpu_stats_show,
8990         },
8991 #endif
8992 #ifdef CONFIG_RT_GROUP_SCHED
8993         {
8994                 .name = "rt_runtime_us",
8995                 .read_s64 = cpu_rt_runtime_read,
8996                 .write_s64 = cpu_rt_runtime_write,
8997         },
8998         {
8999                 .name = "rt_period_us",
9000                 .read_u64 = cpu_rt_period_read_uint,
9001                 .write_u64 = cpu_rt_period_write_uint,
9002         },
9003 #endif
9004         { }     /* terminate */
9005 };
9006
9007 struct cgroup_subsys cpu_cgrp_subsys = {
9008         .css_alloc      = cpu_cgroup_css_alloc,
9009         .css_online     = cpu_cgroup_css_online,
9010         .css_released   = cpu_cgroup_css_released,
9011         .css_free       = cpu_cgroup_css_free,
9012         .fork           = cpu_cgroup_fork,
9013         .can_attach     = cpu_cgroup_can_attach,
9014         .attach         = cpu_cgroup_attach,
9015         .legacy_cftypes = cpu_files,
9016         .early_init     = 1,
9017 };
9018
9019 #endif  /* CONFIG_CGROUP_SCHED */
9020
9021 void dump_cpu_task(int cpu)
9022 {
9023         pr_info("Task dump for CPU %d:\n", cpu);
9024         sched_show_task(cpu_curr(cpu));
9025 }