Thread (8 messages) 8 messages, 2 authors, 2014-05-16

[PATCH 9/9] cgroup: use cgroup->self.refcnt for cgroup refcnting

From: tj@kernel.org (Tejun Heo)
Date: 2014-05-16 14:37:27
Also in: cgroups, linux-tegra, lkml

Hello, Stephen.

On Thu, May 15, 2014 at 03:56:51PM -0600, Stephen Warren wrote:
On 05/15/2014 01:07 PM, Stephen Warren wrote:
quoted
On 05/09/2014 03:13 PM, Tejun Heo wrote:
quoted
Currently cgroup implements refcnting separately using atomic_t
cgroup->refcnt.  The destruction paths of cgroup and css are rather
complex and bear a lot of similiarities including the use of RCU and
bouncing to a work item.

This patch makes cgroup use the refcnt of self css for refcnting
instead of using its own.  This makes cgroup refcnting use css's
percpu refcnt and share the destruction mechanism.
...
In next-20150515, this patch causes silent boot failures on NVIDIA Tegra
ARM systems. There isn't even any earlyprintk. Reverting this one patch
solves this.

I was a bit surprised that cgroups would cause such an issue, but
looking at a normal kernel boot, I guess cgroup does get initialized
very early:

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct

Anyway, I'll try to track down what the problem is, but if someone
familiar with this patch could give it a look, that'd be very useful,
since I'm not at all familiar with this code or feature.
It looks like this has something to do with the new code using percpu_
functions from within cgroup_init_early, yet that function being called
before init/main.c calls setup_per_cpu_areas() etc.? Unfortunately I
have to run to some meetings now, so won't look at this until tomorrow.
Yeap, I know where the issue is.  Will post a fix soon.

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help