diff options
| author | Phil Elwell <phil@raspberrypi.org> | 2017-11-27 17:14:54 +0000 |
|---|---|---|
| committer | William Breathitt Gray <william.gray@canonical.com> | 2020-09-21 10:10:03 -0400 |
| commit | 64e543b88ea2a013e1d8e014e7c92c53df1322ed (patch) | |
| tree | fb612f2cc46fae921bfb4e6fa78118e5e71caeda | |
| parent | 9d1f6cdf13e02142fb930383d354c2a02e08a5ac (diff) | |
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>
(cherry picked from commit 3974389a4792bc3e18a4ec0318305715f19f71e8
https://github.com/raspberrypi/linux.git rpi-5.3.y)
Signed-off-by: Hui Wang <hui.wang@canonical.com>
| -rw-r--r-- | kernel/cgroup/cgroup.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 35faf082a709..9f97b287891b 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -5720,6 +5720,8 @@ int __init cgroup_init_early(void) } static u16 cgroup_disable_mask __initdata; +static u16 cgroup_enable_mask __initdata; +static int __init cgroup_disable(char *str); /** * cgroup_init - cgroup initialization @@ -5759,6 +5761,12 @@ int __init cgroup_init(void) mutex_unlock(&cgroup_mutex); + /* Apply an implicit disable... */ + cgroup_disable("memory"); + + /* ...knowing that an explicit enable will override it. */ + cgroup_disable_mask &= ~cgroup_enable_mask; + for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = @@ -6178,6 +6186,28 @@ 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; + } + } + return 1; +} +__setup("cgroup_enable=", cgroup_enable); + void __init __weak enable_debug_cgroup(void) { } static int __init enable_cgroup_debug(char *str) |
