|
@@ -96,10 +96,15 @@ static void __init rcu_bootup_announce_oddness(void)
|
|
|
#endif /* #ifdef CONFIG_RCU_NOCB_CPU_ZERO */
|
|
|
#ifdef CONFIG_RCU_NOCB_CPU_ALL
|
|
|
pr_info("\tOffload RCU callbacks from all CPUs\n");
|
|
|
- cpumask_setall(rcu_nocb_mask);
|
|
|
+ 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)
|