diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-02 19:13:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-02 19:13:29 -0400 |
commit | ab3d681e9d41816f90836ea8fe235168d973207f (patch) | |
tree | c5210911fcb6023f4956a302ee1d4ce3a405aa0f /init | |
parent | 0c46d68d1930c8a58d0f291328b9759da754e599 (diff) | |
parent | b1fe9987b78755719e8627d58409174ba00c24de (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 major changes:
- Simplify RCU's grace-period and callback processing based on the new
numbering for callbacks.
- Removal of TINY_PREEMPT_RCU in favor of TREE_PREEMPT_RCU for
single-CPU low-latency systems.
- SRCU-related changes and fixes.
- Miscellaneous fixes, including converting a few remaining printk()
calls to pr_*().
- Documentation updates"
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (32 commits)
rcu: Shrink TINY_RCU by reworking CPU-stall ifdefs
rcu: Shrink TINY_RCU by moving exit_rcu()
rcu: Remove TINY_PREEMPT_RCU tracing documentation
rcu: Consolidate rcutiny_plugin.h ifdefs
rcu: Remove rcu_preempt_note_context_switch()
rcu: Remove the CONFIG_TINY_RCU ifdefs in rcutiny.h
rcu: Remove check_cpu_stall_preempt()
rcu: Simplify RCU_TINY RCU callback invocation
rcu: Remove rcu_preempt_process_callbacks()
rcu: Remove rcu_preempt_remove_callbacks()
rcu: Remove rcu_preempt_check_callbacks()
rcu: Remove show_tiny_preempt_stats()
rcu: Remove TINY_PREEMPT_RCU
powerpc,kvm: fix imbalance srcu_read_[un]lock()
rcu: Remove srcu_read_lock_raw() and srcu_read_unlock_raw().
rcu: Apply Dave Jones's NOCB Kconfig help feedback
rcu: Merge adjacent identical ifdefs
rcu: Drive quiescent-state-forcing delay from HZ
rcu: Remove "Experimental" flags
kthread: Add kworker kthreads to OS-jitter documentation
...
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/init/Kconfig b/init/Kconfig index 1e825c299ea5..118895cc1f67 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -473,18 +473,10 @@ config TINY_RCU | |||
473 | is not required. This option greatly reduces the | 473 | is not required. This option greatly reduces the |
474 | memory footprint of RCU. | 474 | memory footprint of RCU. |
475 | 475 | ||
476 | config TINY_PREEMPT_RCU | ||
477 | bool "Preemptible UP-only small-memory-footprint RCU" | ||
478 | depends on PREEMPT && !SMP | ||
479 | help | ||
480 | This option selects the RCU implementation that is designed | ||
481 | for real-time UP systems. This option greatly reduces the | ||
482 | memory footprint of RCU. | ||
483 | |||
484 | endchoice | 476 | endchoice |
485 | 477 | ||
486 | config PREEMPT_RCU | 478 | config PREEMPT_RCU |
487 | def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU ) | 479 | def_bool TREE_PREEMPT_RCU |
488 | help | 480 | help |
489 | This option enables preemptible-RCU code that is common between | 481 | This option enables preemptible-RCU code that is common between |
490 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. | 482 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. |
@@ -670,7 +662,7 @@ config RCU_BOOST_DELAY | |||
670 | Accept the default if unsure. | 662 | Accept the default if unsure. |
671 | 663 | ||
672 | config RCU_NOCB_CPU | 664 | config RCU_NOCB_CPU |
673 | bool "Offload RCU callback processing from boot-selected CPUs (EXPERIMENTAL" | 665 | bool "Offload RCU callback processing from boot-selected CPUs" |
674 | depends on TREE_RCU || TREE_PREEMPT_RCU | 666 | depends on TREE_RCU || TREE_PREEMPT_RCU |
675 | default n | 667 | default n |
676 | help | 668 | help |
@@ -696,9 +688,10 @@ choice | |||
696 | prompt "Build-forced no-CBs CPUs" | 688 | prompt "Build-forced no-CBs CPUs" |
697 | default RCU_NOCB_CPU_NONE | 689 | default RCU_NOCB_CPU_NONE |
698 | help | 690 | help |
699 | This option allows no-CBs CPUs to be specified at build time. | 691 | This option allows no-CBs CPUs (whose RCU callbacks are invoked |
700 | Additional no-CBs CPUs may be specified by the rcu_nocbs= | 692 | from kthreads rather than from softirq context) to be specified |
701 | boot parameter. | 693 | at build time. Additional no-CBs CPUs may be specified by |
694 | the rcu_nocbs= boot parameter. | ||
702 | 695 | ||
703 | config RCU_NOCB_CPU_NONE | 696 | config RCU_NOCB_CPU_NONE |
704 | bool "No build_forced no-CBs CPUs" | 697 | bool "No build_forced no-CBs CPUs" |
@@ -706,25 +699,40 @@ config RCU_NOCB_CPU_NONE | |||
706 | help | 699 | help |
707 | This option does not force any of the CPUs to be no-CBs CPUs. | 700 | This option does not force any of the CPUs to be no-CBs CPUs. |
708 | Only CPUs designated by the rcu_nocbs= boot parameter will be | 701 | Only CPUs designated by the rcu_nocbs= boot parameter will be |
709 | no-CBs CPUs. | 702 | no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU |
703 | kthreads whose names begin with "rcuo". All other CPUs will | ||
704 | invoke their own RCU callbacks in softirq context. | ||
705 | |||
706 | Select this option if you want to choose no-CBs CPUs at | ||
707 | boot time, for example, to allow testing of different no-CBs | ||
708 | configurations without having to rebuild the kernel each time. | ||
710 | 709 | ||
711 | config RCU_NOCB_CPU_ZERO | 710 | config RCU_NOCB_CPU_ZERO |
712 | bool "CPU 0 is a build_forced no-CBs CPU" | 711 | bool "CPU 0 is a build_forced no-CBs CPU" |
713 | depends on RCU_NOCB_CPU && !NO_HZ_FULL | 712 | depends on RCU_NOCB_CPU && !NO_HZ_FULL |
714 | help | 713 | help |
715 | This option forces CPU 0 to be a no-CBs CPU. Additional CPUs | 714 | This option forces CPU 0 to be a no-CBs CPU, so that its RCU |
716 | may be designated as no-CBs CPUs using the rcu_nocbs= boot | 715 | callbacks are invoked by a per-CPU kthread whose name begins |
717 | parameter will be no-CBs CPUs. | 716 | with "rcuo". Additional CPUs may be designated as no-CBs |
717 | CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs. | ||
718 | All other CPUs will invoke their own RCU callbacks in softirq | ||
719 | context. | ||
718 | 720 | ||
719 | Select this if CPU 0 needs to be a no-CBs CPU for real-time | 721 | Select this if CPU 0 needs to be a no-CBs CPU for real-time |
720 | or energy-efficiency reasons. | 722 | or energy-efficiency reasons, but the real reason it exists |
723 | is to ensure that randconfig testing covers mixed systems. | ||
721 | 724 | ||
722 | config RCU_NOCB_CPU_ALL | 725 | config RCU_NOCB_CPU_ALL |
723 | bool "All CPUs are build_forced no-CBs CPUs" | 726 | bool "All CPUs are build_forced no-CBs CPUs" |
724 | depends on RCU_NOCB_CPU | 727 | depends on RCU_NOCB_CPU |
725 | help | 728 | help |
726 | This option forces all CPUs to be no-CBs CPUs. The rcu_nocbs= | 729 | This option forces all CPUs to be no-CBs CPUs. The rcu_nocbs= |
727 | boot parameter will be ignored. | 730 | boot parameter will be ignored. All CPUs' RCU callbacks will |
731 | be executed in the context of per-CPU rcuo kthreads created for | ||
732 | this purpose. Assuming that the kthreads whose names start with | ||
733 | "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter | ||
734 | on the remaining CPUs, but might decrease memory locality during | ||
735 | RCU-callback invocation, thus potentially degrading throughput. | ||
728 | 736 | ||
729 | Select this if all CPUs need to be no-CBs CPUs for real-time | 737 | Select this if all CPUs need to be no-CBs CPUs for real-time |
730 | or energy-efficiency reasons. | 738 | or energy-efficiency reasons. |