cgroup: Add cgroup_enable option

The upstream addition of the kernel parameter cgroup_disable makes it
possible to configure cgroups at boot time. In theory, re-enabling a
disabled cgroup is simply a case of removing the relevant cgroup_disable
setting, but this is difficult if the setting comes from Device Tree.

Re-introduce cgroup_enable as a way around the problem.

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
Phil Elwell
2024-12-09 14:38:17 +00:00
committed by Dom Cobley
parent 4f4bce4c16
commit 6b56f369d9

View File

@@ -6958,6 +6958,39 @@ static int __init cgroup_disable(char *str)
} }
__setup("cgroup_disable=", cgroup_disable); __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;
static_branch_enable(cgroup_subsys_enabled_key[i]);
pr_info("Enabling %s control group subsystem\n",
ss->name);
}
for (i = 0; i < OPT_FEATURE_COUNT; i++) {
if (strcmp(token, cgroup_opt_feature_names[i]))
continue;
cgroup_feature_disable_mask &= ~(1 << i);
pr_info("Enabling %s control group feature\n",
cgroup_opt_feature_names[i]);
break;
}
}
return 1;
}
__setup("cgroup_enable=", cgroup_enable);
void __init __weak enable_debug_cgroup(void) { } void __init __weak enable_debug_cgroup(void) { }
static int __init enable_cgroup_debug(char *str) static int __init enable_cgroup_debug(char *str)