Loading kernel/cgroup/cpuset.c +19 −21 Original line number Diff line number Diff line Loading @@ -1114,7 +1114,7 @@ enum subparts_cmd { * cpus_allowed can be granted or an error code will be returned. * * For partcmd_disable, the cpuset is being transofrmed from a partition * root back to a non-partition root. any CPUs in cpus_allowed that are in * root back to a non-partition root. Any CPUs in cpus_allowed that are in * parent's subparts_cpus will be taken away from that cpumask and put back * into parent's effective_cpus. 0 should always be returned. * Loading Loading @@ -1225,7 +1225,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, /* * partcmd_update w/o newmask: * * addmask = cpus_allowed & parent->effectiveb_cpus * addmask = cpus_allowed & parent->effective_cpus * * Note that parent's subparts_cpus may have been * pre-shrunk in case there is a change in the cpu list. Loading Loading @@ -1365,12 +1365,12 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) case PRS_DISABLED: /* * If parent is not a partition root or an * invalid partition root, clear the state * state and the CS_CPU_EXCLUSIVE flag. * invalid partition root, clear its state * and its CS_CPU_EXCLUSIVE flag. */ WARN_ON_ONCE(cp->partition_root_state != PRS_ERROR); cp->partition_root_state = 0; cp->partition_root_state = PRS_DISABLED; /* * clear_bit() is an atomic operation and Loading Loading @@ -1938,29 +1938,27 @@ static int update_flag(cpuset_flagbits_t bit, struct cpuset *cs, /* * update_prstate - update partititon_root_state * cs: the cpuset to update * val: 0 - disabled, 1 - enabled * new_prs: new partition root state * * Call with cpuset_mutex held. */ static int update_prstate(struct cpuset *cs, int val) static int update_prstate(struct cpuset *cs, int new_prs) { int err; struct cpuset *parent = parent_cs(cs); struct tmpmasks tmp; struct tmpmasks tmpmask; if ((val != 0) && (val != 1)) return -EINVAL; if (val == cs->partition_root_state) if (new_prs == cs->partition_root_state) return 0; /* * Cannot force a partial or invalid partition root to a full * partition root. */ if (val && cs->partition_root_state) if (new_prs && (cs->partition_root_state < 0)) return -EINVAL; if (alloc_cpumasks(NULL, &tmp)) if (alloc_cpumasks(NULL, &tmpmask)) return -ENOMEM; err = -EINVAL; Loading @@ -1978,7 +1976,7 @@ static int update_prstate(struct cpuset *cs, int val) goto out; err = update_parent_subparts_cpumask(cs, partcmd_enable, NULL, &tmp); NULL, &tmpmask); if (err) { update_flag(CS_CPU_EXCLUSIVE, cs, 0); goto out; Loading @@ -1990,18 +1988,18 @@ static int update_prstate(struct cpuset *cs, int val) * CS_CPU_EXCLUSIVE bit. */ if (cs->partition_root_state == PRS_ERROR) { cs->partition_root_state = 0; cs->partition_root_state = PRS_DISABLED; update_flag(CS_CPU_EXCLUSIVE, cs, 0); err = 0; goto out; } err = update_parent_subparts_cpumask(cs, partcmd_disable, NULL, &tmp); NULL, &tmpmask); if (err) goto out; cs->partition_root_state = 0; cs->partition_root_state = PRS_DISABLED; /* Turning off CS_CPU_EXCLUSIVE will not return error */ update_flag(CS_CPU_EXCLUSIVE, cs, 0); Loading @@ -2015,11 +2013,11 @@ static int update_prstate(struct cpuset *cs, int val) update_tasks_cpumask(parent); if (parent->child_ecpus_count) update_sibling_cpumasks(parent, cs, &tmp); update_sibling_cpumasks(parent, cs, &tmpmask); rebuild_sched_domains_locked(); out: free_cpumasks(NULL, &tmp); free_cpumasks(NULL, &tmpmask); return err; } Loading Loading
kernel/cgroup/cpuset.c +19 −21 Original line number Diff line number Diff line Loading @@ -1114,7 +1114,7 @@ enum subparts_cmd { * cpus_allowed can be granted or an error code will be returned. * * For partcmd_disable, the cpuset is being transofrmed from a partition * root back to a non-partition root. any CPUs in cpus_allowed that are in * root back to a non-partition root. Any CPUs in cpus_allowed that are in * parent's subparts_cpus will be taken away from that cpumask and put back * into parent's effective_cpus. 0 should always be returned. * Loading Loading @@ -1225,7 +1225,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, /* * partcmd_update w/o newmask: * * addmask = cpus_allowed & parent->effectiveb_cpus * addmask = cpus_allowed & parent->effective_cpus * * Note that parent's subparts_cpus may have been * pre-shrunk in case there is a change in the cpu list. Loading Loading @@ -1365,12 +1365,12 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) case PRS_DISABLED: /* * If parent is not a partition root or an * invalid partition root, clear the state * state and the CS_CPU_EXCLUSIVE flag. * invalid partition root, clear its state * and its CS_CPU_EXCLUSIVE flag. */ WARN_ON_ONCE(cp->partition_root_state != PRS_ERROR); cp->partition_root_state = 0; cp->partition_root_state = PRS_DISABLED; /* * clear_bit() is an atomic operation and Loading Loading @@ -1938,29 +1938,27 @@ static int update_flag(cpuset_flagbits_t bit, struct cpuset *cs, /* * update_prstate - update partititon_root_state * cs: the cpuset to update * val: 0 - disabled, 1 - enabled * new_prs: new partition root state * * Call with cpuset_mutex held. */ static int update_prstate(struct cpuset *cs, int val) static int update_prstate(struct cpuset *cs, int new_prs) { int err; struct cpuset *parent = parent_cs(cs); struct tmpmasks tmp; struct tmpmasks tmpmask; if ((val != 0) && (val != 1)) return -EINVAL; if (val == cs->partition_root_state) if (new_prs == cs->partition_root_state) return 0; /* * Cannot force a partial or invalid partition root to a full * partition root. */ if (val && cs->partition_root_state) if (new_prs && (cs->partition_root_state < 0)) return -EINVAL; if (alloc_cpumasks(NULL, &tmp)) if (alloc_cpumasks(NULL, &tmpmask)) return -ENOMEM; err = -EINVAL; Loading @@ -1978,7 +1976,7 @@ static int update_prstate(struct cpuset *cs, int val) goto out; err = update_parent_subparts_cpumask(cs, partcmd_enable, NULL, &tmp); NULL, &tmpmask); if (err) { update_flag(CS_CPU_EXCLUSIVE, cs, 0); goto out; Loading @@ -1990,18 +1988,18 @@ static int update_prstate(struct cpuset *cs, int val) * CS_CPU_EXCLUSIVE bit. */ if (cs->partition_root_state == PRS_ERROR) { cs->partition_root_state = 0; cs->partition_root_state = PRS_DISABLED; update_flag(CS_CPU_EXCLUSIVE, cs, 0); err = 0; goto out; } err = update_parent_subparts_cpumask(cs, partcmd_disable, NULL, &tmp); NULL, &tmpmask); if (err) goto out; cs->partition_root_state = 0; cs->partition_root_state = PRS_DISABLED; /* Turning off CS_CPU_EXCLUSIVE will not return error */ update_flag(CS_CPU_EXCLUSIVE, cs, 0); Loading @@ -2015,11 +2013,11 @@ static int update_prstate(struct cpuset *cs, int val) update_tasks_cpumask(parent); if (parent->child_ecpus_count) update_sibling_cpumasks(parent, cs, &tmp); update_sibling_cpumasks(parent, cs, &tmpmask); rebuild_sched_domains_locked(); out: free_cpumasks(NULL, &tmp); free_cpumasks(NULL, &tmpmask); return err; } Loading