diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-10 12:50:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-10 13:30:46 -0400 |
commit | de4d195308ad589626571dbe5789cebf9695a204 (patch) | |
tree | 77a6bd6946594ea4e7513aaa73009295530960a1 /init | |
parent | dc9edaab90de9441cc28ac570b23b0d2bdba7879 (diff) | |
parent | 20652ed6e44f4963281b65209b917be86ac6765b (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/Kconfig | 43 |
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 | ||
522 | config SRCU | 522 | config 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 | ||
530 | config 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 | |||
547 | config 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 | |||
553 | config 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 | |||
529 | config TASKS_RCU | 559 | config 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 | ||
576 | config RCU_NEED_SEGCBLIST | ||
577 | def_bool ( TREE_RCU || PREEMPT_RCU || TINY_SRCU || TREE_SRCU ) | ||
578 | |||
546 | config CONTEXT_TRACKING | 579 | config 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 | ||