Merge branch 'for-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup updates from Tejun Heo: "Nothing too interesting. Rik made cpuset cooperate better with isolcpus and there are several other cleanup patches" * 'for-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: cpuset, isolcpus: document relationship between cpusets & isolcpus cpusets, isolcpus: exclude isolcpus from load balancing in cpusets sched, isolcpu: make cpu_isolated_map visible outside scheduler cpuset: initialize cpuset a bit early cgroup: Use kvfree in pidlist_free() cgroup: call cgroup_subsys->bind on cgroup subsys initialization
This commit is contained in:
commit
4fd48b45ff
6 changed files with 29 additions and 12 deletions
|
@ -3806,10 +3806,7 @@ static void *pidlist_allocate(int count)
|
|||
|
||||
static void pidlist_free(void *p)
|
||||
{
|
||||
if (is_vmalloc_addr(p))
|
||||
vfree(p);
|
||||
else
|
||||
kfree(p);
|
||||
kvfree(p);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -5040,6 +5037,9 @@ int __init cgroup_init(void)
|
|||
WARN_ON(cgroup_add_dfl_cftypes(ss, ss->dfl_cftypes));
|
||||
WARN_ON(cgroup_add_legacy_cftypes(ss, ss->legacy_cftypes));
|
||||
}
|
||||
|
||||
if (ss->bind)
|
||||
ss->bind(init_css_set.subsys[ssid]);
|
||||
}
|
||||
|
||||
cgroup_kobj = kobject_create_and_add("cgroup", fs_kobj);
|
||||
|
|
|
@ -622,6 +622,7 @@ static int generate_sched_domains(cpumask_var_t **domains,
|
|||
int csn; /* how many cpuset ptrs in csa so far */
|
||||
int i, j, k; /* indices for partition finding loops */
|
||||
cpumask_var_t *doms; /* resulting partition; i.e. sched domains */
|
||||
cpumask_var_t non_isolated_cpus; /* load balanced CPUs */
|
||||
struct sched_domain_attr *dattr; /* attributes for custom domains */
|
||||
int ndoms = 0; /* number of sched domains in result */
|
||||
int nslot; /* next empty doms[] struct cpumask slot */
|
||||
|
@ -631,6 +632,10 @@ static int generate_sched_domains(cpumask_var_t **domains,
|
|||
dattr = NULL;
|
||||
csa = NULL;
|
||||
|
||||
if (!alloc_cpumask_var(&non_isolated_cpus, GFP_KERNEL))
|
||||
goto done;
|
||||
cpumask_andnot(non_isolated_cpus, cpu_possible_mask, cpu_isolated_map);
|
||||
|
||||
/* Special case for the 99% of systems with one, full, sched domain */
|
||||
if (is_sched_load_balance(&top_cpuset)) {
|
||||
ndoms = 1;
|
||||
|
@ -643,7 +648,8 @@ static int generate_sched_domains(cpumask_var_t **domains,
|
|||
*dattr = SD_ATTR_INIT;
|
||||
update_domain_attr_tree(dattr, &top_cpuset);
|
||||
}
|
||||
cpumask_copy(doms[0], top_cpuset.effective_cpus);
|
||||
cpumask_and(doms[0], top_cpuset.effective_cpus,
|
||||
non_isolated_cpus);
|
||||
|
||||
goto done;
|
||||
}
|
||||
|
@ -666,7 +672,8 @@ static int generate_sched_domains(cpumask_var_t **domains,
|
|||
* the corresponding sched domain.
|
||||
*/
|
||||
if (!cpumask_empty(cp->cpus_allowed) &&
|
||||
!is_sched_load_balance(cp))
|
||||
!(is_sched_load_balance(cp) &&
|
||||
cpumask_intersects(cp->cpus_allowed, non_isolated_cpus)))
|
||||
continue;
|
||||
|
||||
if (is_sched_load_balance(cp))
|
||||
|
@ -748,6 +755,7 @@ restart:
|
|||
|
||||
if (apn == b->pn) {
|
||||
cpumask_or(dp, dp, b->effective_cpus);
|
||||
cpumask_and(dp, dp, non_isolated_cpus);
|
||||
if (dattr)
|
||||
update_domain_attr_tree(dattr + nslot, b);
|
||||
|
||||
|
@ -760,6 +768,7 @@ restart:
|
|||
BUG_ON(nslot != ndoms);
|
||||
|
||||
done:
|
||||
free_cpumask_var(non_isolated_cpus);
|
||||
kfree(csa);
|
||||
|
||||
/*
|
||||
|
|
|
@ -306,6 +306,9 @@ __read_mostly int scheduler_running;
|
|||
*/
|
||||
int sysctl_sched_rt_runtime = 950000;
|
||||
|
||||
/* cpus with isolated domains */
|
||||
cpumask_var_t cpu_isolated_map;
|
||||
|
||||
/*
|
||||
* this_rq_lock - lock this runqueue and disable interrupts.
|
||||
*/
|
||||
|
@ -5811,9 +5814,6 @@ cpu_attach_domain(struct sched_domain *sd, struct root_domain *rd, int cpu)
|
|||
update_top_cache_domain(cpu);
|
||||
}
|
||||
|
||||
/* cpus with isolated domains */
|
||||
static cpumask_var_t cpu_isolated_map;
|
||||
|
||||
/* Setup the mask of cpus configured for isolated domains */
|
||||
static int __init isolated_cpu_setup(char *str)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue