aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-04 12:36:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-04 12:36:54 -0400
commit6832d9652f395f7d13003e3884942c40f52ac1fa (patch)
tree40555ad5eda9700cb973dac4db136ad97f5e8b19 /init
parent228abe73ad67665d71eacd6a8a347dd76b0115ae (diff)
parentc2e7fcf53c3cb02b4ada1c66a9bc8a4d97d58aba (diff)
Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timers/nohz changes from Ingo Molnar: "It mostly contains fixes and full dynticks off-case optimizations, by Frederic Weisbecker" * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits) nohz: Include local CPU in full dynticks global kick nohz: Optimize full dynticks's sched hooks with static keys nohz: Optimize full dynticks state checks with static keys nohz: Rename a few state variables vtime: Always debug check snapshot source _before_ updating it vtime: Always scale generic vtime accounting results vtime: Optimize full dynticks accounting off case with static keys vtime: Describe overriden functions in dedicated arch headers m68k: hardirq_count() only need preempt_mask.h hardirq: Split preempt count mask definitions context_tracking: Split low level state headers vtime: Fix racy cputime delta update vtime: Remove a few unneeded generic vtime state checks context_tracking: User/kernel broundary cross trace events context_tracking: Optimize context switch off case with static keys context_tracking: Optimize guest APIs off case with static key context_tracking: Optimize main APIs off case with static key context_tracking: Ground setup for static key use context_tracking: Remove full dynticks' hacky dependency on wide context tracking nohz: Only enable context tracking on full dynticks CPUs ...
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig28
-rw-r--r--init/main.c2
2 files changed, 24 insertions, 6 deletions
diff --git a/init/Kconfig b/init/Kconfig
index cc917d3ec858..0a2c4bcf179e 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -528,13 +528,29 @@ config RCU_USER_QS
528config CONTEXT_TRACKING_FORCE 528config CONTEXT_TRACKING_FORCE
529 bool "Force context tracking" 529 bool "Force context tracking"
530 depends on CONTEXT_TRACKING 530 depends on CONTEXT_TRACKING
531 default CONTEXT_TRACKING 531 default y if !NO_HZ_FULL
532 help 532 help
533 Probe on user/kernel boundaries by default in order to 533 The major pre-requirement for full dynticks to work is to
534 test the features that rely on it such as userspace RCU extended 534 support the context tracking subsystem. But there are also
535 quiescent states. 535 other dependencies to provide in order to make the full
536 This test is there for debugging until we have a real user like the 536 dynticks working.
537 full dynticks mode. 537
538 This option stands for testing when an arch implements the
539 context tracking backend but doesn't yet fullfill all the
540 requirements to make the full dynticks feature working.
541 Without the full dynticks, there is no way to test the support
542 for context tracking and the subsystems that rely on it: RCU
543 userspace extended quiescent state and tickless cputime
544 accounting. This option copes with the absence of the full
545 dynticks subsystem by forcing the context tracking on all
546 CPUs in the system.
547
548 Say Y only if you're working on the developpement of an
549 architecture backend for the context tracking.
550
551 Say N otherwise, this option brings an overhead that you
552 don't want in production.
553
538 554
539config RCU_FANOUT 555config RCU_FANOUT
540 int "Tree-based hierarchical RCU fanout value" 556 int "Tree-based hierarchical RCU fanout value"
diff --git a/init/main.c b/init/main.c
index d03d2ec2eacf..af310afbef28 100644
--- a/init/main.c
+++ b/init/main.c
@@ -75,6 +75,7 @@
75#include <linux/blkdev.h> 75#include <linux/blkdev.h>
76#include <linux/elevator.h> 76#include <linux/elevator.h>
77#include <linux/sched_clock.h> 77#include <linux/sched_clock.h>
78#include <linux/context_tracking.h>
78 79
79#include <asm/io.h> 80#include <asm/io.h>
80#include <asm/bugs.h> 81#include <asm/bugs.h>
@@ -545,6 +546,7 @@ asmlinkage void __init start_kernel(void)
545 idr_init_cache(); 546 idr_init_cache();
546 rcu_init(); 547 rcu_init();
547 tick_nohz_init(); 548 tick_nohz_init();
549 context_tracking_init();
548 radix_tree_init(); 550 radix_tree_init();
549 /* init some links before init_ISA_irqs() */ 551 /* init some links before init_ISA_irqs() */
550 early_irq_init(); 552 early_irq_init();