Re: [PATCH 1/2] rcu: Create a function to handle rcu_nocb_mask boot time setup

From: Paul E. McKenney
Date: Thu Jul 24 2014 - 14:20:38 EST


On Wed, Jul 23, 2014 at 03:40:09PM -0400, Pranith Kumar wrote:
> This commit creates a function rcu_bootup_announce_oddnes_nocb(), which handles
> allocation of rcu_nocb_mask and setting it according to the kernel configuration
> parameters.
>
> Signed-off-by: Pranith Kumar <bobby.prani@xxxxxxxxx>

Looks good, but needs a bit of help. The function name needs to be spelled
correctly in the commit log (missing an "s"), and please see below.

Please fix these issues and resend the patch.

Thanx, Paul

> ---
> kernel/rcu/tree_plugin.h | 62 ++++++++++++++++++++++++++++--------------------
> 1 file changed, 36 insertions(+), 26 deletions(-)
>
> diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
> index c31eb28..730208a 100644
> --- a/kernel/rcu/tree_plugin.h
> +++ b/kernel/rcu/tree_plugin.h
> @@ -47,6 +47,40 @@ static char __initdata nocb_buf[NR_CPUS * 5];
> #endif /* #ifdef CONFIG_RCU_NOCB_CPU */
>
> /*
> + * This is a helper for rcu_bootup_announce_oddness(), which takes care of
> + * setting up rcu_nocb_mask for nocb specific kernel configuration parameters
> + */
> +static void __init rcu_bootup_announce_oddness_nocb(void)
> +{
> +#ifndef CONFIG_RCU_NOCB_CPU_NONE
> + if (!have_rcu_nocb_mask) {
> + zalloc_cpumask_var(&rcu_nocb_mask, GFP_KERNEL);
> + have_rcu_nocb_mask = true;
> + }
> +#ifdef CONFIG_RCU_NOCB_CPU_ZERO
> + pr_info("\tOffload RCU callbacks from CPU 0\n");
> + cpumask_set_cpu(0, rcu_nocb_mask);
> +#endif /* #ifdef CONFIG_RCU_NOCB_CPU_ZERO */
> +#ifdef CONFIG_RCU_NOCB_CPU_ALL
> + pr_info("\tOffload RCU callbacks from all CPUs\n");
> + cpumask_copy(rcu_nocb_mask, cpu_possible_mask);
> +#endif /* #ifdef CONFIG_RCU_NOCB_CPU_ALL */
> +#endif /* #ifndef CONFIG_RCU_NOCB_CPU_NONE */
> + if (have_rcu_nocb_mask) {
> + if (!cpumask_subset(rcu_nocb_mask, cpu_possible_mask)) {
> + pr_info("\tNote: kernel parameter 'rcu_nocbs=' contains"
> + "nonexistent CPUs.\n");

Long strings are an exception to the 80-character rule. This string
needs to be on one line. The scripts/checkpatch.pl script should have yelled
at you about this.

> + cpumask_and(rcu_nocb_mask, cpu_possible_mask,
> + rcu_nocb_mask);
> + }
> + cpulist_scnprintf(nocb_buf, sizeof(nocb_buf), rcu_nocb_mask);
> + pr_info("\tOffload RCU callbacks from CPUs: %s.\n", nocb_buf);
> + if (rcu_nocb_poll)
> + pr_info("\tPoll for callbacks from no-CBs CPUs.\n");
> + }
> +}
> +
> +/*
> * Check the RCU kernel configuration parameters and print informative
> * messages about anything out of the ordinary. If you like #ifdef, you
> * will love this function.
> @@ -86,32 +120,8 @@ static void __init rcu_bootup_announce_oddness(void)
> if (nr_cpu_ids != NR_CPUS)
> pr_info("\tRCU restricting CPUs from NR_CPUS=%d to nr_cpu_ids=%d.\n", NR_CPUS, nr_cpu_ids);
> #ifdef CONFIG_RCU_NOCB_CPU
> -#ifndef CONFIG_RCU_NOCB_CPU_NONE
> - if (!have_rcu_nocb_mask) {
> - zalloc_cpumask_var(&rcu_nocb_mask, GFP_KERNEL);
> - have_rcu_nocb_mask = true;
> - }
> -#ifdef CONFIG_RCU_NOCB_CPU_ZERO
> - pr_info("\tOffload RCU callbacks from CPU 0\n");
> - cpumask_set_cpu(0, rcu_nocb_mask);
> -#endif /* #ifdef CONFIG_RCU_NOCB_CPU_ZERO */
> -#ifdef CONFIG_RCU_NOCB_CPU_ALL
> - pr_info("\tOffload RCU callbacks from all CPUs\n");
> - cpumask_copy(rcu_nocb_mask, cpu_possible_mask);
> -#endif /* #ifdef CONFIG_RCU_NOCB_CPU_ALL */
> -#endif /* #ifndef CONFIG_RCU_NOCB_CPU_NONE */
> - if (have_rcu_nocb_mask) {
> - if (!cpumask_subset(rcu_nocb_mask, cpu_possible_mask)) {
> - pr_info("\tNote: kernel parameter 'rcu_nocbs=' contains nonexistent CPUs.\n");
> - cpumask_and(rcu_nocb_mask, cpu_possible_mask,
> - rcu_nocb_mask);
> - }
> - cpulist_scnprintf(nocb_buf, sizeof(nocb_buf), rcu_nocb_mask);
> - pr_info("\tOffload RCU callbacks from CPUs: %s.\n", nocb_buf);
> - if (rcu_nocb_poll)
> - pr_info("\tPoll for callbacks from no-CBs CPUs.\n");
> - }
> -#endif /* #ifdef CONFIG_RCU_NOCB_CPU */
> + rcu_bootup_announce_oddness_nocb();
> +#endif
> }
>
> #ifdef CONFIG_TREE_PREEMPT_RCU
> --
> 2.0.1
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/