From: Phil Elwell Date: Mon, 27 Nov 2017 17:14:54 +0000 (+0000) Subject: cgroup: Disable cgroup "memory" by default X-Git-Tag: submit/tizen/20220208.074352~944 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2b13c54592135b6fab269517ed687fa9f80bf8e5;p=platform%2Fkernel%2Flinux-rpi.git 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 --- diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index c8b811e..b4ada2e 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -5665,6 +5665,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 * @@ -5703,6 +5706,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 = @@ -6240,6 +6249,10 @@ static int __init cgroup_disable(char *str) 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); @@ -6249,6 +6262,31 @@ static int __init cgroup_disable(char *str) } __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)