diff options
| -rw-r--r-- | kernel/rcu/tree.c | 9 | ||||
| -rw-r--r-- | kernel/rcu/tree_plugin.h | 31 |
2 files changed, 34 insertions, 6 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index b01a02e7a0b7..ac8dce15fd74 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -536,9 +536,12 @@ void rcu_all_qs(void) | |||
| 536 | } | 536 | } |
| 537 | EXPORT_SYMBOL_GPL(rcu_all_qs); | 537 | EXPORT_SYMBOL_GPL(rcu_all_qs); |
| 538 | 538 | ||
| 539 | static long blimit = 10; /* Maximum callbacks per rcu_do_batch. */ | 539 | #define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch. */ |
| 540 | static long qhimark = 10000; /* If this many pending, ignore blimit. */ | 540 | static long blimit = DEFAULT_RCU_BLIMIT; |
| 541 | static long qlowmark = 100; /* Once only this many pending, use blimit. */ | 541 | #define DEFAULT_RCU_QHIMARK 10000 /* If this many pending, ignore blimit. */ |
| 542 | static long qhimark = DEFAULT_RCU_QHIMARK; | ||
| 543 | #define DEFAULT_RCU_QLOMARK 100 /* Once only this many pending, use blimit. */ | ||
| 544 | static long qlowmark = DEFAULT_RCU_QLOMARK; | ||
| 542 | 545 | ||
| 543 | module_param(blimit, long, 0444); | 546 | module_param(blimit, long, 0444); |
| 544 | module_param(qhimark, long, 0444); | 547 | module_param(qhimark, long, 0444); |
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index eb5ebdce25ff..9cb3dff78b6f 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h | |||
| @@ -79,7 +79,9 @@ static void __init rcu_bootup_announce_oddness(void) | |||
| 79 | pr_info("\tHierarchical RCU autobalancing is disabled.\n"); | 79 | pr_info("\tHierarchical RCU autobalancing is disabled.\n"); |
| 80 | if (IS_ENABLED(CONFIG_RCU_FAST_NO_HZ)) | 80 | if (IS_ENABLED(CONFIG_RCU_FAST_NO_HZ)) |
| 81 | pr_info("\tRCU dyntick-idle grace-period acceleration is enabled.\n"); | 81 | pr_info("\tRCU dyntick-idle grace-period acceleration is enabled.\n"); |
| 82 | if (IS_ENABLED(CONFIG_PROVE_RCU)) | 82 | if (IS_ENABLED(CONFIG_PROVE_RCU_REPEATEDLY)) |
| 83 | pr_info("\tRCU lockdep checking is permanently enabled.\n"); | ||
| 84 | else if (IS_ENABLED(CONFIG_PROVE_RCU)) | ||
| 83 | pr_info("\tRCU lockdep checking is enabled.\n"); | 85 | pr_info("\tRCU lockdep checking is enabled.\n"); |
| 84 | if (RCU_NUM_LVLS >= 4) | 86 | if (RCU_NUM_LVLS >= 4) |
| 85 | pr_info("\tFour(or more)-level hierarchy is enabled.\n"); | 87 | pr_info("\tFour(or more)-level hierarchy is enabled.\n"); |
| @@ -90,8 +92,31 @@ static void __init rcu_bootup_announce_oddness(void) | |||
| 90 | pr_info("\tBoot-time adjustment of leaf fanout to %d.\n", rcu_fanout_leaf); | 92 | pr_info("\tBoot-time adjustment of leaf fanout to %d.\n", rcu_fanout_leaf); |
| 91 | if (nr_cpu_ids != NR_CPUS) | 93 | if (nr_cpu_ids != NR_CPUS) |
| 92 | pr_info("\tRCU restricting CPUs from NR_CPUS=%d to nr_cpu_ids=%d.\n", NR_CPUS, nr_cpu_ids); | 94 | pr_info("\tRCU restricting CPUs from NR_CPUS=%d to nr_cpu_ids=%d.\n", NR_CPUS, nr_cpu_ids); |
| 93 | if (IS_ENABLED(CONFIG_RCU_BOOST)) | 95 | #ifdef CONFIG_RCU_BOOST |
| 94 | pr_info("\tRCU kthread priority: %d.\n", kthread_prio); | 96 | pr_info("\tRCU priority boosting: priority %d delay %d ms.\n", kthread_prio, CONFIG_RCU_BOOST_DELAY); |
| 97 | #endif | ||
| 98 | if (blimit != DEFAULT_RCU_BLIMIT) | ||
| 99 | pr_info("\tBoot-time adjustment of callback invocation limit to %ld.\n", blimit); | ||
| 100 | if (qhimark != DEFAULT_RCU_QHIMARK) | ||
| 101 | pr_info("\tBoot-time adjustment of callback high-water mark to %ld.\n", qhimark); | ||
| 102 | if (qlowmark != DEFAULT_RCU_QLOMARK) | ||
| 103 | pr_info("\tBoot-time adjustment of callback low-water mark to %ld.\n", qlowmark); | ||
| 104 | if (jiffies_till_first_fqs != ULONG_MAX) | ||
| 105 | pr_info("\tBoot-time adjustment of first FQS scan delay to %ld jiffies.\n", jiffies_till_first_fqs); | ||
| 106 | if (jiffies_till_next_fqs != ULONG_MAX) | ||
| 107 | pr_info("\tBoot-time adjustment of subsequent FQS scan delay to %ld jiffies.\n", jiffies_till_next_fqs); | ||
| 108 | if (rcu_kick_kthreads) | ||
| 109 | pr_info("\tKick kthreads if too-long grace period.\n"); | ||
| 110 | if (IS_ENABLED(CONFIG_DEBUG_OBJECTS_RCU_HEAD)) | ||
| 111 | pr_info("\tRCU callback double-/use-after-free debug enabled.\n"); | ||
| 112 | if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT)) | ||
| 113 | pr_info("\tRCU debug GP pre-init slowdown %d jiffies.\n", gp_preinit_delay); | ||
| 114 | if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_INIT)) | ||
| 115 | pr_info("\tRCU debug GP init slowdown %d jiffies.\n", gp_init_delay); | ||
| 116 | if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP)) | ||
| 117 | pr_info("\tRCU debug GP init slowdown %d jiffies.\n", gp_cleanup_delay); | ||
| 118 | if (IS_ENABLED(CONFIG_RCU_EQS_DEBUG)) | ||
| 119 | pr_info("\tRCU debug extended QS entry/exit.\n"); | ||
| 95 | rcupdate_announce_bootup_oddness(); | 120 | rcupdate_announce_bootup_oddness(); |
| 96 | } | 121 | } |
| 97 | 122 | ||
