| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- From e2494e8c48c510ccefc889393f5d776b5e3824ac Mon Sep 17 00:00:00 2001
 
- From: Phil Elwell <[email protected]>
 
- Date: Mon, 27 Nov 2017 17:14:54 +0000
 
- Subject: [PATCH] cgroup: Disable cgroup "memory" by default
 
- Some Raspberry Pis have limited RAM and most users won't use the
 
- cgroup memory support so it is disabled by default. Enable with:
 
-     cgroup_enable=memory
 
- See: https://github.com/raspberrypi/linux/issues/1950
 
- Signed-off-by: Phil Elwell <[email protected]>
 
- ---
 
-  kernel/cgroup/cgroup.c | 38 ++++++++++++++++++++++++++++++++++++++
 
-  1 file changed, 38 insertions(+)
 
- --- a/kernel/cgroup/cgroup.c
 
- +++ b/kernel/cgroup/cgroup.c
 
- @@ -5875,6 +5875,9 @@ int __init cgroup_init_early(void)
 
-  	return 0;
 
-  }
 
-  
 
- +static u16 cgroup_enable_mask __initdata;
 
- +static int __init cgroup_disable(char *str);
 
- +
 
-  /**
 
-   * cgroup_init - cgroup initialization
 
-   *
 
- @@ -5913,6 +5916,12 @@ int __init cgroup_init(void)
 
-  
 
-  	mutex_unlock(&cgroup_mutex);
 
-  
 
- +	/*
 
- +	 * Apply an implicit disable, knowing that an explicit enable will
 
- +	 * prevent if from doing anything.
 
- +	 */
 
- +	cgroup_disable("memory");
 
- +
 
-  	for_each_subsys(ss, ssid) {
 
-  		if (ss->early_init) {
 
-  			struct cgroup_subsys_state *css =
 
- @@ -6497,6 +6506,10 @@ static int __init cgroup_disable(char *s
 
-  			    strcmp(token, ss->legacy_name))
 
-  				continue;
 
-  
 
- +			/* An explicit cgroup_enable overrides a disable */
 
- +			if (cgroup_enable_mask & (1 << i))
 
- +				continue;
 
- +
 
-  			static_branch_disable(cgroup_subsys_enabled_key[i]);
 
-  			pr_info("Disabling %s control group subsystem\n",
 
-  				ss->name);
 
- @@ -6515,6 +6528,31 @@ static int __init cgroup_disable(char *s
 
-  }
 
-  __setup("cgroup_disable=", cgroup_disable);
 
-  
 
- +static int __init cgroup_enable(char *str)
 
- +{
 
- +	struct cgroup_subsys *ss;
 
- +	char *token;
 
- +	int i;
 
- +
 
- +	while ((token = strsep(&str, ",")) != NULL) {
 
- +		if (!*token)
 
- +			continue;
 
- +
 
- +		for_each_subsys(ss, i) {
 
- +			if (strcmp(token, ss->name) &&
 
- +			    strcmp(token, ss->legacy_name))
 
- +				continue;
 
- +
 
- +			cgroup_enable_mask |= 1 << i;
 
- +			static_branch_enable(cgroup_subsys_enabled_key[i]);
 
- +			pr_info("Enabling %s control group subsystem\n",
 
- +				ss->name);
 
- +		}
 
- +	}
 
- +	return 1;
 
- +}
 
- +__setup("cgroup_enable=", cgroup_enable);
 
- +
 
-  void __init __weak enable_debug_cgroup(void) { }
 
-  
 
-  static int __init enable_cgroup_debug(char *str)
 
 
  |