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 =
- @@ -6503,6 +6512,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);
- @@ -6521,6 +6534,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)
|