diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2012-11-27 13:33:25 -0500 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-11-30 14:40:07 -0500 |
commit | 91d1aa43d30505b0b825db8898ffc80a8eca96c7 (patch) | |
tree | 911636f846d800c8a44efd540842dc726ec7c191 /init/Kconfig | |
parent | 4e79752c25ec221ac1e28f8875b539ed7631a0db (diff) |
context_tracking: New context tracking susbsystem
Create a new subsystem that probes on kernel boundaries
to keep track of the transitions between level contexts
with two basic initial contexts: user or kernel.
This is an abstraction of some RCU code that use such tracking
to implement its userspace extended quiescent state.
We need to pull this up from RCU into this new level of indirection
because this tracking is also going to be used to implement an "on
demand" generic virtual cputime accounting. A necessary step to
shutdown the tick while still accounting the cputime.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Gilad Ben-Yossef <gilad@benyossef.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
[ paulmck: fix whitespace error and email address. ]
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'init/Kconfig')
-rw-r--r-- | init/Kconfig | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/init/Kconfig b/init/Kconfig index 5ac6ee094225..2054e048bb98 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -486,9 +486,13 @@ config PREEMPT_RCU | |||
486 | This option enables preemptible-RCU code that is common between | 486 | This option enables preemptible-RCU code that is common between |
487 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. | 487 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. |
488 | 488 | ||
489 | config CONTEXT_TRACKING | ||
490 | bool | ||
491 | |||
489 | config RCU_USER_QS | 492 | config RCU_USER_QS |
490 | bool "Consider userspace as in RCU extended quiescent state" | 493 | bool "Consider userspace as in RCU extended quiescent state" |
491 | depends on HAVE_RCU_USER_QS && SMP | 494 | depends on HAVE_CONTEXT_TRACKING && SMP |
495 | select CONTEXT_TRACKING | ||
492 | help | 496 | help |
493 | This option sets hooks on kernel / userspace boundaries and | 497 | This option sets hooks on kernel / userspace boundaries and |
494 | puts RCU in extended quiescent state when the CPU runs in | 498 | puts RCU in extended quiescent state when the CPU runs in |
@@ -497,24 +501,20 @@ config RCU_USER_QS | |||
497 | try to keep the timer tick on for RCU. | 501 | try to keep the timer tick on for RCU. |
498 | 502 | ||
499 | Unless you want to hack and help the development of the full | 503 | Unless you want to hack and help the development of the full |
500 | tickless feature, you shouldn't enable this option. It also | 504 | dynticks mode, you shouldn't enable this option. It also |
501 | adds unnecessary overhead. | 505 | adds unnecessary overhead. |
502 | 506 | ||
503 | If unsure say N | 507 | If unsure say N |
504 | 508 | ||
505 | config RCU_USER_QS_FORCE | 509 | config CONTEXT_TRACKING_FORCE |
506 | bool "Force userspace extended QS by default" | 510 | bool "Force context tracking" |
507 | depends on RCU_USER_QS | 511 | depends on CONTEXT_TRACKING |
508 | help | 512 | help |
509 | Set the hooks in user/kernel boundaries by default in order to | 513 | Probe on user/kernel boundaries by default in order to |
510 | test this feature that treats userspace as an extended quiescent | 514 | test the features that rely on it such as userspace RCU extended |
511 | state until we have a real user like a full adaptive nohz option. | 515 | quiescent states. |
512 | 516 | This test is there for debugging until we have a real user like the | |
513 | Unless you want to hack and help the development of the full | 517 | full dynticks mode. |
514 | tickless feature, you shouldn't enable this option. It adds | ||
515 | unnecessary overhead. | ||
516 | |||
517 | If unsure say N | ||
518 | 518 | ||
519 | config RCU_FANOUT | 519 | config RCU_FANOUT |
520 | int "Tree-based hierarchical RCU fanout value" | 520 | int "Tree-based hierarchical RCU fanout value" |