diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0639-cgroup-Disable-cgroup-memory-by-default.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.10/950-0639-cgroup-Disable-cgroup-memory-by-default.patch | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0639-cgroup-Disable-cgroup-memory-by-default.patch b/target/linux/bcm27xx/patches-5.10/950-0639-cgroup-Disable-cgroup-memory-by-default.patch new file mode 100644 index 0000000000..9eddc3eb0a --- /dev/null +++ b/target/linux/bcm27xx/patches-5.10/950-0639-cgroup-Disable-cgroup-memory-by-default.patch @@ -0,0 +1,85 @@ +From 2b13c54592135b6fab269517ed687fa9f80bf8e5 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 +@@ -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 *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); +@@ -6249,6 +6262,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) |