summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-05-10 12:50:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-05-10 13:30:46 -0400
commitde4d195308ad589626571dbe5789cebf9695a204 (patch)
tree77a6bd6946594ea4e7513aaa73009295530960a1 /init
parentdc9edaab90de9441cc28ac570b23b0d2bdba7879 (diff)
parent20652ed6e44f4963281b65209b917be86ac6765b (diff)
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RCU updates from Ingo Molnar: "The main changes are: - Debloat RCU headers - Parallelize SRCU callback handling (plus overlapping patches) - Improve the performance of Tree SRCU on a CPU-hotplug stress test - Documentation updates - Miscellaneous fixes" * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (74 commits) rcu: Open-code the rcu_cblist_n_lazy_cbs() function rcu: Open-code the rcu_cblist_n_cbs() function rcu: Open-code the rcu_cblist_empty() function rcu: Separately compile large rcu_segcblist functions srcu: Debloat the <linux/rcu_segcblist.h> header srcu: Adjust default auto-expediting holdoff srcu: Specify auto-expedite holdoff time srcu: Expedite first synchronize_srcu() when idle srcu: Expedited grace periods with reduced memory contention srcu: Make rcutorture writer stalls print SRCU GP state srcu: Exact tracking of srcu_data structures containing callbacks srcu: Make SRCU be built by default srcu: Fix Kconfig botch when SRCU not selected rcu: Make non-preemptive schedule be Tasks RCU quiescent state srcu: Expedite srcu_schedule_cbs_snp() callback invocation srcu: Parallelize callback handling kvm: Move srcu_struct fields to end of struct kvm rcu: Fix typo in PER_RCU_NODE_PERIOD header comment rcu: Use true/false in assignment to bool rcu: Use bool value directly ...
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig43
1 files changed, 41 insertions, 2 deletions
diff --git a/init/Kconfig b/init/Kconfig
index a92f27da4a27..1d3475fc9496 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -521,11 +521,41 @@ config RCU_EXPERT
521 521
522config SRCU 522config SRCU
523 bool 523 bool
524 default y
524 help 525 help
525 This option selects the sleepable version of RCU. This version 526 This option selects the sleepable version of RCU. This version
526 permits arbitrary sleeping or blocking within RCU read-side critical 527 permits arbitrary sleeping or blocking within RCU read-side critical
527 sections. 528 sections.
528 529
530config CLASSIC_SRCU
531 bool "Use v4.11 classic SRCU implementation"
532 default n
533 depends on RCU_EXPERT && SRCU
534 help
535 This option selects the traditional well-tested classic SRCU
536 implementation from v4.11, as might be desired for enterprise
537 Linux distributions. Without this option, the shiny new
538 Tiny SRCU and Tree SRCU implementations are used instead.
539 At some point, it is hoped that Tiny SRCU and Tree SRCU
540 will accumulate enough test time and confidence to allow
541 Classic SRCU to be dropped entirely.
542
543 Say Y if you need a rock-solid SRCU.
544
545 Say N if you would like help test Tree SRCU.
546
547config TINY_SRCU
548 bool
549 default y if SRCU && TINY_RCU && !CLASSIC_SRCU
550 help
551 This option selects the single-CPU non-preemptible version of SRCU.
552
553config TREE_SRCU
554 bool
555 default y if SRCU && !TINY_RCU && !CLASSIC_SRCU
556 help
557 This option selects the full-fledged version of SRCU.
558
529config TASKS_RCU 559config TASKS_RCU
530 bool 560 bool
531 default n 561 default n
@@ -543,6 +573,9 @@ config RCU_STALL_COMMON
543 the tiny variants to disable RCU CPU stall warnings, while 573 the tiny variants to disable RCU CPU stall warnings, while
544 making these warnings mandatory for the tree variants. 574 making these warnings mandatory for the tree variants.
545 575
576config RCU_NEED_SEGCBLIST
577 def_bool ( TREE_RCU || PREEMPT_RCU || TINY_SRCU || TREE_SRCU )
578
546config CONTEXT_TRACKING 579config CONTEXT_TRACKING
547 bool 580 bool
548 581
@@ -612,11 +645,17 @@ config RCU_FANOUT_LEAF
612 initialization. These systems tend to run CPU-bound, and thus 645 initialization. These systems tend to run CPU-bound, and thus
613 are not helped by synchronized interrupts, and thus tend to 646 are not helped by synchronized interrupts, and thus tend to
614 skew them, which reduces lock contention enough that large 647 skew them, which reduces lock contention enough that large
615 leaf-level fanouts work well. 648 leaf-level fanouts work well. That said, setting leaf-level
649 fanout to a large number will likely cause problematic
650 lock contention on the leaf-level rcu_node structures unless
651 you boot with the skew_tick kernel parameter.
616 652
617 Select a specific number if testing RCU itself. 653 Select a specific number if testing RCU itself.
618 654
619 Select the maximum permissible value for large systems. 655 Select the maximum permissible value for large systems, but
656 please understand that you may also need to set the skew_tick
657 kernel boot parameter to avoid contention on the rcu_node
658 structure's locks.
620 659
621 Take the default if unsure. 660 Take the default if unsure.
622 661