diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-04 12:36:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-04 12:36:54 -0400 |
commit | 6832d9652f395f7d13003e3884942c40f52ac1fa (patch) | |
tree | 40555ad5eda9700cb973dac4db136ad97f5e8b19 /init | |
parent | 228abe73ad67665d71eacd6a8a347dd76b0115ae (diff) | |
parent | c2e7fcf53c3cb02b4ada1c66a9bc8a4d97d58aba (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/Kconfig | 28 | ||||
-rw-r--r-- | init/main.c | 2 |
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 | |||
528 | config CONTEXT_TRACKING_FORCE | 528 | config 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 | ||
539 | config RCU_FANOUT | 555 | config 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(); |