cpuset: Add new v2 cpuset.sched.partition flag
[linux-2.6-microblaze.git] / kernel / cgroup / cpuset.c
1 /*
2  *  kernel/cpuset.c
3  *
4  *  Processor and Memory placement constraints for sets of tasks.
5  *
6  *  Copyright (C) 2003 BULL SA.
7  *  Copyright (C) 2004-2007 Silicon Graphics, Inc.
8  *  Copyright (C) 2006 Google, Inc
9  *
10  *  Portions derived from Patrick Mochel's sysfs code.
11  *  sysfs is Copyright (c) 2001-3 Patrick Mochel
12  *
13  *  2003-10-10 Written by Simon Derr.
14  *  2003-10-22 Updates by Stephen Hemminger.
15  *  2004 May-July Rework by Paul Jackson.
16  *  2006 Rework by Paul Menage to use generic cgroups
17  *  2008 Rework of the scheduler domains and CPU hotplug handling
18  *       by Max Krasnyansky
19  *
20  *  This file is subject to the terms and conditions of the GNU General Public
21  *  License.  See the file COPYING in the main directory of the Linux
22  *  distribution for more details.
23  */
24
25 #include <linux/cpu.h>
26 #include <linux/cpumask.h>
27 #include <linux/cpuset.h>
28 #include <linux/err.h>
29 #include <linux/errno.h>
30 #include <linux/file.h>
31 #include <linux/fs.h>
32 #include <linux/init.h>
33 #include <linux/interrupt.h>
34 #include <linux/kernel.h>
35 #include <linux/kmod.h>
36 #include <linux/list.h>
37 #include <linux/mempolicy.h>
38 #include <linux/mm.h>
39 #include <linux/memory.h>
40 #include <linux/export.h>
41 #include <linux/mount.h>
42 #include <linux/namei.h>
43 #include <linux/pagemap.h>
44 #include <linux/proc_fs.h>
45 #include <linux/rcupdate.h>
46 #include <linux/sched.h>
47 #include <linux/sched/mm.h>
48 #include <linux/sched/task.h>
49 #include <linux/seq_file.h>
50 #include <linux/security.h>
51 #include <linux/slab.h>
52 #include <linux/spinlock.h>
53 #include <linux/stat.h>
54 #include <linux/string.h>
55 #include <linux/time.h>
56 #include <linux/time64.h>
57 #include <linux/backing-dev.h>
58 #include <linux/sort.h>
59 #include <linux/oom.h>
60 #include <linux/sched/isolation.h>
61 #include <linux/uaccess.h>
62 #include <linux/atomic.h>
63 #include <linux/mutex.h>
64 #include <linux/cgroup.h>
65 #include <linux/wait.h>
66
67 DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
68 DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
69
70 /* See "Frequency meter" comments, below. */
71
72 struct fmeter {
73         int cnt;                /* unprocessed events count */
74         int val;                /* most recent output value */
75         time64_t time;          /* clock (secs) when val computed */
76         spinlock_t lock;        /* guards read or write of above */
77 };
78
79 struct cpuset {
80         struct cgroup_subsys_state css;
81
82         unsigned long flags;            /* "unsigned long" so bitops work */
83
84         /*
85          * On default hierarchy:
86          *
87          * The user-configured masks can only be changed by writing to
88          * cpuset.cpus and cpuset.mems, and won't be limited by the
89          * parent masks.
90          *
91          * The effective masks is the real masks that apply to the tasks
92          * in the cpuset. They may be changed if the configured masks are
93          * changed or hotplug happens.
94          *
95          * effective_mask == configured_mask & parent's effective_mask,
96          * and if it ends up empty, it will inherit the parent's mask.
97          *
98          *
99          * On legacy hierachy:
100          *
101          * The user-configured masks are always the same with effective masks.
102          */
103
104         /* user-configured CPUs and Memory Nodes allow to tasks */
105         cpumask_var_t cpus_allowed;
106         nodemask_t mems_allowed;
107
108         /* effective CPUs and Memory Nodes allow to tasks */
109         cpumask_var_t effective_cpus;
110         nodemask_t effective_mems;
111
112         /*
113          * CPUs allocated to child sub-partitions (default hierarchy only)
114          * - CPUs granted by the parent = effective_cpus U subparts_cpus
115          * - effective_cpus and subparts_cpus are mutually exclusive.
116          */
117         cpumask_var_t subparts_cpus;
118
119         /*
120          * This is old Memory Nodes tasks took on.
121          *
122          * - top_cpuset.old_mems_allowed is initialized to mems_allowed.
123          * - A new cpuset's old_mems_allowed is initialized when some
124          *   task is moved into it.
125          * - old_mems_allowed is used in cpuset_migrate_mm() when we change
126          *   cpuset.mems_allowed and have tasks' nodemask updated, and
127          *   then old_mems_allowed is updated to mems_allowed.
128          */
129         nodemask_t old_mems_allowed;
130
131         struct fmeter fmeter;           /* memory_pressure filter */
132
133         /*
134          * Tasks are being attached to this cpuset.  Used to prevent
135          * zeroing cpus/mems_allowed between ->can_attach() and ->attach().
136          */
137         int attach_in_progress;
138
139         /* partition number for rebuild_sched_domains() */
140         int pn;
141
142         /* for custom sched domain */
143         int relax_domain_level;
144
145         /* number of CPUs in subparts_cpus */
146         int nr_subparts_cpus;
147
148         /* partition root state */
149         int partition_root_state;
150 };
151
152 /*
153  * Partition root states:
154  *
155  *   0 - not a partition root
156  *   1 - partition root
157  */
158 #define PRS_DISABLED            0
159 #define PRS_ENABLED             1
160
161 /*
162  * Temporary cpumasks for working with partitions that are passed among
163  * functions to avoid memory allocation in inner functions.
164  */
165 struct tmpmasks {
166         cpumask_var_t addmask, delmask; /* For partition root */
167         cpumask_var_t new_cpus;         /* For update_cpumasks_hier() */
168 };
169
170 static inline struct cpuset *css_cs(struct cgroup_subsys_state *css)
171 {
172         return css ? container_of(css, struct cpuset, css) : NULL;
173 }
174
175 /* Retrieve the cpuset for a task */
176 static inline struct cpuset *task_cs(struct task_struct *task)
177 {
178         return css_cs(task_css(task, cpuset_cgrp_id));
179 }
180
181 static inline struct cpuset *parent_cs(struct cpuset *cs)
182 {
183         return css_cs(cs->css.parent);
184 }
185
186 #ifdef CONFIG_NUMA
187 static inline bool task_has_mempolicy(struct task_struct *task)
188 {
189         return task->mempolicy;
190 }
191 #else
192 static inline bool task_has_mempolicy(struct task_struct *task)
193 {
194         return false;
195 }
196 #endif
197
198
199 /* bits in struct cpuset flags field */
200 typedef enum {
201         CS_ONLINE,
202         CS_CPU_EXCLUSIVE,
203         CS_MEM_EXCLUSIVE,
204         CS_MEM_HARDWALL,
205         CS_MEMORY_MIGRATE,
206         CS_SCHED_LOAD_BALANCE,
207         CS_SPREAD_PAGE,
208         CS_SPREAD_SLAB,
209 } cpuset_flagbits_t;
210
211 /* convenient tests for these bits */
212 static inline bool is_cpuset_online(struct cpuset *cs)
213 {
214         return test_bit(CS_ONLINE, &cs->flags) && !css_is_dying(&cs->css);
215 }
216
217 static inline int is_cpu_exclusive(const struct cpuset *cs)
218 {
219         return test_bit(CS_CPU_EXCLUSIVE, &cs->flags);
220 }
221
222 static inline int is_mem_exclusive(const struct cpuset *cs)
223 {
224         return test_bit(CS_MEM_EXCLUSIVE, &cs->flags);
225 }
226
227 static inline int is_mem_hardwall(const struct cpuset *cs)
228 {
229         return test_bit(CS_MEM_HARDWALL, &cs->flags);
230 }
231
232 static inline int is_sched_load_balance(const struct cpuset *cs)
233 {
234         return test_bit(CS_SCHED_LOAD_BALANCE, &cs->flags);
235 }
236
237 static inline int is_memory_migrate(const struct cpuset *cs)
238 {
239         return test_bit(CS_MEMORY_MIGRATE, &cs->flags);
240 }
241
242 static inline int is_spread_page(const struct cpuset *cs)
243 {
244         return test_bit(CS_SPREAD_PAGE, &cs->flags);
245 }
246
247 static inline int is_spread_slab(const struct cpuset *cs)
248 {
249         return test_bit(CS_SPREAD_SLAB, &cs->flags);
250 }
251
252 static inline int is_partition_root(const struct cpuset *cs)
253 {
254         return cs->partition_root_state;
255 }
256
257 static struct cpuset top_cpuset = {
258         .flags = ((1 << CS_ONLINE) | (1 << CS_CPU_EXCLUSIVE) |
259                   (1 << CS_MEM_EXCLUSIVE)),
260         .partition_root_state = PRS_ENABLED,
261 };
262
263 /**
264  * cpuset_for_each_child - traverse online children of a cpuset
265  * @child_cs: loop cursor pointing to the current child
266  * @pos_css: used for iteration
267  * @parent_cs: target cpuset to walk children of
268  *
269  * Walk @child_cs through the online children of @parent_cs.  Must be used
270  * with RCU read locked.
271  */
272 #define cpuset_for_each_child(child_cs, pos_css, parent_cs)             \
273         css_for_each_child((pos_css), &(parent_cs)->css)                \
274                 if (is_cpuset_online(((child_cs) = css_cs((pos_css)))))
275
276 /**
277  * cpuset_for_each_descendant_pre - pre-order walk of a cpuset's descendants
278  * @des_cs: loop cursor pointing to the current descendant
279  * @pos_css: used for iteration
280  * @root_cs: target cpuset to walk ancestor of
281  *
282  * Walk @des_cs through the online descendants of @root_cs.  Must be used
283  * with RCU read locked.  The caller may modify @pos_css by calling
284  * css_rightmost_descendant() to skip subtree.  @root_cs is included in the
285  * iteration and the first node to be visited.
286  */
287 #define cpuset_for_each_descendant_pre(des_cs, pos_css, root_cs)        \
288         css_for_each_descendant_pre((pos_css), &(root_cs)->css)         \
289                 if (is_cpuset_online(((des_cs) = css_cs((pos_css)))))
290
291 /*
292  * There are two global locks guarding cpuset structures - cpuset_mutex and
293  * callback_lock. We also require taking task_lock() when dereferencing a
294  * task's cpuset pointer. See "The task_lock() exception", at the end of this
295  * comment.
296  *
297  * A task must hold both locks to modify cpusets.  If a task holds
298  * cpuset_mutex, then it blocks others wanting that mutex, ensuring that it
299  * is the only task able to also acquire callback_lock and be able to
300  * modify cpusets.  It can perform various checks on the cpuset structure
301  * first, knowing nothing will change.  It can also allocate memory while
302  * just holding cpuset_mutex.  While it is performing these checks, various
303  * callback routines can briefly acquire callback_lock to query cpusets.
304  * Once it is ready to make the changes, it takes callback_lock, blocking
305  * everyone else.
306  *
307  * Calls to the kernel memory allocator can not be made while holding
308  * callback_lock, as that would risk double tripping on callback_lock
309  * from one of the callbacks into the cpuset code from within
310  * __alloc_pages().
311  *
312  * If a task is only holding callback_lock, then it has read-only
313  * access to cpusets.
314  *
315  * Now, the task_struct fields mems_allowed and mempolicy may be changed
316  * by other task, we use alloc_lock in the task_struct fields to protect
317  * them.
318  *
319  * The cpuset_common_file_read() handlers only hold callback_lock across
320  * small pieces of code, such as when reading out possibly multi-word
321  * cpumasks and nodemasks.
322  *
323  * Accessing a task's cpuset should be done in accordance with the
324  * guidelines for accessing subsystem state in kernel/cgroup.c
325  */
326
327 static DEFINE_MUTEX(cpuset_mutex);
328 static DEFINE_SPINLOCK(callback_lock);
329
330 static struct workqueue_struct *cpuset_migrate_mm_wq;
331
332 /*
333  * CPU / memory hotplug is handled asynchronously.
334  */
335 static void cpuset_hotplug_workfn(struct work_struct *work);
336 static DECLARE_WORK(cpuset_hotplug_work, cpuset_hotplug_workfn);
337
338 static DECLARE_WAIT_QUEUE_HEAD(cpuset_attach_wq);
339
340 /*
341  * Cgroup v2 behavior is used when on default hierarchy or the
342  * cgroup_v2_mode flag is set.
343  */
344 static inline bool is_in_v2_mode(void)
345 {
346         return cgroup_subsys_on_dfl(cpuset_cgrp_subsys) ||
347               (cpuset_cgrp_subsys.root->flags & CGRP_ROOT_CPUSET_V2_MODE);
348 }
349
350 /*
351  * This is ugly, but preserves the userspace API for existing cpuset
352  * users. If someone tries to mount the "cpuset" filesystem, we
353  * silently switch it to mount "cgroup" instead
354  */
355 static struct dentry *cpuset_mount(struct file_system_type *fs_type,
356                          int flags, const char *unused_dev_name, void *data)
357 {
358         struct file_system_type *cgroup_fs = get_fs_type("cgroup");
359         struct dentry *ret = ERR_PTR(-ENODEV);
360         if (cgroup_fs) {
361                 char mountopts[] =
362                         "cpuset,noprefix,"
363                         "release_agent=/sbin/cpuset_release_agent";
364                 ret = cgroup_fs->mount(cgroup_fs, flags,
365                                            unused_dev_name, mountopts);
366                 put_filesystem(cgroup_fs);
367         }
368         return ret;
369 }
370
371 static struct file_system_type cpuset_fs_type = {
372         .name = "cpuset",
373         .mount = cpuset_mount,
374 };
375
376 /*
377  * Return in pmask the portion of a cpusets's cpus_allowed that
378  * are online.  If none are online, walk up the cpuset hierarchy
379  * until we find one that does have some online cpus.
380  *
381  * One way or another, we guarantee to return some non-empty subset
382  * of cpu_online_mask.
383  *
384  * Call with callback_lock or cpuset_mutex held.
385  */
386 static void guarantee_online_cpus(struct cpuset *cs, struct cpumask *pmask)
387 {
388         while (!cpumask_intersects(cs->effective_cpus, cpu_online_mask)) {
389                 cs = parent_cs(cs);
390                 if (unlikely(!cs)) {
391                         /*
392                          * The top cpuset doesn't have any online cpu as a
393                          * consequence of a race between cpuset_hotplug_work
394                          * and cpu hotplug notifier.  But we know the top
395                          * cpuset's effective_cpus is on its way to to be
396                          * identical to cpu_online_mask.
397                          */
398                         cpumask_copy(pmask, cpu_online_mask);
399                         return;
400                 }
401         }
402         cpumask_and(pmask, cs->effective_cpus, cpu_online_mask);
403 }
404
405 /*
406  * Return in *pmask the portion of a cpusets's mems_allowed that
407  * are online, with memory.  If none are online with memory, walk
408  * up the cpuset hierarchy until we find one that does have some
409  * online mems.  The top cpuset always has some mems online.
410  *
411  * One way or another, we guarantee to return some non-empty subset
412  * of node_states[N_MEMORY].
413  *
414  * Call with callback_lock or cpuset_mutex held.
415  */
416 static void guarantee_online_mems(struct cpuset *cs, nodemask_t *pmask)
417 {
418         while (!nodes_intersects(cs->effective_mems, node_states[N_MEMORY]))
419                 cs = parent_cs(cs);
420         nodes_and(*pmask, cs->effective_mems, node_states[N_MEMORY]);
421 }
422
423 /*
424  * update task's spread flag if cpuset's page/slab spread flag is set
425  *
426  * Call with callback_lock or cpuset_mutex held.
427  */
428 static void cpuset_update_task_spread_flag(struct cpuset *cs,
429                                         struct task_struct *tsk)
430 {
431         if (is_spread_page(cs))
432                 task_set_spread_page(tsk);
433         else
434                 task_clear_spread_page(tsk);
435
436         if (is_spread_slab(cs))
437                 task_set_spread_slab(tsk);
438         else
439                 task_clear_spread_slab(tsk);
440 }
441
442 /*
443  * is_cpuset_subset(p, q) - Is cpuset p a subset of cpuset q?
444  *
445  * One cpuset is a subset of another if all its allowed CPUs and
446  * Memory Nodes are a subset of the other, and its exclusive flags
447  * are only set if the other's are set.  Call holding cpuset_mutex.
448  */
449
450 static int is_cpuset_subset(const struct cpuset *p, const struct cpuset *q)
451 {
452         return  cpumask_subset(p->cpus_allowed, q->cpus_allowed) &&
453                 nodes_subset(p->mems_allowed, q->mems_allowed) &&
454                 is_cpu_exclusive(p) <= is_cpu_exclusive(q) &&
455                 is_mem_exclusive(p) <= is_mem_exclusive(q);
456 }
457
458 /**
459  * alloc_cpumasks - allocate three cpumasks for cpuset
460  * @cs:  the cpuset that have cpumasks to be allocated.
461  * @tmp: the tmpmasks structure pointer
462  * Return: 0 if successful, -ENOMEM otherwise.
463  *
464  * Only one of the two input arguments should be non-NULL.
465  */
466 static inline int alloc_cpumasks(struct cpuset *cs, struct tmpmasks *tmp)
467 {
468         cpumask_var_t *pmask1, *pmask2, *pmask3;
469
470         if (cs) {
471                 pmask1 = &cs->cpus_allowed;
472                 pmask2 = &cs->effective_cpus;
473                 pmask3 = &cs->subparts_cpus;
474         } else {
475                 pmask1 = &tmp->new_cpus;
476                 pmask2 = &tmp->addmask;
477                 pmask3 = &tmp->delmask;
478         }
479
480         if (!zalloc_cpumask_var(pmask1, GFP_KERNEL))
481                 return -ENOMEM;
482
483         if (!zalloc_cpumask_var(pmask2, GFP_KERNEL))
484                 goto free_one;
485
486         if (!zalloc_cpumask_var(pmask3, GFP_KERNEL))
487                 goto free_two;
488
489         return 0;
490
491 free_two:
492         free_cpumask_var(*pmask2);
493 free_one:
494         free_cpumask_var(*pmask1);
495         return -ENOMEM;
496 }
497
498 /**
499  * free_cpumasks - free cpumasks in a tmpmasks structure
500  * @cs:  the cpuset that have cpumasks to be free.
501  * @tmp: the tmpmasks structure pointer
502  */
503 static inline void free_cpumasks(struct cpuset *cs, struct tmpmasks *tmp)
504 {
505         if (cs) {
506                 free_cpumask_var(cs->cpus_allowed);
507                 free_cpumask_var(cs->effective_cpus);
508                 free_cpumask_var(cs->subparts_cpus);
509         }
510         if (tmp) {
511                 free_cpumask_var(tmp->new_cpus);
512                 free_cpumask_var(tmp->addmask);
513                 free_cpumask_var(tmp->delmask);
514         }
515 }
516
517 /**
518  * alloc_trial_cpuset - allocate a trial cpuset
519  * @cs: the cpuset that the trial cpuset duplicates
520  */
521 static struct cpuset *alloc_trial_cpuset(struct cpuset *cs)
522 {
523         struct cpuset *trial;
524
525         trial = kmemdup(cs, sizeof(*cs), GFP_KERNEL);
526         if (!trial)
527                 return NULL;
528
529         if (alloc_cpumasks(trial, NULL)) {
530                 kfree(trial);
531                 return NULL;
532         }
533
534         cpumask_copy(trial->cpus_allowed, cs->cpus_allowed);
535         cpumask_copy(trial->effective_cpus, cs->effective_cpus);
536         return trial;
537 }
538
539 /**
540  * free_cpuset - free the cpuset
541  * @cs: the cpuset to be freed
542  */
543 static inline void free_cpuset(struct cpuset *cs)
544 {
545         free_cpumasks(cs, NULL);
546         kfree(cs);
547 }
548
549 /*
550  * validate_change() - Used to validate that any proposed cpuset change
551  *                     follows the structural rules for cpusets.
552  *
553  * If we replaced the flag and mask values of the current cpuset
554  * (cur) with those values in the trial cpuset (trial), would
555  * our various subset and exclusive rules still be valid?  Presumes
556  * cpuset_mutex held.
557  *
558  * 'cur' is the address of an actual, in-use cpuset.  Operations
559  * such as list traversal that depend on the actual address of the
560  * cpuset in the list must use cur below, not trial.
561  *
562  * 'trial' is the address of bulk structure copy of cur, with
563  * perhaps one or more of the fields cpus_allowed, mems_allowed,
564  * or flags changed to new, trial values.
565  *
566  * Return 0 if valid, -errno if not.
567  */
568
569 static int validate_change(struct cpuset *cur, struct cpuset *trial)
570 {
571         struct cgroup_subsys_state *css;
572         struct cpuset *c, *par;
573         int ret;
574
575         rcu_read_lock();
576
577         /* Each of our child cpusets must be a subset of us */
578         ret = -EBUSY;
579         cpuset_for_each_child(c, css, cur)
580                 if (!is_cpuset_subset(c, trial))
581                         goto out;
582
583         /* Remaining checks don't apply to root cpuset */
584         ret = 0;
585         if (cur == &top_cpuset)
586                 goto out;
587
588         par = parent_cs(cur);
589
590         /* On legacy hiearchy, we must be a subset of our parent cpuset. */
591         ret = -EACCES;
592         if (!is_in_v2_mode() && !is_cpuset_subset(trial, par))
593                 goto out;
594
595         /*
596          * If either I or some sibling (!= me) is exclusive, we can't
597          * overlap
598          */
599         ret = -EINVAL;
600         cpuset_for_each_child(c, css, par) {
601                 if ((is_cpu_exclusive(trial) || is_cpu_exclusive(c)) &&
602                     c != cur &&
603                     cpumask_intersects(trial->cpus_allowed, c->cpus_allowed))
604                         goto out;
605                 if ((is_mem_exclusive(trial) || is_mem_exclusive(c)) &&
606                     c != cur &&
607                     nodes_intersects(trial->mems_allowed, c->mems_allowed))
608                         goto out;
609         }
610
611         /*
612          * Cpusets with tasks - existing or newly being attached - can't
613          * be changed to have empty cpus_allowed or mems_allowed.
614          */
615         ret = -ENOSPC;
616         if ((cgroup_is_populated(cur->css.cgroup) || cur->attach_in_progress)) {
617                 if (!cpumask_empty(cur->cpus_allowed) &&
618                     cpumask_empty(trial->cpus_allowed))
619                         goto out;
620                 if (!nodes_empty(cur->mems_allowed) &&
621                     nodes_empty(trial->mems_allowed))
622                         goto out;
623         }
624
625         /*
626          * We can't shrink if we won't have enough room for SCHED_DEADLINE
627          * tasks.
628          */
629         ret = -EBUSY;
630         if (is_cpu_exclusive(cur) &&
631             !cpuset_cpumask_can_shrink(cur->cpus_allowed,
632                                        trial->cpus_allowed))
633                 goto out;
634
635         ret = 0;
636 out:
637         rcu_read_unlock();
638         return ret;
639 }
640
641 #ifdef CONFIG_SMP
642 /*
643  * Helper routine for generate_sched_domains().
644  * Do cpusets a, b have overlapping effective cpus_allowed masks?
645  */
646 static int cpusets_overlap(struct cpuset *a, struct cpuset *b)
647 {
648         return cpumask_intersects(a->effective_cpus, b->effective_cpus);
649 }
650
651 static void
652 update_domain_attr(struct sched_domain_attr *dattr, struct cpuset *c)
653 {
654         if (dattr->relax_domain_level < c->relax_domain_level)
655                 dattr->relax_domain_level = c->relax_domain_level;
656         return;
657 }
658
659 static void update_domain_attr_tree(struct sched_domain_attr *dattr,
660                                     struct cpuset *root_cs)
661 {
662         struct cpuset *cp;
663         struct cgroup_subsys_state *pos_css;
664
665         rcu_read_lock();
666         cpuset_for_each_descendant_pre(cp, pos_css, root_cs) {
667                 /* skip the whole subtree if @cp doesn't have any CPU */
668                 if (cpumask_empty(cp->cpus_allowed)) {
669                         pos_css = css_rightmost_descendant(pos_css);
670                         continue;
671                 }
672
673                 if (is_sched_load_balance(cp))
674                         update_domain_attr(dattr, cp);
675         }
676         rcu_read_unlock();
677 }
678
679 /* Must be called with cpuset_mutex held.  */
680 static inline int nr_cpusets(void)
681 {
682         /* jump label reference count + the top-level cpuset */
683         return static_key_count(&cpusets_enabled_key.key) + 1;
684 }
685
686 /*
687  * generate_sched_domains()
688  *
689  * This function builds a partial partition of the systems CPUs
690  * A 'partial partition' is a set of non-overlapping subsets whose
691  * union is a subset of that set.
692  * The output of this function needs to be passed to kernel/sched/core.c
693  * partition_sched_domains() routine, which will rebuild the scheduler's
694  * load balancing domains (sched domains) as specified by that partial
695  * partition.
696  *
697  * See "What is sched_load_balance" in Documentation/cgroup-v1/cpusets.txt
698  * for a background explanation of this.
699  *
700  * Does not return errors, on the theory that the callers of this
701  * routine would rather not worry about failures to rebuild sched
702  * domains when operating in the severe memory shortage situations
703  * that could cause allocation failures below.
704  *
705  * Must be called with cpuset_mutex held.
706  *
707  * The three key local variables below are:
708  *    q  - a linked-list queue of cpuset pointers, used to implement a
709  *         top-down scan of all cpusets.  This scan loads a pointer
710  *         to each cpuset marked is_sched_load_balance into the
711  *         array 'csa'.  For our purposes, rebuilding the schedulers
712  *         sched domains, we can ignore !is_sched_load_balance cpusets.
713  *  csa  - (for CpuSet Array) Array of pointers to all the cpusets
714  *         that need to be load balanced, for convenient iterative
715  *         access by the subsequent code that finds the best partition,
716  *         i.e the set of domains (subsets) of CPUs such that the
717  *         cpus_allowed of every cpuset marked is_sched_load_balance
718  *         is a subset of one of these domains, while there are as
719  *         many such domains as possible, each as small as possible.
720  * doms  - Conversion of 'csa' to an array of cpumasks, for passing to
721  *         the kernel/sched/core.c routine partition_sched_domains() in a
722  *         convenient format, that can be easily compared to the prior
723  *         value to determine what partition elements (sched domains)
724  *         were changed (added or removed.)
725  *
726  * Finding the best partition (set of domains):
727  *      The triple nested loops below over i, j, k scan over the
728  *      load balanced cpusets (using the array of cpuset pointers in
729  *      csa[]) looking for pairs of cpusets that have overlapping
730  *      cpus_allowed, but which don't have the same 'pn' partition
731  *      number and gives them in the same partition number.  It keeps
732  *      looping on the 'restart' label until it can no longer find
733  *      any such pairs.
734  *
735  *      The union of the cpus_allowed masks from the set of
736  *      all cpusets having the same 'pn' value then form the one
737  *      element of the partition (one sched domain) to be passed to
738  *      partition_sched_domains().
739  */
740 static int generate_sched_domains(cpumask_var_t **domains,
741                         struct sched_domain_attr **attributes)
742 {
743         struct cpuset *cp;      /* scans q */
744         struct cpuset **csa;    /* array of all cpuset ptrs */
745         int csn;                /* how many cpuset ptrs in csa so far */
746         int i, j, k;            /* indices for partition finding loops */
747         cpumask_var_t *doms;    /* resulting partition; i.e. sched domains */
748         struct sched_domain_attr *dattr;  /* attributes for custom domains */
749         int ndoms = 0;          /* number of sched domains in result */
750         int nslot;              /* next empty doms[] struct cpumask slot */
751         struct cgroup_subsys_state *pos_css;
752
753         doms = NULL;
754         dattr = NULL;
755         csa = NULL;
756
757         /* Special case for the 99% of systems with one, full, sched domain */
758         if (is_sched_load_balance(&top_cpuset)) {
759                 ndoms = 1;
760                 doms = alloc_sched_domains(ndoms);
761                 if (!doms)
762                         goto done;
763
764                 dattr = kmalloc(sizeof(struct sched_domain_attr), GFP_KERNEL);
765                 if (dattr) {
766                         *dattr = SD_ATTR_INIT;
767                         update_domain_attr_tree(dattr, &top_cpuset);
768                 }
769                 cpumask_and(doms[0], top_cpuset.effective_cpus,
770                             housekeeping_cpumask(HK_FLAG_DOMAIN));
771
772                 goto done;
773         }
774
775         csa = kmalloc_array(nr_cpusets(), sizeof(cp), GFP_KERNEL);
776         if (!csa)
777                 goto done;
778         csn = 0;
779
780         rcu_read_lock();
781         cpuset_for_each_descendant_pre(cp, pos_css, &top_cpuset) {
782                 if (cp == &top_cpuset)
783                         continue;
784                 /*
785                  * Continue traversing beyond @cp iff @cp has some CPUs and
786                  * isn't load balancing.  The former is obvious.  The
787                  * latter: All child cpusets contain a subset of the
788                  * parent's cpus, so just skip them, and then we call
789                  * update_domain_attr_tree() to calc relax_domain_level of
790                  * the corresponding sched domain.
791                  */
792                 if (!cpumask_empty(cp->cpus_allowed) &&
793                     !(is_sched_load_balance(cp) &&
794                       cpumask_intersects(cp->cpus_allowed,
795                                          housekeeping_cpumask(HK_FLAG_DOMAIN))))
796                         continue;
797
798                 if (is_sched_load_balance(cp))
799                         csa[csn++] = cp;
800
801                 /* skip @cp's subtree */
802                 pos_css = css_rightmost_descendant(pos_css);
803         }
804         rcu_read_unlock();
805
806         for (i = 0; i < csn; i++)
807                 csa[i]->pn = i;
808         ndoms = csn;
809
810 restart:
811         /* Find the best partition (set of sched domains) */
812         for (i = 0; i < csn; i++) {
813                 struct cpuset *a = csa[i];
814                 int apn = a->pn;
815
816                 for (j = 0; j < csn; j++) {
817                         struct cpuset *b = csa[j];
818                         int bpn = b->pn;
819
820                         if (apn != bpn && cpusets_overlap(a, b)) {
821                                 for (k = 0; k < csn; k++) {
822                                         struct cpuset *c = csa[k];
823
824                                         if (c->pn == bpn)
825                                                 c->pn = apn;
826                                 }
827                                 ndoms--;        /* one less element */
828                                 goto restart;
829                         }
830                 }
831         }
832
833         /*
834          * Now we know how many domains to create.
835          * Convert <csn, csa> to <ndoms, doms> and populate cpu masks.
836          */
837         doms = alloc_sched_domains(ndoms);
838         if (!doms)
839                 goto done;
840
841         /*
842          * The rest of the code, including the scheduler, can deal with
843          * dattr==NULL case. No need to abort if alloc fails.
844          */
845         dattr = kmalloc_array(ndoms, sizeof(struct sched_domain_attr),
846                               GFP_KERNEL);
847
848         for (nslot = 0, i = 0; i < csn; i++) {
849                 struct cpuset *a = csa[i];
850                 struct cpumask *dp;
851                 int apn = a->pn;
852
853                 if (apn < 0) {
854                         /* Skip completed partitions */
855                         continue;
856                 }
857
858                 dp = doms[nslot];
859
860                 if (nslot == ndoms) {
861                         static int warnings = 10;
862                         if (warnings) {
863                                 pr_warn("rebuild_sched_domains confused: nslot %d, ndoms %d, csn %d, i %d, apn %d\n",
864                                         nslot, ndoms, csn, i, apn);
865                                 warnings--;
866                         }
867                         continue;
868                 }
869
870                 cpumask_clear(dp);
871                 if (dattr)
872                         *(dattr + nslot) = SD_ATTR_INIT;
873                 for (j = i; j < csn; j++) {
874                         struct cpuset *b = csa[j];
875
876                         if (apn == b->pn) {
877                                 cpumask_or(dp, dp, b->effective_cpus);
878                                 cpumask_and(dp, dp, housekeeping_cpumask(HK_FLAG_DOMAIN));
879                                 if (dattr)
880                                         update_domain_attr_tree(dattr + nslot, b);
881
882                                 /* Done with this partition */
883                                 b->pn = -1;
884                         }
885                 }
886                 nslot++;
887         }
888         BUG_ON(nslot != ndoms);
889
890 done:
891         kfree(csa);
892
893         /*
894          * Fallback to the default domain if kmalloc() failed.
895          * See comments in partition_sched_domains().
896          */
897         if (doms == NULL)
898                 ndoms = 1;
899
900         *domains    = doms;
901         *attributes = dattr;
902         return ndoms;
903 }
904
905 /*
906  * Rebuild scheduler domains.
907  *
908  * If the flag 'sched_load_balance' of any cpuset with non-empty
909  * 'cpus' changes, or if the 'cpus' allowed changes in any cpuset
910  * which has that flag enabled, or if any cpuset with a non-empty
911  * 'cpus' is removed, then call this routine to rebuild the
912  * scheduler's dynamic sched domains.
913  *
914  * Call with cpuset_mutex held.  Takes get_online_cpus().
915  */
916 static void rebuild_sched_domains_locked(void)
917 {
918         struct sched_domain_attr *attr;
919         cpumask_var_t *doms;
920         int ndoms;
921
922         lockdep_assert_held(&cpuset_mutex);
923         get_online_cpus();
924
925         /*
926          * We have raced with CPU hotplug. Don't do anything to avoid
927          * passing doms with offlined cpu to partition_sched_domains().
928          * Anyways, hotplug work item will rebuild sched domains.
929          */
930         if (!cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask))
931                 goto out;
932
933         /* Generate domain masks and attrs */
934         ndoms = generate_sched_domains(&doms, &attr);
935
936         /* Have scheduler rebuild the domains */
937         partition_sched_domains(ndoms, doms, attr);
938 out:
939         put_online_cpus();
940 }
941 #else /* !CONFIG_SMP */
942 static void rebuild_sched_domains_locked(void)
943 {
944 }
945 #endif /* CONFIG_SMP */
946
947 void rebuild_sched_domains(void)
948 {
949         mutex_lock(&cpuset_mutex);
950         rebuild_sched_domains_locked();
951         mutex_unlock(&cpuset_mutex);
952 }
953
954 /**
955  * update_tasks_cpumask - Update the cpumasks of tasks in the cpuset.
956  * @cs: the cpuset in which each task's cpus_allowed mask needs to be changed
957  *
958  * Iterate through each task of @cs updating its cpus_allowed to the
959  * effective cpuset's.  As this function is called with cpuset_mutex held,
960  * cpuset membership stays stable.
961  */
962 static void update_tasks_cpumask(struct cpuset *cs)
963 {
964         struct css_task_iter it;
965         struct task_struct *task;
966
967         css_task_iter_start(&cs->css, 0, &it);
968         while ((task = css_task_iter_next(&it)))
969                 set_cpus_allowed_ptr(task, cs->effective_cpus);
970         css_task_iter_end(&it);
971 }
972
973 /**
974  * compute_effective_cpumask - Compute the effective cpumask of the cpuset
975  * @new_cpus: the temp variable for the new effective_cpus mask
976  * @cs: the cpuset the need to recompute the new effective_cpus mask
977  * @parent: the parent cpuset
978  *
979  * If the parent has subpartition CPUs, include them in the list of
980  * allowable CPUs in computing the new effective_cpus mask.
981  */
982 static void compute_effective_cpumask(struct cpumask *new_cpus,
983                                       struct cpuset *cs, struct cpuset *parent)
984 {
985         if (parent->nr_subparts_cpus) {
986                 cpumask_or(new_cpus, parent->effective_cpus,
987                            parent->subparts_cpus);
988                 cpumask_and(new_cpus, new_cpus, cs->cpus_allowed);
989         } else {
990                 cpumask_and(new_cpus, cs->cpus_allowed, parent->effective_cpus);
991         }
992 }
993
994 /*
995  * Commands for update_parent_subparts_cpumask
996  */
997 enum subparts_cmd {
998         partcmd_enable,         /* Enable partition root         */
999         partcmd_disable,        /* Disable partition root        */
1000         partcmd_update,         /* Update parent's subparts_cpus */
1001 };
1002
1003 /**
1004  * update_parent_subparts_cpumask - update subparts_cpus mask of parent cpuset
1005  * @cpuset:  The cpuset that requests change in partition root state
1006  * @cmd:     Partition root state change command
1007  * @newmask: Optional new cpumask for partcmd_update
1008  * @tmp:     Temporary addmask and delmask
1009  * Return:   0, 1 or an error code
1010  *
1011  * For partcmd_enable, the cpuset is being transformed from a non-partition
1012  * root to a partition root. The cpus_allowed mask of the given cpuset will
1013  * be put into parent's subparts_cpus and taken away from parent's
1014  * effective_cpus. The function will return 0 if all the CPUs listed in
1015  * cpus_allowed can be granted or an error code will be returned.
1016  *
1017  * For partcmd_disable, the cpuset is being transofrmed from a partition
1018  * root back to a non-partition root. any CPUs in cpus_allowed that are in
1019  * parent's subparts_cpus will be taken away from that cpumask and put back
1020  * into parent's effective_cpus. 0 should always be returned.
1021  *
1022  * For partcmd_update, if the optional newmask is specified, the cpu
1023  * list is to be changed from cpus_allowed to newmask. Otherwise,
1024  * cpus_allowed is assumed to remain the same.  The function will return
1025  * 1 if changes to parent's subparts_cpus and effective_cpus happen or 0
1026  * otherwise. In case of error, an error code will be returned.
1027  *
1028  * The partcmd_enable and partcmd_disable commands are used by
1029  * update_prstate(). The partcmd_update command is used by
1030  * update_cpumasks_hier() with newmask NULL and update_cpumask() with
1031  * newmask set.
1032  *
1033  * The checking is more strict when enabling partition root than the
1034  * other two commands.
1035  *
1036  * Because of the implicit cpu exclusive nature of a partition root,
1037  * cpumask changes that violates the cpu exclusivity rule will not be
1038  * permitted when checked by validate_change(). The validate_change()
1039  * function will also prevent any changes to the cpu list if it is not
1040  * a superset of children's cpu lists.
1041  */
1042 static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd,
1043                                           struct cpumask *newmask,
1044                                           struct tmpmasks *tmp)
1045 {
1046         struct cpuset *parent = parent_cs(cpuset);
1047         int adding;     /* Moving cpus from effective_cpus to subparts_cpus */
1048         int deleting;   /* Moving cpus from subparts_cpus to effective_cpus */
1049
1050         lockdep_assert_held(&cpuset_mutex);
1051
1052         /*
1053          * The parent must be a partition root.
1054          * The new cpumask, if present, or the current cpus_allowed must
1055          * not be empty.
1056          */
1057         if (!is_partition_root(parent) ||
1058            (newmask && cpumask_empty(newmask)) ||
1059            (!newmask && cpumask_empty(cpuset->cpus_allowed)))
1060                 return -EINVAL;
1061
1062         /*
1063          * Enabling/disabling partition root is not allowed if there are
1064          * online children.
1065          */
1066         if ((cmd != partcmd_update) && css_has_online_children(&cpuset->css))
1067                 return -EBUSY;
1068
1069         /*
1070          * Enabling partition root is not allowed if not all the CPUs
1071          * can be granted from parent's effective_cpus or at least one
1072          * CPU will be left after that.
1073          */
1074         if ((cmd == partcmd_enable) &&
1075            (!cpumask_subset(cpuset->cpus_allowed, parent->effective_cpus) ||
1076              cpumask_equal(cpuset->cpus_allowed, parent->effective_cpus)))
1077                 return -EINVAL;
1078
1079         /*
1080          * A cpumask update cannot make parent's effective_cpus become empty.
1081          */
1082         adding = deleting = false;
1083         if (cmd == partcmd_enable) {
1084                 cpumask_copy(tmp->addmask, cpuset->cpus_allowed);
1085                 adding = true;
1086         } else if (cmd == partcmd_disable) {
1087                 deleting = cpumask_and(tmp->delmask, cpuset->cpus_allowed,
1088                                        parent->subparts_cpus);
1089         } else if (newmask) {
1090                 /*
1091                  * partcmd_update with newmask:
1092                  *
1093                  * delmask = cpus_allowed & ~newmask & parent->subparts_cpus
1094                  * addmask = newmask & parent->effective_cpus
1095                  *                   & ~parent->subparts_cpus
1096                  */
1097                 cpumask_andnot(tmp->delmask, cpuset->cpus_allowed, newmask);
1098                 deleting = cpumask_and(tmp->delmask, tmp->delmask,
1099                                        parent->subparts_cpus);
1100
1101                 cpumask_and(tmp->addmask, newmask, parent->effective_cpus);
1102                 adding = cpumask_andnot(tmp->addmask, tmp->addmask,
1103                                         parent->subparts_cpus);
1104                 /*
1105                  * Return error if the new effective_cpus could become empty.
1106                  */
1107                 if (adding && !deleting &&
1108                     cpumask_equal(parent->effective_cpus, tmp->addmask))
1109                         return -EINVAL;
1110         } else {
1111                 /*
1112                  * partcmd_update w/o newmask:
1113                  *
1114                  * addmask = cpus_allowed & parent->effectiveb_cpus
1115                  *
1116                  * Note that parent's subparts_cpus may have been
1117                  * pre-shrunk in case the CPUs granted to the parent
1118                  * by the grandparent changes. So no deletion is needed.
1119                  */
1120                 adding = cpumask_and(tmp->addmask, cpuset->cpus_allowed,
1121                                      parent->effective_cpus);
1122                 if (cpumask_equal(tmp->addmask, parent->effective_cpus))
1123                         return -EINVAL;
1124         }
1125
1126         if (!adding && !deleting)
1127                 return 0;
1128
1129         /*
1130          * Change the parent's subparts_cpus.
1131          * Newly added CPUs will be removed from effective_cpus and
1132          * newly deleted ones will be added back to effective_cpus.
1133          */
1134         spin_lock_irq(&callback_lock);
1135         if (adding) {
1136                 cpumask_or(parent->subparts_cpus,
1137                            parent->subparts_cpus, tmp->addmask);
1138                 cpumask_andnot(parent->effective_cpus,
1139                                parent->effective_cpus, tmp->addmask);
1140         }
1141         if (deleting) {
1142                 cpumask_andnot(parent->subparts_cpus,
1143                                parent->subparts_cpus, tmp->delmask);
1144                 cpumask_or(parent->effective_cpus,
1145                            parent->effective_cpus, tmp->delmask);
1146         }
1147
1148         parent->nr_subparts_cpus = cpumask_weight(parent->subparts_cpus);
1149         spin_unlock_irq(&callback_lock);
1150
1151         return cmd == partcmd_update;
1152 }
1153
1154 /*
1155  * update_cpumasks_hier - Update effective cpumasks and tasks in the subtree
1156  * @cs:  the cpuset to consider
1157  * @tmp: temp variables for calculating effective_cpus & partition setup
1158  *
1159  * When congifured cpumask is changed, the effective cpumasks of this cpuset
1160  * and all its descendants need to be updated.
1161  *
1162  * On legacy hierachy, effective_cpus will be the same with cpu_allowed.
1163  *
1164  * Called with cpuset_mutex held
1165  */
1166 static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp)
1167 {
1168         struct cpuset *cp;
1169         struct cgroup_subsys_state *pos_css;
1170         bool need_rebuild_sched_domains = false;
1171
1172         rcu_read_lock();
1173         cpuset_for_each_descendant_pre(cp, pos_css, cs) {
1174                 struct cpuset *parent = parent_cs(cp);
1175                 bool cs_empty;
1176
1177                 compute_effective_cpumask(tmp->new_cpus, cp, parent);
1178                 cs_empty = cpumask_empty(tmp->new_cpus);
1179
1180                 /*
1181                  * A partition root cannot have empty effective_cpus
1182                  */
1183                 WARN_ON_ONCE(cs_empty && is_partition_root(cp));
1184
1185                 /*
1186                  * If it becomes empty, inherit the effective mask of the
1187                  * parent, which is guaranteed to have some CPUs.
1188                  */
1189                 if (is_in_v2_mode() && cs_empty)
1190                         cpumask_copy(tmp->new_cpus, parent->effective_cpus);
1191
1192                 /*
1193                  * Skip the whole subtree if the cpumask remains the same
1194                  * and has no partition root state.
1195                  */
1196                 if (!is_partition_root(cp) &&
1197                     cpumask_equal(tmp->new_cpus, cp->effective_cpus)) {
1198                         pos_css = css_rightmost_descendant(pos_css);
1199                         continue;
1200                 }
1201
1202                 /*
1203                  * update_parent_subparts_cpumask() should have been called
1204                  * for cs already in update_cpumask(). We should also call
1205                  * update_tasks_cpumask() again for tasks in the parent
1206                  * cpuset if the parent's subparts_cpus changes.
1207                  */
1208                 if ((cp != cs) && cp->partition_root_state &&
1209                     update_parent_subparts_cpumask(cp, partcmd_update,
1210                                                    NULL, tmp)) {
1211                         if (parent != &top_cpuset)
1212                                 update_tasks_cpumask(parent);
1213                 }
1214
1215                 if (!css_tryget_online(&cp->css))
1216                         continue;
1217                 rcu_read_unlock();
1218
1219                 spin_lock_irq(&callback_lock);
1220
1221                 cpumask_copy(cp->effective_cpus, tmp->new_cpus);
1222                 if (cp->nr_subparts_cpus) {
1223                         /*
1224                          * Make sure that effective_cpus & subparts_cpus
1225                          * are mutually exclusive.
1226                          */
1227                         cpumask_andnot(cp->effective_cpus, cp->effective_cpus,
1228                                        cp->subparts_cpus);
1229                 }
1230                 spin_unlock_irq(&callback_lock);
1231
1232                 WARN_ON(!is_in_v2_mode() &&
1233                         !cpumask_equal(cp->cpus_allowed, cp->effective_cpus));
1234
1235                 update_tasks_cpumask(cp);
1236
1237                 /*
1238                  * If the effective cpumask of any non-empty cpuset is changed,
1239                  * we need to rebuild sched domains.
1240                  */
1241                 if (!cpumask_empty(cp->cpus_allowed) &&
1242                     is_sched_load_balance(cp))
1243                         need_rebuild_sched_domains = true;
1244
1245                 rcu_read_lock();
1246                 css_put(&cp->css);
1247         }
1248         rcu_read_unlock();
1249
1250         if (need_rebuild_sched_domains)
1251                 rebuild_sched_domains_locked();
1252 }
1253
1254 /**
1255  * update_cpumask - update the cpus_allowed mask of a cpuset and all tasks in it
1256  * @cs: the cpuset to consider
1257  * @trialcs: trial cpuset
1258  * @buf: buffer of cpu numbers written to this cpuset
1259  */
1260 static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
1261                           const char *buf)
1262 {
1263         int retval;
1264         struct tmpmasks tmp;
1265
1266         /* top_cpuset.cpus_allowed tracks cpu_online_mask; it's read-only */
1267         if (cs == &top_cpuset)
1268                 return -EACCES;
1269
1270         /*
1271          * An empty cpus_allowed is ok only if the cpuset has no tasks.
1272          * Since cpulist_parse() fails on an empty mask, we special case
1273          * that parsing.  The validate_change() call ensures that cpusets
1274          * with tasks have cpus.
1275          */
1276         if (!*buf) {
1277                 cpumask_clear(trialcs->cpus_allowed);
1278         } else {
1279                 retval = cpulist_parse(buf, trialcs->cpus_allowed);
1280                 if (retval < 0)
1281                         return retval;
1282
1283                 if (!cpumask_subset(trialcs->cpus_allowed,
1284                                     top_cpuset.cpus_allowed))
1285                         return -EINVAL;
1286         }
1287
1288         /* Nothing to do if the cpus didn't change */
1289         if (cpumask_equal(cs->cpus_allowed, trialcs->cpus_allowed))
1290                 return 0;
1291
1292         retval = validate_change(cs, trialcs);
1293         if (retval < 0)
1294                 return retval;
1295
1296 #ifdef CONFIG_CPUMASK_OFFSTACK
1297         /*
1298          * Use the cpumasks in trialcs for tmpmasks when they are pointers
1299          * to allocated cpumasks.
1300          */
1301         tmp.addmask  = trialcs->subparts_cpus;
1302         tmp.delmask  = trialcs->effective_cpus;
1303         tmp.new_cpus = trialcs->cpus_allowed;
1304 #endif
1305
1306         if (cs->partition_root_state) {
1307                 /* Cpumask of a partition root cannot be empty */
1308                 if (cpumask_empty(trialcs->cpus_allowed))
1309                         return -EINVAL;
1310                 if (update_parent_subparts_cpumask(cs, partcmd_update,
1311                                         trialcs->cpus_allowed, &tmp) < 0)
1312                         return -EINVAL;
1313         }
1314
1315         spin_lock_irq(&callback_lock);
1316         cpumask_copy(cs->cpus_allowed, trialcs->cpus_allowed);
1317
1318         /*
1319          * Make sure that subparts_cpus is a subset of cpus_allowed.
1320          */
1321         if (cs->nr_subparts_cpus) {
1322                 cpumask_andnot(cs->subparts_cpus, cs->subparts_cpus,
1323                                cs->cpus_allowed);
1324                 cs->nr_subparts_cpus = cpumask_weight(cs->subparts_cpus);
1325         }
1326         spin_unlock_irq(&callback_lock);
1327
1328         update_cpumasks_hier(cs, &tmp);
1329         return 0;
1330 }
1331
1332 /*
1333  * Migrate memory region from one set of nodes to another.  This is
1334  * performed asynchronously as it can be called from process migration path
1335  * holding locks involved in process management.  All mm migrations are
1336  * performed in the queued order and can be waited for by flushing
1337  * cpuset_migrate_mm_wq.
1338  */
1339
1340 struct cpuset_migrate_mm_work {
1341         struct work_struct      work;
1342         struct mm_struct        *mm;
1343         nodemask_t              from;
1344         nodemask_t              to;
1345 };
1346
1347 static void cpuset_migrate_mm_workfn(struct work_struct *work)
1348 {
1349         struct cpuset_migrate_mm_work *mwork =
1350                 container_of(work, struct cpuset_migrate_mm_work, work);
1351
1352         /* on a wq worker, no need to worry about %current's mems_allowed */
1353         do_migrate_pages(mwork->mm, &mwork->from, &mwork->to, MPOL_MF_MOVE_ALL);
1354         mmput(mwork->mm);
1355         kfree(mwork);
1356 }
1357
1358 static void cpuset_migrate_mm(struct mm_struct *mm, const nodemask_t *from,
1359                                                         const nodemask_t *to)
1360 {
1361         struct cpuset_migrate_mm_work *mwork;
1362
1363         mwork = kzalloc(sizeof(*mwork), GFP_KERNEL);
1364         if (mwork) {
1365                 mwork->mm = mm;
1366                 mwork->from = *from;
1367                 mwork->to = *to;
1368                 INIT_WORK(&mwork->work, cpuset_migrate_mm_workfn);
1369                 queue_work(cpuset_migrate_mm_wq, &mwork->work);
1370         } else {
1371                 mmput(mm);
1372         }
1373 }
1374
1375 static void cpuset_post_attach(void)
1376 {
1377         flush_workqueue(cpuset_migrate_mm_wq);
1378 }
1379
1380 /*
1381  * cpuset_change_task_nodemask - change task's mems_allowed and mempolicy
1382  * @tsk: the task to change
1383  * @newmems: new nodes that the task will be set
1384  *
1385  * We use the mems_allowed_seq seqlock to safely update both tsk->mems_allowed
1386  * and rebind an eventual tasks' mempolicy. If the task is allocating in
1387  * parallel, it might temporarily see an empty intersection, which results in
1388  * a seqlock check and retry before OOM or allocation failure.
1389  */
1390 static void cpuset_change_task_nodemask(struct task_struct *tsk,
1391                                         nodemask_t *newmems)
1392 {
1393         task_lock(tsk);
1394
1395         local_irq_disable();
1396         write_seqcount_begin(&tsk->mems_allowed_seq);
1397
1398         nodes_or(tsk->mems_allowed, tsk->mems_allowed, *newmems);
1399         mpol_rebind_task(tsk, newmems);
1400         tsk->mems_allowed = *newmems;
1401
1402         write_seqcount_end(&tsk->mems_allowed_seq);
1403         local_irq_enable();
1404
1405         task_unlock(tsk);
1406 }
1407
1408 static void *cpuset_being_rebound;
1409
1410 /**
1411  * update_tasks_nodemask - Update the nodemasks of tasks in the cpuset.
1412  * @cs: the cpuset in which each task's mems_allowed mask needs to be changed
1413  *
1414  * Iterate through each task of @cs updating its mems_allowed to the
1415  * effective cpuset's.  As this function is called with cpuset_mutex held,
1416  * cpuset membership stays stable.
1417  */
1418 static void update_tasks_nodemask(struct cpuset *cs)
1419 {
1420         static nodemask_t newmems;      /* protected by cpuset_mutex */
1421         struct css_task_iter it;
1422         struct task_struct *task;
1423
1424         cpuset_being_rebound = cs;              /* causes mpol_dup() rebind */
1425
1426         guarantee_online_mems(cs, &newmems);
1427
1428         /*
1429          * The mpol_rebind_mm() call takes mmap_sem, which we couldn't
1430          * take while holding tasklist_lock.  Forks can happen - the
1431          * mpol_dup() cpuset_being_rebound check will catch such forks,
1432          * and rebind their vma mempolicies too.  Because we still hold
1433          * the global cpuset_mutex, we know that no other rebind effort
1434          * will be contending for the global variable cpuset_being_rebound.
1435          * It's ok if we rebind the same mm twice; mpol_rebind_mm()
1436          * is idempotent.  Also migrate pages in each mm to new nodes.
1437          */
1438         css_task_iter_start(&cs->css, 0, &it);
1439         while ((task = css_task_iter_next(&it))) {
1440                 struct mm_struct *mm;
1441                 bool migrate;
1442
1443                 cpuset_change_task_nodemask(task, &newmems);
1444
1445                 mm = get_task_mm(task);
1446                 if (!mm)
1447                         continue;
1448
1449                 migrate = is_memory_migrate(cs);
1450
1451                 mpol_rebind_mm(mm, &cs->mems_allowed);
1452                 if (migrate)
1453                         cpuset_migrate_mm(mm, &cs->old_mems_allowed, &newmems);
1454                 else
1455                         mmput(mm);
1456         }
1457         css_task_iter_end(&it);
1458
1459         /*
1460          * All the tasks' nodemasks have been updated, update
1461          * cs->old_mems_allowed.
1462          */
1463         cs->old_mems_allowed = newmems;
1464
1465         /* We're done rebinding vmas to this cpuset's new mems_allowed. */
1466         cpuset_being_rebound = NULL;
1467 }
1468
1469 /*
1470  * update_nodemasks_hier - Update effective nodemasks and tasks in the subtree
1471  * @cs: the cpuset to consider
1472  * @new_mems: a temp variable for calculating new effective_mems
1473  *
1474  * When configured nodemask is changed, the effective nodemasks of this cpuset
1475  * and all its descendants need to be updated.
1476  *
1477  * On legacy hiearchy, effective_mems will be the same with mems_allowed.
1478  *
1479  * Called with cpuset_mutex held
1480  */
1481 static void update_nodemasks_hier(struct cpuset *cs, nodemask_t *new_mems)
1482 {
1483         struct cpuset *cp;
1484         struct cgroup_subsys_state *pos_css;
1485
1486         rcu_read_lock();
1487         cpuset_for_each_descendant_pre(cp, pos_css, cs) {
1488                 struct cpuset *parent = parent_cs(cp);
1489
1490                 nodes_and(*new_mems, cp->mems_allowed, parent->effective_mems);
1491
1492                 /*
1493                  * If it becomes empty, inherit the effective mask of the
1494                  * parent, which is guaranteed to have some MEMs.
1495                  */
1496                 if (is_in_v2_mode() && nodes_empty(*new_mems))
1497                         *new_mems = parent->effective_mems;
1498
1499                 /* Skip the whole subtree if the nodemask remains the same. */
1500                 if (nodes_equal(*new_mems, cp->effective_mems)) {
1501                         pos_css = css_rightmost_descendant(pos_css);
1502                         continue;
1503                 }
1504
1505                 if (!css_tryget_online(&cp->css))
1506                         continue;
1507                 rcu_read_unlock();
1508
1509                 spin_lock_irq(&callback_lock);
1510                 cp->effective_mems = *new_mems;
1511                 spin_unlock_irq(&callback_lock);
1512
1513                 WARN_ON(!is_in_v2_mode() &&
1514                         !nodes_equal(cp->mems_allowed, cp->effective_mems));
1515
1516                 update_tasks_nodemask(cp);
1517
1518                 rcu_read_lock();
1519                 css_put(&cp->css);
1520         }
1521         rcu_read_unlock();
1522 }
1523
1524 /*
1525  * Handle user request to change the 'mems' memory placement
1526  * of a cpuset.  Needs to validate the request, update the
1527  * cpusets mems_allowed, and for each task in the cpuset,
1528  * update mems_allowed and rebind task's mempolicy and any vma
1529  * mempolicies and if the cpuset is marked 'memory_migrate',
1530  * migrate the tasks pages to the new memory.
1531  *
1532  * Call with cpuset_mutex held. May take callback_lock during call.
1533  * Will take tasklist_lock, scan tasklist for tasks in cpuset cs,
1534  * lock each such tasks mm->mmap_sem, scan its vma's and rebind
1535  * their mempolicies to the cpusets new mems_allowed.
1536  */
1537 static int update_nodemask(struct cpuset *cs, struct cpuset *trialcs,
1538                            const char *buf)
1539 {
1540         int retval;
1541
1542         /*
1543          * top_cpuset.mems_allowed tracks node_stats[N_MEMORY];
1544          * it's read-only
1545          */
1546         if (cs == &top_cpuset) {
1547                 retval = -EACCES;
1548                 goto done;
1549         }
1550
1551         /*
1552          * An empty mems_allowed is ok iff there are no tasks in the cpuset.
1553          * Since nodelist_parse() fails on an empty mask, we special case
1554          * that parsing.  The validate_change() call ensures that cpusets
1555          * with tasks have memory.
1556          */
1557         if (!*buf) {
1558                 nodes_clear(trialcs->mems_allowed);
1559         } else {
1560                 retval = nodelist_parse(buf, trialcs->mems_allowed);
1561                 if (retval < 0)
1562                         goto done;
1563
1564                 if (!nodes_subset(trialcs->mems_allowed,
1565                                   top_cpuset.mems_allowed)) {
1566                         retval = -EINVAL;
1567                         goto done;
1568                 }
1569         }
1570
1571         if (nodes_equal(cs->mems_allowed, trialcs->mems_allowed)) {
1572                 retval = 0;             /* Too easy - nothing to do */
1573                 goto done;
1574         }
1575         retval = validate_change(cs, trialcs);
1576         if (retval < 0)
1577                 goto done;
1578
1579         spin_lock_irq(&callback_lock);
1580         cs->mems_allowed = trialcs->mems_allowed;
1581         spin_unlock_irq(&callback_lock);
1582
1583         /* use trialcs->mems_allowed as a temp variable */
1584         update_nodemasks_hier(cs, &trialcs->mems_allowed);
1585 done:
1586         return retval;
1587 }
1588
1589 bool current_cpuset_is_being_rebound(void)
1590 {
1591         bool ret;
1592
1593         rcu_read_lock();
1594         ret = task_cs(current) == cpuset_being_rebound;
1595         rcu_read_unlock();
1596
1597         return ret;
1598 }
1599
1600 static int update_relax_domain_level(struct cpuset *cs, s64 val)
1601 {
1602 #ifdef CONFIG_SMP
1603         if (val < -1 || val >= sched_domain_level_max)
1604                 return -EINVAL;
1605 #endif
1606
1607         if (val != cs->relax_domain_level) {
1608                 cs->relax_domain_level = val;
1609                 if (!cpumask_empty(cs->cpus_allowed) &&
1610                     is_sched_load_balance(cs))
1611                         rebuild_sched_domains_locked();
1612         }
1613
1614         return 0;
1615 }
1616
1617 /**
1618  * update_tasks_flags - update the spread flags of tasks in the cpuset.
1619  * @cs: the cpuset in which each task's spread flags needs to be changed
1620  *
1621  * Iterate through each task of @cs updating its spread flags.  As this
1622  * function is called with cpuset_mutex held, cpuset membership stays
1623  * stable.
1624  */
1625 static void update_tasks_flags(struct cpuset *cs)
1626 {
1627         struct css_task_iter it;
1628         struct task_struct *task;
1629
1630         css_task_iter_start(&cs->css, 0, &it);
1631         while ((task = css_task_iter_next(&it)))
1632                 cpuset_update_task_spread_flag(cs, task);
1633         css_task_iter_end(&it);
1634 }
1635
1636 /*
1637  * update_flag - read a 0 or a 1 in a file and update associated flag
1638  * bit:         the bit to update (see cpuset_flagbits_t)
1639  * cs:          the cpuset to update
1640  * turning_on:  whether the flag is being set or cleared
1641  *
1642  * Call with cpuset_mutex held.
1643  */
1644
1645 static int update_flag(cpuset_flagbits_t bit, struct cpuset *cs,
1646                        int turning_on)
1647 {
1648         struct cpuset *trialcs;
1649         int balance_flag_changed;
1650         int spread_flag_changed;
1651         int err;
1652
1653         trialcs = alloc_trial_cpuset(cs);
1654         if (!trialcs)
1655                 return -ENOMEM;
1656
1657         if (turning_on)
1658                 set_bit(bit, &trialcs->flags);
1659         else
1660                 clear_bit(bit, &trialcs->flags);
1661
1662         err = validate_change(cs, trialcs);
1663         if (err < 0)
1664                 goto out;
1665
1666         balance_flag_changed = (is_sched_load_balance(cs) !=
1667                                 is_sched_load_balance(trialcs));
1668
1669         spread_flag_changed = ((is_spread_slab(cs) != is_spread_slab(trialcs))
1670                         || (is_spread_page(cs) != is_spread_page(trialcs)));
1671
1672         spin_lock_irq(&callback_lock);
1673         cs->flags = trialcs->flags;
1674         spin_unlock_irq(&callback_lock);
1675
1676         if (!cpumask_empty(trialcs->cpus_allowed) && balance_flag_changed)
1677                 rebuild_sched_domains_locked();
1678
1679         if (spread_flag_changed)
1680                 update_tasks_flags(cs);
1681 out:
1682         free_cpuset(trialcs);
1683         return err;
1684 }
1685
1686 /*
1687  * update_prstate - update partititon_root_state
1688  * cs:  the cpuset to update
1689  * val: 0 - disabled, 1 - enabled
1690  *
1691  * Call with cpuset_mutex held.
1692  */
1693 static int update_prstate(struct cpuset *cs, int val)
1694 {
1695         int err;
1696         struct cpuset *parent = parent_cs(cs);
1697         struct tmpmasks tmp;
1698
1699         if ((val != 0) && (val != 1))
1700                 return -EINVAL;
1701         if (val == cs->partition_root_state)
1702                 return 0;
1703
1704         /*
1705          * Cannot force a partial or erroneous partition root to a full
1706          * partition root.
1707          */
1708         if (val && cs->partition_root_state)
1709                 return -EINVAL;
1710
1711         if (alloc_cpumasks(NULL, &tmp))
1712                 return -ENOMEM;
1713
1714         err = -EINVAL;
1715         if (!cs->partition_root_state) {
1716                 /*
1717                  * Turning on partition root requires setting the
1718                  * CS_CPU_EXCLUSIVE bit implicitly as well and cpus_allowed
1719                  * cannot be NULL.
1720                  */
1721                 if (cpumask_empty(cs->cpus_allowed))
1722                         goto out;
1723
1724                 err = update_flag(CS_CPU_EXCLUSIVE, cs, 1);
1725                 if (err)
1726                         goto out;
1727
1728                 err = update_parent_subparts_cpumask(cs, partcmd_enable,
1729                                                      NULL, &tmp);
1730                 if (err) {
1731                         update_flag(CS_CPU_EXCLUSIVE, cs, 0);
1732                         goto out;
1733                 }
1734                 cs->partition_root_state = PRS_ENABLED;
1735         } else {
1736                 err = update_parent_subparts_cpumask(cs, partcmd_disable,
1737                                                      NULL, &tmp);
1738                 if (err)
1739                         goto out;
1740
1741                 cs->partition_root_state = 0;
1742
1743                 /* Turning off CS_CPU_EXCLUSIVE will not return error */
1744                 update_flag(CS_CPU_EXCLUSIVE, cs, 0);
1745         }
1746
1747         /*
1748          * Update cpumask of parent's tasks except when it is the top
1749          * cpuset as some system daemons cannot be mapped to other CPUs.
1750          */
1751         if (parent != &top_cpuset)
1752                 update_tasks_cpumask(parent);
1753
1754         rebuild_sched_domains_locked();
1755 out:
1756         free_cpumasks(NULL, &tmp);
1757         return err;
1758 }
1759
1760 /*
1761  * Frequency meter - How fast is some event occurring?
1762  *
1763  * These routines manage a digitally filtered, constant time based,
1764  * event frequency meter.  There are four routines:
1765  *   fmeter_init() - initialize a frequency meter.
1766  *   fmeter_markevent() - called each time the event happens.
1767  *   fmeter_getrate() - returns the recent rate of such events.
1768  *   fmeter_update() - internal routine used to update fmeter.
1769  *
1770  * A common data structure is passed to each of these routines,
1771  * which is used to keep track of the state required to manage the
1772  * frequency meter and its digital filter.
1773  *
1774  * The filter works on the number of events marked per unit time.
1775  * The filter is single-pole low-pass recursive (IIR).  The time unit
1776  * is 1 second.  Arithmetic is done using 32-bit integers scaled to
1777  * simulate 3 decimal digits of precision (multiplied by 1000).
1778  *
1779  * With an FM_COEF of 933, and a time base of 1 second, the filter
1780  * has a half-life of 10 seconds, meaning that if the events quit
1781  * happening, then the rate returned from the fmeter_getrate()
1782  * will be cut in half each 10 seconds, until it converges to zero.
1783  *
1784  * It is not worth doing a real infinitely recursive filter.  If more
1785  * than FM_MAXTICKS ticks have elapsed since the last filter event,
1786  * just compute FM_MAXTICKS ticks worth, by which point the level
1787  * will be stable.
1788  *
1789  * Limit the count of unprocessed events to FM_MAXCNT, so as to avoid
1790  * arithmetic overflow in the fmeter_update() routine.
1791  *
1792  * Given the simple 32 bit integer arithmetic used, this meter works
1793  * best for reporting rates between one per millisecond (msec) and
1794  * one per 32 (approx) seconds.  At constant rates faster than one
1795  * per msec it maxes out at values just under 1,000,000.  At constant
1796  * rates between one per msec, and one per second it will stabilize
1797  * to a value N*1000, where N is the rate of events per second.
1798  * At constant rates between one per second and one per 32 seconds,
1799  * it will be choppy, moving up on the seconds that have an event,
1800  * and then decaying until the next event.  At rates slower than
1801  * about one in 32 seconds, it decays all the way back to zero between
1802  * each event.
1803  */
1804
1805 #define FM_COEF 933             /* coefficient for half-life of 10 secs */
1806 #define FM_MAXTICKS ((u32)99)   /* useless computing more ticks than this */
1807 #define FM_MAXCNT 1000000       /* limit cnt to avoid overflow */
1808 #define FM_SCALE 1000           /* faux fixed point scale */
1809
1810 /* Initialize a frequency meter */
1811 static void fmeter_init(struct fmeter *fmp)
1812 {
1813         fmp->cnt = 0;
1814         fmp->val = 0;
1815         fmp->time = 0;
1816         spin_lock_init(&fmp->lock);
1817 }
1818
1819 /* Internal meter update - process cnt events and update value */
1820 static void fmeter_update(struct fmeter *fmp)
1821 {
1822         time64_t now;
1823         u32 ticks;
1824
1825         now = ktime_get_seconds();
1826         ticks = now - fmp->time;
1827
1828         if (ticks == 0)
1829                 return;
1830
1831         ticks = min(FM_MAXTICKS, ticks);
1832         while (ticks-- > 0)
1833                 fmp->val = (FM_COEF * fmp->val) / FM_SCALE;
1834         fmp->time = now;
1835
1836         fmp->val += ((FM_SCALE - FM_COEF) * fmp->cnt) / FM_SCALE;
1837         fmp->cnt = 0;
1838 }
1839
1840 /* Process any previous ticks, then bump cnt by one (times scale). */
1841 static void fmeter_markevent(struct fmeter *fmp)
1842 {
1843         spin_lock(&fmp->lock);
1844         fmeter_update(fmp);
1845         fmp->cnt = min(FM_MAXCNT, fmp->cnt + FM_SCALE);
1846         spin_unlock(&fmp->lock);
1847 }
1848
1849 /* Process any previous ticks, then return current value. */
1850 static int fmeter_getrate(struct fmeter *fmp)
1851 {
1852         int val;
1853
1854         spin_lock(&fmp->lock);
1855         fmeter_update(fmp);
1856         val = fmp->val;
1857         spin_unlock(&fmp->lock);
1858         return val;
1859 }
1860
1861 static struct cpuset *cpuset_attach_old_cs;
1862
1863 /* Called by cgroups to determine if a cpuset is usable; cpuset_mutex held */
1864 static int cpuset_can_attach(struct cgroup_taskset *tset)
1865 {
1866         struct cgroup_subsys_state *css;
1867         struct cpuset *cs;
1868         struct task_struct *task;
1869         int ret;
1870
1871         /* used later by cpuset_attach() */
1872         cpuset_attach_old_cs = task_cs(cgroup_taskset_first(tset, &css));
1873         cs = css_cs(css);
1874
1875         mutex_lock(&cpuset_mutex);
1876
1877         /* allow moving tasks into an empty cpuset if on default hierarchy */
1878         ret = -ENOSPC;
1879         if (!is_in_v2_mode() &&
1880             (cpumask_empty(cs->cpus_allowed) || nodes_empty(cs->mems_allowed)))
1881                 goto out_unlock;
1882
1883         cgroup_taskset_for_each(task, css, tset) {
1884                 ret = task_can_attach(task, cs->cpus_allowed);
1885                 if (ret)
1886                         goto out_unlock;
1887                 ret = security_task_setscheduler(task);
1888                 if (ret)
1889                         goto out_unlock;
1890         }
1891
1892         /*
1893          * Mark attach is in progress.  This makes validate_change() fail
1894          * changes which zero cpus/mems_allowed.
1895          */
1896         cs->attach_in_progress++;
1897         ret = 0;
1898 out_unlock:
1899         mutex_unlock(&cpuset_mutex);
1900         return ret;
1901 }
1902
1903 static void cpuset_cancel_attach(struct cgroup_taskset *tset)
1904 {
1905         struct cgroup_subsys_state *css;
1906         struct cpuset *cs;
1907
1908         cgroup_taskset_first(tset, &css);
1909         cs = css_cs(css);
1910
1911         mutex_lock(&cpuset_mutex);
1912         css_cs(css)->attach_in_progress--;
1913         mutex_unlock(&cpuset_mutex);
1914 }
1915
1916 /*
1917  * Protected by cpuset_mutex.  cpus_attach is used only by cpuset_attach()
1918  * but we can't allocate it dynamically there.  Define it global and
1919  * allocate from cpuset_init().
1920  */
1921 static cpumask_var_t cpus_attach;
1922
1923 static void cpuset_attach(struct cgroup_taskset *tset)
1924 {
1925         /* static buf protected by cpuset_mutex */
1926         static nodemask_t cpuset_attach_nodemask_to;
1927         struct task_struct *task;
1928         struct task_struct *leader;
1929         struct cgroup_subsys_state *css;
1930         struct cpuset *cs;
1931         struct cpuset *oldcs = cpuset_attach_old_cs;
1932
1933         cgroup_taskset_first(tset, &css);
1934         cs = css_cs(css);
1935
1936         mutex_lock(&cpuset_mutex);
1937
1938         /* prepare for attach */
1939         if (cs == &top_cpuset)
1940                 cpumask_copy(cpus_attach, cpu_possible_mask);
1941         else
1942                 guarantee_online_cpus(cs, cpus_attach);
1943
1944         guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
1945
1946         cgroup_taskset_for_each(task, css, tset) {
1947                 /*
1948                  * can_attach beforehand should guarantee that this doesn't
1949                  * fail.  TODO: have a better way to handle failure here
1950                  */
1951                 WARN_ON_ONCE(set_cpus_allowed_ptr(task, cpus_attach));
1952
1953                 cpuset_change_task_nodemask(task, &cpuset_attach_nodemask_to);
1954                 cpuset_update_task_spread_flag(cs, task);
1955         }
1956
1957         /*
1958          * Change mm for all threadgroup leaders. This is expensive and may
1959          * sleep and should be moved outside migration path proper.
1960          */
1961         cpuset_attach_nodemask_to = cs->effective_mems;
1962         cgroup_taskset_for_each_leader(leader, css, tset) {
1963                 struct mm_struct *mm = get_task_mm(leader);
1964
1965                 if (mm) {
1966                         mpol_rebind_mm(mm, &cpuset_attach_nodemask_to);
1967
1968                         /*
1969                          * old_mems_allowed is the same with mems_allowed
1970                          * here, except if this task is being moved
1971                          * automatically due to hotplug.  In that case
1972                          * @mems_allowed has been updated and is empty, so
1973                          * @old_mems_allowed is the right nodesets that we
1974                          * migrate mm from.
1975                          */
1976                         if (is_memory_migrate(cs))
1977                                 cpuset_migrate_mm(mm, &oldcs->old_mems_allowed,
1978                                                   &cpuset_attach_nodemask_to);
1979                         else
1980                                 mmput(mm);
1981                 }
1982         }
1983
1984         cs->old_mems_allowed = cpuset_attach_nodemask_to;
1985
1986         cs->attach_in_progress--;
1987         if (!cs->attach_in_progress)
1988                 wake_up(&cpuset_attach_wq);
1989
1990         mutex_unlock(&cpuset_mutex);
1991 }
1992
1993 /* The various types of files and directories in a cpuset file system */
1994
1995 typedef enum {
1996         FILE_MEMORY_MIGRATE,
1997         FILE_CPULIST,
1998         FILE_MEMLIST,
1999         FILE_EFFECTIVE_CPULIST,
2000         FILE_EFFECTIVE_MEMLIST,
2001         FILE_CPU_EXCLUSIVE,
2002         FILE_MEM_EXCLUSIVE,
2003         FILE_MEM_HARDWALL,
2004         FILE_SCHED_LOAD_BALANCE,
2005         FILE_PARTITION_ROOT,
2006         FILE_SCHED_RELAX_DOMAIN_LEVEL,
2007         FILE_MEMORY_PRESSURE_ENABLED,
2008         FILE_MEMORY_PRESSURE,
2009         FILE_SPREAD_PAGE,
2010         FILE_SPREAD_SLAB,
2011 } cpuset_filetype_t;
2012
2013 static int cpuset_write_u64(struct cgroup_subsys_state *css, struct cftype *cft,
2014                             u64 val)
2015 {
2016         struct cpuset *cs = css_cs(css);
2017         cpuset_filetype_t type = cft->private;
2018         int retval = 0;
2019
2020         mutex_lock(&cpuset_mutex);
2021         if (!is_cpuset_online(cs)) {
2022                 retval = -ENODEV;
2023                 goto out_unlock;
2024         }
2025
2026         switch (type) {
2027         case FILE_CPU_EXCLUSIVE:
2028                 retval = update_flag(CS_CPU_EXCLUSIVE, cs, val);
2029                 break;
2030         case FILE_MEM_EXCLUSIVE:
2031                 retval = update_flag(CS_MEM_EXCLUSIVE, cs, val);
2032                 break;
2033         case FILE_MEM_HARDWALL:
2034                 retval = update_flag(CS_MEM_HARDWALL, cs, val);
2035                 break;
2036         case FILE_SCHED_LOAD_BALANCE:
2037                 retval = update_flag(CS_SCHED_LOAD_BALANCE, cs, val);
2038                 break;
2039         case FILE_MEMORY_MIGRATE:
2040                 retval = update_flag(CS_MEMORY_MIGRATE, cs, val);
2041                 break;
2042         case FILE_MEMORY_PRESSURE_ENABLED:
2043                 cpuset_memory_pressure_enabled = !!val;
2044                 break;
2045         case FILE_SPREAD_PAGE:
2046                 retval = update_flag(CS_SPREAD_PAGE, cs, val);
2047                 break;
2048         case FILE_SPREAD_SLAB:
2049                 retval = update_flag(CS_SPREAD_SLAB, cs, val);
2050                 break;
2051         default:
2052                 retval = -EINVAL;
2053                 break;
2054         }
2055 out_unlock:
2056         mutex_unlock(&cpuset_mutex);
2057         return retval;
2058 }
2059
2060 static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft,
2061                             s64 val)
2062 {
2063         struct cpuset *cs = css_cs(css);
2064         cpuset_filetype_t type = cft->private;
2065         int retval = -ENODEV;
2066
2067         mutex_lock(&cpuset_mutex);
2068         if (!is_cpuset_online(cs))
2069                 goto out_unlock;
2070
2071         switch (type) {
2072         case FILE_SCHED_RELAX_DOMAIN_LEVEL:
2073                 retval = update_relax_domain_level(cs, val);
2074                 break;
2075         case FILE_PARTITION_ROOT:
2076                 retval = update_prstate(cs, val);
2077                 break;
2078         default:
2079                 retval = -EINVAL;
2080                 break;
2081         }
2082 out_unlock:
2083         mutex_unlock(&cpuset_mutex);
2084         return retval;
2085 }
2086
2087 /*
2088  * Common handling for a write to a "cpus" or "mems" file.
2089  */
2090 static ssize_t cpuset_write_resmask(struct kernfs_open_file *of,
2091                                     char *buf, size_t nbytes, loff_t off)
2092 {
2093         struct cpuset *cs = css_cs(of_css(of));
2094         struct cpuset *trialcs;
2095         int retval = -ENODEV;
2096
2097         buf = strstrip(buf);
2098
2099         /*
2100          * CPU or memory hotunplug may leave @cs w/o any execution
2101          * resources, in which case the hotplug code asynchronously updates
2102          * configuration and transfers all tasks to the nearest ancestor
2103          * which can execute.
2104          *
2105          * As writes to "cpus" or "mems" may restore @cs's execution
2106          * resources, wait for the previously scheduled operations before
2107          * proceeding, so that we don't end up keep removing tasks added
2108          * after execution capability is restored.
2109          *
2110          * cpuset_hotplug_work calls back into cgroup core via
2111          * cgroup_transfer_tasks() and waiting for it from a cgroupfs
2112          * operation like this one can lead to a deadlock through kernfs
2113          * active_ref protection.  Let's break the protection.  Losing the
2114          * protection is okay as we check whether @cs is online after
2115          * grabbing cpuset_mutex anyway.  This only happens on the legacy
2116          * hierarchies.
2117          */
2118         css_get(&cs->css);
2119         kernfs_break_active_protection(of->kn);
2120         flush_work(&cpuset_hotplug_work);
2121
2122         mutex_lock(&cpuset_mutex);
2123         if (!is_cpuset_online(cs))
2124                 goto out_unlock;
2125
2126         trialcs = alloc_trial_cpuset(cs);
2127         if (!trialcs) {
2128                 retval = -ENOMEM;
2129                 goto out_unlock;
2130         }
2131
2132         switch (of_cft(of)->private) {
2133         case FILE_CPULIST:
2134                 retval = update_cpumask(cs, trialcs, buf);
2135                 break;
2136         case FILE_MEMLIST:
2137                 retval = update_nodemask(cs, trialcs, buf);
2138                 break;
2139         default:
2140                 retval = -EINVAL;
2141                 break;
2142         }
2143
2144         free_cpuset(trialcs);
2145 out_unlock:
2146         mutex_unlock(&cpuset_mutex);
2147         kernfs_unbreak_active_protection(of->kn);
2148         css_put(&cs->css);
2149         flush_workqueue(cpuset_migrate_mm_wq);
2150         return retval ?: nbytes;
2151 }
2152
2153 /*
2154  * These ascii lists should be read in a single call, by using a user
2155  * buffer large enough to hold the entire map.  If read in smaller
2156  * chunks, there is no guarantee of atomicity.  Since the display format
2157  * used, list of ranges of sequential numbers, is variable length,
2158  * and since these maps can change value dynamically, one could read
2159  * gibberish by doing partial reads while a list was changing.
2160  */
2161 static int cpuset_common_seq_show(struct seq_file *sf, void *v)
2162 {
2163         struct cpuset *cs = css_cs(seq_css(sf));
2164         cpuset_filetype_t type = seq_cft(sf)->private;
2165         int ret = 0;
2166
2167         spin_lock_irq(&callback_lock);
2168
2169         switch (type) {
2170         case FILE_CPULIST:
2171                 seq_printf(sf, "%*pbl\n", cpumask_pr_args(cs->cpus_allowed));
2172                 break;
2173         case FILE_MEMLIST:
2174                 seq_printf(sf, "%*pbl\n", nodemask_pr_args(&cs->mems_allowed));
2175                 break;
2176         case FILE_EFFECTIVE_CPULIST:
2177                 seq_printf(sf, "%*pbl\n", cpumask_pr_args(cs->effective_cpus));
2178                 break;
2179         case FILE_EFFECTIVE_MEMLIST:
2180                 seq_printf(sf, "%*pbl\n", nodemask_pr_args(&cs->effective_mems));
2181                 break;
2182         default:
2183                 ret = -EINVAL;
2184         }
2185
2186         spin_unlock_irq(&callback_lock);
2187         return ret;
2188 }
2189
2190 static u64 cpuset_read_u64(struct cgroup_subsys_state *css, struct cftype *cft)
2191 {
2192         struct cpuset *cs = css_cs(css);
2193         cpuset_filetype_t type = cft->private;
2194         switch (type) {
2195         case FILE_CPU_EXCLUSIVE:
2196                 return is_cpu_exclusive(cs);
2197         case FILE_MEM_EXCLUSIVE:
2198                 return is_mem_exclusive(cs);
2199         case FILE_MEM_HARDWALL:
2200                 return is_mem_hardwall(cs);
2201         case FILE_SCHED_LOAD_BALANCE:
2202                 return is_sched_load_balance(cs);
2203         case FILE_MEMORY_MIGRATE:
2204                 return is_memory_migrate(cs);
2205         case FILE_MEMORY_PRESSURE_ENABLED:
2206                 return cpuset_memory_pressure_enabled;
2207         case FILE_MEMORY_PRESSURE:
2208                 return fmeter_getrate(&cs->fmeter);
2209         case FILE_SPREAD_PAGE:
2210                 return is_spread_page(cs);
2211         case FILE_SPREAD_SLAB:
2212                 return is_spread_slab(cs);
2213         default:
2214                 BUG();
2215         }
2216
2217         /* Unreachable but makes gcc happy */
2218         return 0;
2219 }
2220
2221 static s64 cpuset_read_s64(struct cgroup_subsys_state *css, struct cftype *cft)
2222 {
2223         struct cpuset *cs = css_cs(css);
2224         cpuset_filetype_t type = cft->private;
2225         switch (type) {
2226         case FILE_SCHED_RELAX_DOMAIN_LEVEL:
2227                 return cs->relax_domain_level;
2228         case FILE_PARTITION_ROOT:
2229                 return cs->partition_root_state;
2230         default:
2231                 BUG();
2232         }
2233
2234         /* Unrechable but makes gcc happy */
2235         return 0;
2236 }
2237
2238 /*
2239  * for the common functions, 'private' gives the type of file
2240  */
2241
2242 static struct cftype legacy_files[] = {
2243         {
2244                 .name = "cpus",
2245                 .seq_show = cpuset_common_seq_show,
2246                 .write = cpuset_write_resmask,
2247                 .max_write_len = (100U + 6 * NR_CPUS),
2248                 .private = FILE_CPULIST,
2249         },
2250
2251         {
2252                 .name = "mems",
2253                 .seq_show = cpuset_common_seq_show,
2254                 .write = cpuset_write_resmask,
2255                 .max_write_len = (100U + 6 * MAX_NUMNODES),
2256                 .private = FILE_MEMLIST,
2257         },
2258
2259         {
2260                 .name = "effective_cpus",
2261                 .seq_show = cpuset_common_seq_show,
2262                 .private = FILE_EFFECTIVE_CPULIST,
2263         },
2264
2265         {
2266                 .name = "effective_mems",
2267                 .seq_show = cpuset_common_seq_show,
2268                 .private = FILE_EFFECTIVE_MEMLIST,
2269         },
2270
2271         {
2272                 .name = "cpu_exclusive",
2273                 .read_u64 = cpuset_read_u64,
2274                 .write_u64 = cpuset_write_u64,
2275                 .private = FILE_CPU_EXCLUSIVE,
2276         },
2277
2278         {
2279                 .name = "mem_exclusive",
2280                 .read_u64 = cpuset_read_u64,
2281                 .write_u64 = cpuset_write_u64,
2282                 .private = FILE_MEM_EXCLUSIVE,
2283         },
2284
2285         {
2286                 .name = "mem_hardwall",
2287                 .read_u64 = cpuset_read_u64,
2288                 .write_u64 = cpuset_write_u64,
2289                 .private = FILE_MEM_HARDWALL,
2290         },
2291
2292         {
2293                 .name = "sched_load_balance",
2294                 .read_u64 = cpuset_read_u64,
2295                 .write_u64 = cpuset_write_u64,
2296                 .private = FILE_SCHED_LOAD_BALANCE,
2297         },
2298
2299         {
2300                 .name = "sched_relax_domain_level",
2301                 .read_s64 = cpuset_read_s64,
2302                 .write_s64 = cpuset_write_s64,
2303                 .private = FILE_SCHED_RELAX_DOMAIN_LEVEL,
2304         },
2305
2306         {
2307                 .name = "memory_migrate",
2308                 .read_u64 = cpuset_read_u64,
2309                 .write_u64 = cpuset_write_u64,
2310                 .private = FILE_MEMORY_MIGRATE,
2311         },
2312
2313         {
2314                 .name = "memory_pressure",
2315                 .read_u64 = cpuset_read_u64,
2316                 .private = FILE_MEMORY_PRESSURE,
2317         },
2318
2319         {
2320                 .name = "memory_spread_page",
2321                 .read_u64 = cpuset_read_u64,
2322                 .write_u64 = cpuset_write_u64,
2323                 .private = FILE_SPREAD_PAGE,
2324         },
2325
2326         {
2327                 .name = "memory_spread_slab",
2328                 .read_u64 = cpuset_read_u64,
2329                 .write_u64 = cpuset_write_u64,
2330                 .private = FILE_SPREAD_SLAB,
2331         },
2332
2333         {
2334                 .name = "memory_pressure_enabled",
2335                 .flags = CFTYPE_ONLY_ON_ROOT,
2336                 .read_u64 = cpuset_read_u64,
2337                 .write_u64 = cpuset_write_u64,
2338                 .private = FILE_MEMORY_PRESSURE_ENABLED,
2339         },
2340
2341         { }     /* terminate */
2342 };
2343
2344 /*
2345  * This is currently a minimal set for the default hierarchy. It can be
2346  * expanded later on by migrating more features and control files from v1.
2347  */
2348 static struct cftype dfl_files[] = {
2349         {
2350                 .name = "cpus",
2351                 .seq_show = cpuset_common_seq_show,
2352                 .write = cpuset_write_resmask,
2353                 .max_write_len = (100U + 6 * NR_CPUS),
2354                 .private = FILE_CPULIST,
2355                 .flags = CFTYPE_NOT_ON_ROOT,
2356         },
2357
2358         {
2359                 .name = "mems",
2360                 .seq_show = cpuset_common_seq_show,
2361                 .write = cpuset_write_resmask,
2362                 .max_write_len = (100U + 6 * MAX_NUMNODES),
2363                 .private = FILE_MEMLIST,
2364                 .flags = CFTYPE_NOT_ON_ROOT,
2365         },
2366
2367         {
2368                 .name = "cpus.effective",
2369                 .seq_show = cpuset_common_seq_show,
2370                 .private = FILE_EFFECTIVE_CPULIST,
2371                 .flags = CFTYPE_NOT_ON_ROOT,
2372         },
2373
2374         {
2375                 .name = "mems.effective",
2376                 .seq_show = cpuset_common_seq_show,
2377                 .private = FILE_EFFECTIVE_MEMLIST,
2378                 .flags = CFTYPE_NOT_ON_ROOT,
2379         },
2380
2381         {
2382                 .name = "sched.partition",
2383                 .read_s64 = cpuset_read_s64,
2384                 .write_s64 = cpuset_write_s64,
2385                 .private = FILE_PARTITION_ROOT,
2386                 .flags = CFTYPE_NOT_ON_ROOT,
2387         },
2388
2389         { }     /* terminate */
2390 };
2391
2392
2393 /*
2394  *      cpuset_css_alloc - allocate a cpuset css
2395  *      cgrp:   control group that the new cpuset will be part of
2396  */
2397
2398 static struct cgroup_subsys_state *
2399 cpuset_css_alloc(struct cgroup_subsys_state *parent_css)
2400 {
2401         struct cpuset *cs;
2402
2403         if (!parent_css)
2404                 return &top_cpuset.css;
2405
2406         cs = kzalloc(sizeof(*cs), GFP_KERNEL);
2407         if (!cs)
2408                 return ERR_PTR(-ENOMEM);
2409
2410         if (alloc_cpumasks(cs, NULL)) {
2411                 kfree(cs);
2412                 return ERR_PTR(-ENOMEM);
2413         }
2414
2415         set_bit(CS_SCHED_LOAD_BALANCE, &cs->flags);
2416         nodes_clear(cs->mems_allowed);
2417         nodes_clear(cs->effective_mems);
2418         fmeter_init(&cs->fmeter);
2419         cs->relax_domain_level = -1;
2420
2421         return &cs->css;
2422 }
2423
2424 static int cpuset_css_online(struct cgroup_subsys_state *css)
2425 {
2426         struct cpuset *cs = css_cs(css);
2427         struct cpuset *parent = parent_cs(cs);
2428         struct cpuset *tmp_cs;
2429         struct cgroup_subsys_state *pos_css;
2430
2431         if (!parent)
2432                 return 0;
2433
2434         mutex_lock(&cpuset_mutex);
2435
2436         set_bit(CS_ONLINE, &cs->flags);
2437         if (is_spread_page(parent))
2438                 set_bit(CS_SPREAD_PAGE, &cs->flags);
2439         if (is_spread_slab(parent))
2440                 set_bit(CS_SPREAD_SLAB, &cs->flags);
2441
2442         cpuset_inc();
2443
2444         spin_lock_irq(&callback_lock);
2445         if (is_in_v2_mode()) {
2446                 cpumask_copy(cs->effective_cpus, parent->effective_cpus);
2447                 cs->effective_mems = parent->effective_mems;
2448         }
2449         spin_unlock_irq(&callback_lock);
2450
2451         if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags))
2452                 goto out_unlock;
2453
2454         /*
2455          * Clone @parent's configuration if CGRP_CPUSET_CLONE_CHILDREN is
2456          * set.  This flag handling is implemented in cgroup core for
2457          * histrical reasons - the flag may be specified during mount.
2458          *
2459          * Currently, if any sibling cpusets have exclusive cpus or mem, we
2460          * refuse to clone the configuration - thereby refusing the task to
2461          * be entered, and as a result refusing the sys_unshare() or
2462          * clone() which initiated it.  If this becomes a problem for some
2463          * users who wish to allow that scenario, then this could be
2464          * changed to grant parent->cpus_allowed-sibling_cpus_exclusive
2465          * (and likewise for mems) to the new cgroup.
2466          */
2467         rcu_read_lock();
2468         cpuset_for_each_child(tmp_cs, pos_css, parent) {
2469                 if (is_mem_exclusive(tmp_cs) || is_cpu_exclusive(tmp_cs)) {
2470                         rcu_read_unlock();
2471                         goto out_unlock;
2472                 }
2473         }
2474         rcu_read_unlock();
2475
2476         spin_lock_irq(&callback_lock);
2477         cs->mems_allowed = parent->mems_allowed;
2478         cs->effective_mems = parent->mems_allowed;
2479         cpumask_copy(cs->cpus_allowed, parent->cpus_allowed);
2480         cpumask_copy(cs->effective_cpus, parent->cpus_allowed);
2481         spin_unlock_irq(&callback_lock);
2482 out_unlock:
2483         mutex_unlock(&cpuset_mutex);
2484         return 0;
2485 }
2486
2487 /*
2488  * If the cpuset being removed has its flag 'sched_load_balance'
2489  * enabled, then simulate turning sched_load_balance off, which
2490  * will call rebuild_sched_domains_locked(). That is not needed
2491  * in the default hierarchy where only changes in partition
2492  * will cause repartitioning.
2493  *
2494  * If the cpuset has the 'sched.partition' flag enabled, simulate
2495  * turning 'sched.partition" off.
2496  */
2497
2498 static void cpuset_css_offline(struct cgroup_subsys_state *css)
2499 {
2500         struct cpuset *cs = css_cs(css);
2501
2502         mutex_lock(&cpuset_mutex);
2503
2504         if (is_partition_root(cs))
2505                 update_prstate(cs, 0);
2506
2507         if (!cgroup_subsys_on_dfl(cpuset_cgrp_subsys) &&
2508             is_sched_load_balance(cs))
2509                 update_flag(CS_SCHED_LOAD_BALANCE, cs, 0);
2510
2511         cpuset_dec();
2512         clear_bit(CS_ONLINE, &cs->flags);
2513
2514         mutex_unlock(&cpuset_mutex);
2515 }
2516
2517 static void cpuset_css_free(struct cgroup_subsys_state *css)
2518 {
2519         struct cpuset *cs = css_cs(css);
2520
2521         free_cpuset(cs);
2522 }
2523
2524 static void cpuset_bind(struct cgroup_subsys_state *root_css)
2525 {
2526         mutex_lock(&cpuset_mutex);
2527         spin_lock_irq(&callback_lock);
2528
2529         if (is_in_v2_mode()) {
2530                 cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask);
2531                 top_cpuset.mems_allowed = node_possible_map;
2532         } else {
2533                 cpumask_copy(top_cpuset.cpus_allowed,
2534                              top_cpuset.effective_cpus);
2535                 top_cpuset.mems_allowed = top_cpuset.effective_mems;
2536         }
2537
2538         spin_unlock_irq(&callback_lock);
2539         mutex_unlock(&cpuset_mutex);
2540 }
2541
2542 /*
2543  * Make sure the new task conform to the current state of its parent,
2544  * which could have been changed by cpuset just after it inherits the
2545  * state from the parent and before it sits on the cgroup's task list.
2546  */
2547 static void cpuset_fork(struct task_struct *task)
2548 {
2549         if (task_css_is_root(task, cpuset_cgrp_id))
2550                 return;
2551
2552         set_cpus_allowed_ptr(task, &current->cpus_allowed);
2553         task->mems_allowed = current->mems_allowed;
2554 }
2555
2556 struct cgroup_subsys cpuset_cgrp_subsys = {
2557         .css_alloc      = cpuset_css_alloc,
2558         .css_online     = cpuset_css_online,
2559         .css_offline    = cpuset_css_offline,
2560         .css_free       = cpuset_css_free,
2561         .can_attach     = cpuset_can_attach,
2562         .cancel_attach  = cpuset_cancel_attach,
2563         .attach         = cpuset_attach,
2564         .post_attach    = cpuset_post_attach,
2565         .bind           = cpuset_bind,
2566         .fork           = cpuset_fork,
2567         .legacy_cftypes = legacy_files,
2568         .dfl_cftypes    = dfl_files,
2569         .early_init     = true,
2570         .threaded       = true,
2571 };
2572
2573 /**
2574  * cpuset_init - initialize cpusets at system boot
2575  *
2576  * Description: Initialize top_cpuset and the cpuset internal file system,
2577  **/
2578
2579 int __init cpuset_init(void)
2580 {
2581         int err = 0;
2582
2583         BUG_ON(!alloc_cpumask_var(&top_cpuset.cpus_allowed, GFP_KERNEL));
2584         BUG_ON(!alloc_cpumask_var(&top_cpuset.effective_cpus, GFP_KERNEL));
2585         BUG_ON(!zalloc_cpumask_var(&top_cpuset.subparts_cpus, GFP_KERNEL));
2586
2587         cpumask_setall(top_cpuset.cpus_allowed);
2588         nodes_setall(top_cpuset.mems_allowed);
2589         cpumask_setall(top_cpuset.effective_cpus);
2590         nodes_setall(top_cpuset.effective_mems);
2591
2592         fmeter_init(&top_cpuset.fmeter);
2593         set_bit(CS_SCHED_LOAD_BALANCE, &top_cpuset.flags);
2594         top_cpuset.relax_domain_level = -1;
2595
2596         err = register_filesystem(&cpuset_fs_type);
2597         if (err < 0)
2598                 return err;
2599
2600         BUG_ON(!alloc_cpumask_var(&cpus_attach, GFP_KERNEL));
2601
2602         return 0;
2603 }
2604
2605 /*
2606  * If CPU and/or memory hotplug handlers, below, unplug any CPUs
2607  * or memory nodes, we need to walk over the cpuset hierarchy,
2608  * removing that CPU or node from all cpusets.  If this removes the
2609  * last CPU or node from a cpuset, then move the tasks in the empty
2610  * cpuset to its next-highest non-empty parent.
2611  */
2612 static void remove_tasks_in_empty_cpuset(struct cpuset *cs)
2613 {
2614         struct cpuset *parent;
2615
2616         /*
2617          * Find its next-highest non-empty parent, (top cpuset
2618          * has online cpus, so can't be empty).
2619          */
2620         parent = parent_cs(cs);
2621         while (cpumask_empty(parent->cpus_allowed) ||
2622                         nodes_empty(parent->mems_allowed))
2623                 parent = parent_cs(parent);
2624
2625         if (cgroup_transfer_tasks(parent->css.cgroup, cs->css.cgroup)) {
2626                 pr_err("cpuset: failed to transfer tasks out of empty cpuset ");
2627                 pr_cont_cgroup_name(cs->css.cgroup);
2628                 pr_cont("\n");
2629         }
2630 }
2631
2632 static void
2633 hotplug_update_tasks_legacy(struct cpuset *cs,
2634                             struct cpumask *new_cpus, nodemask_t *new_mems,
2635                             bool cpus_updated, bool mems_updated)
2636 {
2637         bool is_empty;
2638
2639         spin_lock_irq(&callback_lock);
2640         cpumask_copy(cs->cpus_allowed, new_cpus);
2641         cpumask_copy(cs->effective_cpus, new_cpus);
2642         cs->mems_allowed = *new_mems;
2643         cs->effective_mems = *new_mems;
2644         spin_unlock_irq(&callback_lock);
2645
2646         /*
2647          * Don't call update_tasks_cpumask() if the cpuset becomes empty,
2648          * as the tasks will be migratecd to an ancestor.
2649          */
2650         if (cpus_updated && !cpumask_empty(cs->cpus_allowed))
2651                 update_tasks_cpumask(cs);
2652         if (mems_updated && !nodes_empty(cs->mems_allowed))
2653                 update_tasks_nodemask(cs);
2654
2655         is_empty = cpumask_empty(cs->cpus_allowed) ||
2656                    nodes_empty(cs->mems_allowed);
2657
2658         mutex_unlock(&cpuset_mutex);
2659
2660         /*
2661          * Move tasks to the nearest ancestor with execution resources,
2662          * This is full cgroup operation which will also call back into
2663          * cpuset. Should be done outside any lock.
2664          */
2665         if (is_empty)
2666                 remove_tasks_in_empty_cpuset(cs);
2667
2668         mutex_lock(&cpuset_mutex);
2669 }
2670
2671 static void
2672 hotplug_update_tasks(struct cpuset *cs,
2673                      struct cpumask *new_cpus, nodemask_t *new_mems,
2674                      bool cpus_updated, bool mems_updated)
2675 {
2676         if (cpumask_empty(new_cpus))
2677                 cpumask_copy(new_cpus, parent_cs(cs)->effective_cpus);
2678         if (nodes_empty(*new_mems))
2679                 *new_mems = parent_cs(cs)->effective_mems;
2680
2681         spin_lock_irq(&callback_lock);
2682         cpumask_copy(cs->effective_cpus, new_cpus);
2683         cs->effective_mems = *new_mems;
2684         spin_unlock_irq(&callback_lock);
2685
2686         if (cpus_updated)
2687                 update_tasks_cpumask(cs);
2688         if (mems_updated)
2689                 update_tasks_nodemask(cs);
2690 }
2691
2692 /**
2693  * cpuset_hotplug_update_tasks - update tasks in a cpuset for hotunplug
2694  * @cs: cpuset in interest
2695  *
2696  * Compare @cs's cpu and mem masks against top_cpuset and if some have gone
2697  * offline, update @cs accordingly.  If @cs ends up with no CPU or memory,
2698  * all its tasks are moved to the nearest ancestor with both resources.
2699  */
2700 static void cpuset_hotplug_update_tasks(struct cpuset *cs)
2701 {
2702         static cpumask_t new_cpus;
2703         static nodemask_t new_mems;
2704         bool cpus_updated;
2705         bool mems_updated;
2706 retry:
2707         wait_event(cpuset_attach_wq, cs->attach_in_progress == 0);
2708
2709         mutex_lock(&cpuset_mutex);
2710
2711         /*
2712          * We have raced with task attaching. We wait until attaching
2713          * is finished, so we won't attach a task to an empty cpuset.
2714          */
2715         if (cs->attach_in_progress) {
2716                 mutex_unlock(&cpuset_mutex);
2717                 goto retry;
2718         }
2719
2720         cpumask_and(&new_cpus, cs->cpus_allowed, parent_cs(cs)->effective_cpus);
2721         nodes_and(new_mems, cs->mems_allowed, parent_cs(cs)->effective_mems);
2722
2723         cpus_updated = !cpumask_equal(&new_cpus, cs->effective_cpus);
2724         mems_updated = !nodes_equal(new_mems, cs->effective_mems);
2725
2726         if (is_in_v2_mode())
2727                 hotplug_update_tasks(cs, &new_cpus, &new_mems,
2728                                      cpus_updated, mems_updated);
2729         else
2730                 hotplug_update_tasks_legacy(cs, &new_cpus, &new_mems,
2731                                             cpus_updated, mems_updated);
2732
2733         mutex_unlock(&cpuset_mutex);
2734 }
2735
2736 static bool force_rebuild;
2737
2738 void cpuset_force_rebuild(void)
2739 {
2740         force_rebuild = true;
2741 }
2742
2743 /**
2744  * cpuset_hotplug_workfn - handle CPU/memory hotunplug for a cpuset
2745  *
2746  * This function is called after either CPU or memory configuration has
2747  * changed and updates cpuset accordingly.  The top_cpuset is always
2748  * synchronized to cpu_active_mask and N_MEMORY, which is necessary in
2749  * order to make cpusets transparent (of no affect) on systems that are
2750  * actively using CPU hotplug but making no active use of cpusets.
2751  *
2752  * Non-root cpusets are only affected by offlining.  If any CPUs or memory
2753  * nodes have been taken down, cpuset_hotplug_update_tasks() is invoked on
2754  * all descendants.
2755  *
2756  * Note that CPU offlining during suspend is ignored.  We don't modify
2757  * cpusets across suspend/resume cycles at all.
2758  */
2759 static void cpuset_hotplug_workfn(struct work_struct *work)
2760 {
2761         static cpumask_t new_cpus;
2762         static nodemask_t new_mems;
2763         bool cpus_updated, mems_updated;
2764         bool on_dfl = is_in_v2_mode();
2765
2766         mutex_lock(&cpuset_mutex);
2767
2768         /* fetch the available cpus/mems and find out which changed how */
2769         cpumask_copy(&new_cpus, cpu_active_mask);
2770         new_mems = node_states[N_MEMORY];
2771
2772         cpus_updated = !cpumask_equal(top_cpuset.effective_cpus, &new_cpus);
2773         mems_updated = !nodes_equal(top_cpuset.effective_mems, new_mems);
2774
2775         /* synchronize cpus_allowed to cpu_active_mask */
2776         if (cpus_updated) {
2777                 spin_lock_irq(&callback_lock);
2778                 if (!on_dfl)
2779                         cpumask_copy(top_cpuset.cpus_allowed, &new_cpus);
2780                 cpumask_copy(top_cpuset.effective_cpus, &new_cpus);
2781                 spin_unlock_irq(&callback_lock);
2782                 /* we don't mess with cpumasks of tasks in top_cpuset */
2783         }
2784
2785         /* synchronize mems_allowed to N_MEMORY */
2786         if (mems_updated) {
2787                 spin_lock_irq(&callback_lock);
2788                 if (!on_dfl)
2789                         top_cpuset.mems_allowed = new_mems;
2790                 top_cpuset.effective_mems = new_mems;
2791                 spin_unlock_irq(&callback_lock);
2792                 update_tasks_nodemask(&top_cpuset);
2793         }
2794
2795         mutex_unlock(&cpuset_mutex);
2796
2797         /* if cpus or mems changed, we need to propagate to descendants */
2798         if (cpus_updated || mems_updated) {
2799                 struct cpuset *cs;
2800                 struct cgroup_subsys_state *pos_css;
2801
2802                 rcu_read_lock();
2803                 cpuset_for_each_descendant_pre(cs, pos_css, &top_cpuset) {
2804                         if (cs == &top_cpuset || !css_tryget_online(&cs->css))
2805                                 continue;
2806                         rcu_read_unlock();
2807
2808                         cpuset_hotplug_update_tasks(cs);
2809
2810                         rcu_read_lock();
2811                         css_put(&cs->css);
2812                 }
2813                 rcu_read_unlock();
2814         }
2815
2816         /* rebuild sched domains if cpus_allowed has changed */
2817         if (cpus_updated || force_rebuild) {
2818                 force_rebuild = false;
2819                 rebuild_sched_domains();
2820         }
2821 }
2822
2823 void cpuset_update_active_cpus(void)
2824 {
2825         /*
2826          * We're inside cpu hotplug critical region which usually nests
2827          * inside cgroup synchronization.  Bounce actual hotplug processing
2828          * to a work item to avoid reverse locking order.
2829          */
2830         schedule_work(&cpuset_hotplug_work);
2831 }
2832
2833 void cpuset_wait_for_hotplug(void)
2834 {
2835         flush_work(&cpuset_hotplug_work);
2836 }
2837
2838 /*
2839  * Keep top_cpuset.mems_allowed tracking node_states[N_MEMORY].
2840  * Call this routine anytime after node_states[N_MEMORY] changes.
2841  * See cpuset_update_active_cpus() for CPU hotplug handling.
2842  */
2843 static int cpuset_track_online_nodes(struct notifier_block *self,
2844                                 unsigned long action, void *arg)
2845 {
2846         schedule_work(&cpuset_hotplug_work);
2847         return NOTIFY_OK;
2848 }
2849
2850 static struct notifier_block cpuset_track_online_nodes_nb = {
2851         .notifier_call = cpuset_track_online_nodes,
2852         .priority = 10,         /* ??! */
2853 };
2854
2855 /**
2856  * cpuset_init_smp - initialize cpus_allowed
2857  *
2858  * Description: Finish top cpuset after cpu, node maps are initialized
2859  */
2860 void __init cpuset_init_smp(void)
2861 {
2862         cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask);
2863         top_cpuset.mems_allowed = node_states[N_MEMORY];
2864         top_cpuset.old_mems_allowed = top_cpuset.mems_allowed;
2865
2866         cpumask_copy(top_cpuset.effective_cpus, cpu_active_mask);
2867         top_cpuset.effective_mems = node_states[N_MEMORY];
2868
2869         register_hotmemory_notifier(&cpuset_track_online_nodes_nb);
2870
2871         cpuset_migrate_mm_wq = alloc_ordered_workqueue("cpuset_migrate_mm", 0);
2872         BUG_ON(!cpuset_migrate_mm_wq);
2873 }
2874
2875 /**
2876  * cpuset_cpus_allowed - return cpus_allowed mask from a tasks cpuset.
2877  * @tsk: pointer to task_struct from which to obtain cpuset->cpus_allowed.
2878  * @pmask: pointer to struct cpumask variable to receive cpus_allowed set.
2879  *
2880  * Description: Returns the cpumask_var_t cpus_allowed of the cpuset
2881  * attached to the specified @tsk.  Guaranteed to return some non-empty
2882  * subset of cpu_online_mask, even if this means going outside the
2883  * tasks cpuset.
2884  **/
2885
2886 void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask)
2887 {
2888         unsigned long flags;
2889
2890         spin_lock_irqsave(&callback_lock, flags);
2891         rcu_read_lock();
2892         guarantee_online_cpus(task_cs(tsk), pmask);
2893         rcu_read_unlock();
2894         spin_unlock_irqrestore(&callback_lock, flags);
2895 }
2896
2897 void cpuset_cpus_allowed_fallback(struct task_struct *tsk)
2898 {
2899         rcu_read_lock();
2900         do_set_cpus_allowed(tsk, task_cs(tsk)->effective_cpus);
2901         rcu_read_unlock();
2902
2903         /*
2904          * We own tsk->cpus_allowed, nobody can change it under us.
2905          *
2906          * But we used cs && cs->cpus_allowed lockless and thus can
2907          * race with cgroup_attach_task() or update_cpumask() and get
2908          * the wrong tsk->cpus_allowed. However, both cases imply the
2909          * subsequent cpuset_change_cpumask()->set_cpus_allowed_ptr()
2910          * which takes task_rq_lock().
2911          *
2912          * If we are called after it dropped the lock we must see all
2913          * changes in tsk_cs()->cpus_allowed. Otherwise we can temporary
2914          * set any mask even if it is not right from task_cs() pov,
2915          * the pending set_cpus_allowed_ptr() will fix things.
2916          *
2917          * select_fallback_rq() will fix things ups and set cpu_possible_mask
2918          * if required.
2919          */
2920 }
2921
2922 void __init cpuset_init_current_mems_allowed(void)
2923 {
2924         nodes_setall(current->mems_allowed);
2925 }
2926
2927 /**
2928  * cpuset_mems_allowed - return mems_allowed mask from a tasks cpuset.
2929  * @tsk: pointer to task_struct from which to obtain cpuset->mems_allowed.
2930  *
2931  * Description: Returns the nodemask_t mems_allowed of the cpuset
2932  * attached to the specified @tsk.  Guaranteed to return some non-empty
2933  * subset of node_states[N_MEMORY], even if this means going outside the
2934  * tasks cpuset.
2935  **/
2936
2937 nodemask_t cpuset_mems_allowed(struct task_struct *tsk)
2938 {
2939         nodemask_t mask;
2940         unsigned long flags;
2941
2942         spin_lock_irqsave(&callback_lock, flags);
2943         rcu_read_lock();
2944         guarantee_online_mems(task_cs(tsk), &mask);
2945         rcu_read_unlock();
2946         spin_unlock_irqrestore(&callback_lock, flags);
2947
2948         return mask;
2949 }
2950
2951 /**
2952  * cpuset_nodemask_valid_mems_allowed - check nodemask vs. curremt mems_allowed
2953  * @nodemask: the nodemask to be checked
2954  *
2955  * Are any of the nodes in the nodemask allowed in current->mems_allowed?
2956  */
2957 int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask)
2958 {
2959         return nodes_intersects(*nodemask, current->mems_allowed);
2960 }
2961
2962 /*
2963  * nearest_hardwall_ancestor() - Returns the nearest mem_exclusive or
2964  * mem_hardwall ancestor to the specified cpuset.  Call holding
2965  * callback_lock.  If no ancestor is mem_exclusive or mem_hardwall
2966  * (an unusual configuration), then returns the root cpuset.
2967  */
2968 static struct cpuset *nearest_hardwall_ancestor(struct cpuset *cs)
2969 {
2970         while (!(is_mem_exclusive(cs) || is_mem_hardwall(cs)) && parent_cs(cs))
2971                 cs = parent_cs(cs);
2972         return cs;
2973 }
2974
2975 /**
2976  * cpuset_node_allowed - Can we allocate on a memory node?
2977  * @node: is this an allowed node?
2978  * @gfp_mask: memory allocation flags
2979  *
2980  * If we're in interrupt, yes, we can always allocate.  If @node is set in
2981  * current's mems_allowed, yes.  If it's not a __GFP_HARDWALL request and this
2982  * node is set in the nearest hardwalled cpuset ancestor to current's cpuset,
2983  * yes.  If current has access to memory reserves as an oom victim, yes.
2984  * Otherwise, no.
2985  *
2986  * GFP_USER allocations are marked with the __GFP_HARDWALL bit,
2987  * and do not allow allocations outside the current tasks cpuset
2988  * unless the task has been OOM killed.
2989  * GFP_KERNEL allocations are not so marked, so can escape to the
2990  * nearest enclosing hardwalled ancestor cpuset.
2991  *
2992  * Scanning up parent cpusets requires callback_lock.  The
2993  * __alloc_pages() routine only calls here with __GFP_HARDWALL bit
2994  * _not_ set if it's a GFP_KERNEL allocation, and all nodes in the
2995  * current tasks mems_allowed came up empty on the first pass over
2996  * the zonelist.  So only GFP_KERNEL allocations, if all nodes in the
2997  * cpuset are short of memory, might require taking the callback_lock.
2998  *
2999  * The first call here from mm/page_alloc:get_page_from_freelist()
3000  * has __GFP_HARDWALL set in gfp_mask, enforcing hardwall cpusets,
3001  * so no allocation on a node outside the cpuset is allowed (unless
3002  * in interrupt, of course).
3003  *
3004  * The second pass through get_page_from_freelist() doesn't even call
3005  * here for GFP_ATOMIC calls.  For those calls, the __alloc_pages()
3006  * variable 'wait' is not set, and the bit ALLOC_CPUSET is not set
3007  * in alloc_flags.  That logic and the checks below have the combined
3008  * affect that:
3009  *      in_interrupt - any node ok (current task context irrelevant)
3010  *      GFP_ATOMIC   - any node ok
3011  *      tsk_is_oom_victim   - any node ok
3012  *      GFP_KERNEL   - any node in enclosing hardwalled cpuset ok
3013  *      GFP_USER     - only nodes in current tasks mems allowed ok.
3014  */
3015 bool __cpuset_node_allowed(int node, gfp_t gfp_mask)
3016 {
3017         struct cpuset *cs;              /* current cpuset ancestors */
3018         int allowed;                    /* is allocation in zone z allowed? */
3019         unsigned long flags;
3020
3021         if (in_interrupt())
3022                 return true;
3023         if (node_isset(node, current->mems_allowed))
3024                 return true;
3025         /*
3026          * Allow tasks that have access to memory reserves because they have
3027          * been OOM killed to get memory anywhere.
3028          */
3029         if (unlikely(tsk_is_oom_victim(current)))
3030                 return true;
3031         if (gfp_mask & __GFP_HARDWALL)  /* If hardwall request, stop here */
3032                 return false;
3033
3034         if (current->flags & PF_EXITING) /* Let dying task have memory */
3035                 return true;
3036
3037         /* Not hardwall and node outside mems_allowed: scan up cpusets */
3038         spin_lock_irqsave(&callback_lock, flags);
3039
3040         rcu_read_lock();
3041         cs = nearest_hardwall_ancestor(task_cs(current));
3042         allowed = node_isset(node, cs->mems_allowed);
3043         rcu_read_unlock();
3044
3045         spin_unlock_irqrestore(&callback_lock, flags);
3046         return allowed;
3047 }
3048
3049 /**
3050  * cpuset_mem_spread_node() - On which node to begin search for a file page
3051  * cpuset_slab_spread_node() - On which node to begin search for a slab page
3052  *
3053  * If a task is marked PF_SPREAD_PAGE or PF_SPREAD_SLAB (as for
3054  * tasks in a cpuset with is_spread_page or is_spread_slab set),
3055  * and if the memory allocation used cpuset_mem_spread_node()
3056  * to determine on which node to start looking, as it will for
3057  * certain page cache or slab cache pages such as used for file
3058  * system buffers and inode caches, then instead of starting on the
3059  * local node to look for a free page, rather spread the starting
3060  * node around the tasks mems_allowed nodes.
3061  *
3062  * We don't have to worry about the returned node being offline
3063  * because "it can't happen", and even if it did, it would be ok.
3064  *
3065  * The routines calling guarantee_online_mems() are careful to
3066  * only set nodes in task->mems_allowed that are online.  So it
3067  * should not be possible for the following code to return an
3068  * offline node.  But if it did, that would be ok, as this routine
3069  * is not returning the node where the allocation must be, only
3070  * the node where the search should start.  The zonelist passed to
3071  * __alloc_pages() will include all nodes.  If the slab allocator
3072  * is passed an offline node, it will fall back to the local node.
3073  * See kmem_cache_alloc_node().
3074  */
3075
3076 static int cpuset_spread_node(int *rotor)
3077 {
3078         return *rotor = next_node_in(*rotor, current->mems_allowed);
3079 }
3080
3081 int cpuset_mem_spread_node(void)
3082 {
3083         if (current->cpuset_mem_spread_rotor == NUMA_NO_NODE)
3084                 current->cpuset_mem_spread_rotor =
3085                         node_random(&current->mems_allowed);
3086
3087         return cpuset_spread_node(&current->cpuset_mem_spread_rotor);
3088 }
3089
3090 int cpuset_slab_spread_node(void)
3091 {
3092         if (current->cpuset_slab_spread_rotor == NUMA_NO_NODE)
3093                 current->cpuset_slab_spread_rotor =
3094                         node_random(&current->mems_allowed);
3095
3096         return cpuset_spread_node(&current->cpuset_slab_spread_rotor);
3097 }
3098
3099 EXPORT_SYMBOL_GPL(cpuset_mem_spread_node);
3100
3101 /**
3102  * cpuset_mems_allowed_intersects - Does @tsk1's mems_allowed intersect @tsk2's?
3103  * @tsk1: pointer to task_struct of some task.
3104  * @tsk2: pointer to task_struct of some other task.
3105  *
3106  * Description: Return true if @tsk1's mems_allowed intersects the
3107  * mems_allowed of @tsk2.  Used by the OOM killer to determine if
3108  * one of the task's memory usage might impact the memory available
3109  * to the other.
3110  **/
3111
3112 int cpuset_mems_allowed_intersects(const struct task_struct *tsk1,
3113                                    const struct task_struct *tsk2)
3114 {
3115         return nodes_intersects(tsk1->mems_allowed, tsk2->mems_allowed);
3116 }
3117
3118 /**
3119  * cpuset_print_current_mems_allowed - prints current's cpuset and mems_allowed
3120  *
3121  * Description: Prints current's name, cpuset name, and cached copy of its
3122  * mems_allowed to the kernel log.
3123  */
3124 void cpuset_print_current_mems_allowed(void)
3125 {
3126         struct cgroup *cgrp;
3127
3128         rcu_read_lock();
3129
3130         cgrp = task_cs(current)->css.cgroup;
3131         pr_info("%s cpuset=", current->comm);
3132         pr_cont_cgroup_name(cgrp);
3133         pr_cont(" mems_allowed=%*pbl\n",
3134                 nodemask_pr_args(&current->mems_allowed));
3135
3136         rcu_read_unlock();
3137 }
3138
3139 /*
3140  * Collection of memory_pressure is suppressed unless
3141  * this flag is enabled by writing "1" to the special
3142  * cpuset file 'memory_pressure_enabled' in the root cpuset.
3143  */
3144
3145 int cpuset_memory_pressure_enabled __read_mostly;
3146
3147 /**
3148  * cpuset_memory_pressure_bump - keep stats of per-cpuset reclaims.
3149  *
3150  * Keep a running average of the rate of synchronous (direct)
3151  * page reclaim efforts initiated by tasks in each cpuset.
3152  *
3153  * This represents the rate at which some task in the cpuset
3154  * ran low on memory on all nodes it was allowed to use, and
3155  * had to enter the kernels page reclaim code in an effort to
3156  * create more free memory by tossing clean pages or swapping
3157  * or writing dirty pages.
3158  *
3159  * Display to user space in the per-cpuset read-only file
3160  * "memory_pressure".  Value displayed is an integer
3161  * representing the recent rate of entry into the synchronous
3162  * (direct) page reclaim by any task attached to the cpuset.
3163  **/
3164
3165 void __cpuset_memory_pressure_bump(void)
3166 {
3167         rcu_read_lock();
3168         fmeter_markevent(&task_cs(current)->fmeter);
3169         rcu_read_unlock();
3170 }
3171
3172 #ifdef CONFIG_PROC_PID_CPUSET
3173 /*
3174  * proc_cpuset_show()
3175  *  - Print tasks cpuset path into seq_file.
3176  *  - Used for /proc/<pid>/cpuset.
3177  *  - No need to task_lock(tsk) on this tsk->cpuset reference, as it
3178  *    doesn't really matter if tsk->cpuset changes after we read it,
3179  *    and we take cpuset_mutex, keeping cpuset_attach() from changing it
3180  *    anyway.
3181  */
3182 int proc_cpuset_show(struct seq_file *m, struct pid_namespace *ns,
3183                      struct pid *pid, struct task_struct *tsk)
3184 {
3185         char *buf;
3186         struct cgroup_subsys_state *css;
3187         int retval;
3188
3189         retval = -ENOMEM;
3190         buf = kmalloc(PATH_MAX, GFP_KERNEL);
3191         if (!buf)
3192                 goto out;
3193
3194         css = task_get_css(tsk, cpuset_cgrp_id);
3195         retval = cgroup_path_ns(css->cgroup, buf, PATH_MAX,
3196                                 current->nsproxy->cgroup_ns);
3197         css_put(css);
3198         if (retval >= PATH_MAX)
3199                 retval = -ENAMETOOLONG;
3200         if (retval < 0)
3201                 goto out_free;
3202         seq_puts(m, buf);
3203         seq_putc(m, '\n');
3204         retval = 0;
3205 out_free:
3206         kfree(buf);
3207 out:
3208         return retval;
3209 }
3210 #endif /* CONFIG_PROC_PID_CPUSET */
3211
3212 /* Display task mems_allowed in /proc/<pid>/status file. */
3213 void cpuset_task_status_allowed(struct seq_file *m, struct task_struct *task)
3214 {
3215         seq_printf(m, "Mems_allowed:\t%*pb\n",
3216                    nodemask_pr_args(&task->mems_allowed));
3217         seq_printf(m, "Mems_allowed_list:\t%*pbl\n",
3218                    nodemask_pr_args(&task->mems_allowed));
3219 }