mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From b2670b95c0cbe7b6ba038a7615725d87ad59af4f Mon Sep 17 00:00:00 2001
 | |
| From: Phil Elwell <phil@raspberrypi.org>
 | |
| 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 <phil@raspberrypi.org>
 | |
| ---
 | |
|  kernel/cgroup/cgroup.c | 38 ++++++++++++++++++++++++++++++++++++++
 | |
|  1 file changed, 38 insertions(+)
 | |
| 
 | |
| --- a/kernel/cgroup/cgroup.c
 | |
| +++ b/kernel/cgroup/cgroup.c
 | |
| @@ -6061,6 +6061,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
 | |
|   *
 | |
| @@ -6094,6 +6097,12 @@ int __init cgroup_init(void)
 | |
|  
 | |
|  	cgroup_unlock();
 | |
|  
 | |
| +	/*
 | |
| +	 * 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 =
 | |
| @@ -6734,6 +6743,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);
 | |
| @@ -6752,6 +6765,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)
 |