[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