Messages in this thread | | | From | Yury Norov <> | Date | Tue, 5 Jan 2021 22:32:51 -0800 | Subject | Re: [PATCH RFC cpumask 2/5] cpumask: Make "all" alias global and not just RCU |
| |
Hi Paul,
On Tue, Jan 5, 2021 at 4:49 PM <paulmck@kernel.org> wrote: > > From: Paul Gortmaker <paul.gortmaker@windriver.com> > > It is probably better that we don't have subsystem specific > abbreviations or aliases for generic CPU list specifications. > > Hence we move the "all" from RCU out to lib/ so that it can be > used in any instance where CPU lists are being parsed. > > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > --- > Documentation/admin-guide/kernel-parameters.rst | 7 +++++++ > Documentation/admin-guide/kernel-parameters.txt | 4 +--- > kernel/rcu/tree_plugin.h | 13 ++++--------- > lib/cpumask.c | 6 ++++++ > 4 files changed, 18 insertions(+), 12 deletions(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.rst b/Documentation/admin-guide/kernel-parameters.rst > index 06fb1b4..cdf4e81 100644 > --- a/Documentation/admin-guide/kernel-parameters.rst > +++ b/Documentation/admin-guide/kernel-parameters.rst > @@ -68,6 +68,13 @@ For example one can add to the command line following parameter: > > where the final item represents CPUs 100,101,125,126,150,151,... > > +The following convenience aliases are also accepted and used: > + > + foo_cpus=all > + > +is equivalent to "foo_cpus=0-N" -- where "N" is the numerically last CPU on > +the system, thus avoiding looking up the value in "/sys/devices/system/cpu" > +in advance on each deployed system. > > > This document may not be entirely up to date and comprehensive. The command > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index c722ec1..0f4379b 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -4037,9 +4037,7 @@ > see CONFIG_RAS_CEC help text. > > rcu_nocbs= [KNL] > - The argument is a cpu list, as described above, > - except that the string "all" can be used to > - specify every CPU on the system. > + The argument is a cpu list, as described above. > > In kernels built with CONFIG_RCU_NOCB_CPU=y, set > the specified list of CPUs to be no-callback CPUs. > diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h > index 7e291ce..642ebd6 100644 > --- a/kernel/rcu/tree_plugin.h > +++ b/kernel/rcu/tree_plugin.h > @@ -1463,20 +1463,15 @@ static void rcu_cleanup_after_idle(void) > > /* > * Parse the boot-time rcu_nocb_mask CPU list from the kernel parameters. > - * The string after the "rcu_nocbs=" is either "all" for all CPUs, or a > - * comma-separated list of CPUs and/or CPU ranges. If an invalid list is > - * given, a warning is emitted and all CPUs are offloaded. > + * If the list is invalid, a warning is emitted and all CPUs are offloaded. > */ > static int __init rcu_nocb_setup(char *str) > { > alloc_bootmem_cpumask_var(&rcu_nocb_mask); > - if (!strcasecmp(str, "all")) > + if (cpulist_parse(str, rcu_nocb_mask)) { > + pr_warn("rcu_nocbs= bad CPU range, all CPUs set\n"); > cpumask_setall(rcu_nocb_mask); > - else > - if (cpulist_parse(str, rcu_nocb_mask)) { > - pr_warn("rcu_nocbs= bad CPU range, all CPUs set\n"); > - cpumask_setall(rcu_nocb_mask); > - } > + } > return 1; > } > __setup("rcu_nocbs=", rcu_nocb_setup); > diff --git a/lib/cpumask.c b/lib/cpumask.c > index 6e6e835..9f8ff72 100644 > --- a/lib/cpumask.c > +++ b/lib/cpumask.c > @@ -2,6 +2,7 @@ > #include <linux/slab.h> > #include <linux/kernel.h> > #include <linux/bitops.h> > +#include <linux/string.h> > #include <linux/cpumask.h> > #include <linux/export.h> > #include <linux/memblock.h> > @@ -104,6 +105,11 @@ EXPORT_SYMBOL(cpumask_next_wrap); > */ > int cpulist_parse(const char *buf, struct cpumask *dstp) > { > + if (!strcmp(buf, "all")) { > + cpumask_setall(dstp); > + return 0; > + }
I like the extensions. Can you move this chunk inside bitmap_parselist() to let other users like nodelist_parse() use it?
> return bitmap_parselist(buf, cpumask_bits(dstp), nr_cpumask_bits); > } > EXPORT_SYMBOL(cpulist_parse); > -- > 2.9.5 >
| |