diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml index 848f5ec443..40a2321860 100644 --- a/man/kernel-command-line.xml +++ b/man/kernel-command-line.xml @@ -393,6 +393,17 @@ + + systemd.cpu_affinity= + + + Overrides the CPU affinity mask for the service manager and the default for all child + processes it forks. This takes precedence over CPUAffinity=, see + systemd-system.conf5 + for details. + + + modules_load= rd.modules_load= diff --git a/src/core/main.c b/src/core/main.c index c24b696b16..b0a55f8cb8 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -475,6 +475,15 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat if (arg_default_timeout_start_usec <= 0) arg_default_timeout_start_usec = USEC_INFINITY; + } else if (proc_cmdline_key_streq(key, "systemd.cpu_affinity")) { + + if (proc_cmdline_value_missing(key, value)) + return 0; + + r = parse_cpu_set(value, &arg_cpu_affinity); + if (r < 0) + log_warning_errno(r, "Faile to parse CPU affinity mask '%s', ignoring: %m", value); + } else if (proc_cmdline_key_streq(key, "systemd.watchdog_device")) { if (proc_cmdline_value_missing(key, value))