aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig38
-rw-r--r--init/main.c3
2 files changed, 33 insertions, 8 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 950ba26f7233..bd125a795374 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -21,6 +21,13 @@ config CONSTRUCTORS
21 depends on !UML 21 depends on !UML
22 default y 22 default y
23 23
24config HAVE_IRQ_WORK
25 bool
26
27config IRQ_WORK
28 bool
29 depends on HAVE_IRQ_WORK
30
24menu "General setup" 31menu "General setup"
25 32
26config EXPERIMENTAL 33config EXPERIMENTAL
@@ -64,7 +71,7 @@ config BROKEN_ON_SMP
64 71
65config LOCK_KERNEL 72config LOCK_KERNEL
66 bool 73 bool
67 depends on SMP || PREEMPT 74 depends on (SMP || PREEMPT) && BKL
68 default y 75 default y
69 76
70config INIT_ENV_ARG_LIMIT 77config INIT_ENV_ARG_LIMIT
@@ -332,6 +339,8 @@ config AUDIT_TREE
332 depends on AUDITSYSCALL 339 depends on AUDITSYSCALL
333 select FSNOTIFY 340 select FSNOTIFY
334 341
342source "kernel/irq/Kconfig"
343
335menu "RCU Subsystem" 344menu "RCU Subsystem"
336 345
337choice 346choice
@@ -340,6 +349,7 @@ choice
340 349
341config TREE_RCU 350config TREE_RCU
342 bool "Tree-based hierarchical RCU" 351 bool "Tree-based hierarchical RCU"
352 depends on !PREEMPT && SMP
343 help 353 help
344 This option selects the RCU implementation that is 354 This option selects the RCU implementation that is
345 designed for very large SMP system with hundreds or 355 designed for very large SMP system with hundreds or
@@ -347,7 +357,7 @@ config TREE_RCU
347 smaller systems. 357 smaller systems.
348 358
349config TREE_PREEMPT_RCU 359config TREE_PREEMPT_RCU
350 bool "Preemptable tree-based hierarchical RCU" 360 bool "Preemptible tree-based hierarchical RCU"
351 depends on PREEMPT 361 depends on PREEMPT
352 help 362 help
353 This option selects the RCU implementation that is 363 This option selects the RCU implementation that is
@@ -365,8 +375,22 @@ config TINY_RCU
365 is not required. This option greatly reduces the 375 is not required. This option greatly reduces the
366 memory footprint of RCU. 376 memory footprint of RCU.
367 377
378config TINY_PREEMPT_RCU
379 bool "Preemptible UP-only small-memory-footprint RCU"
380 depends on !SMP && PREEMPT
381 help
382 This option selects the RCU implementation that is designed
383 for real-time UP systems. This option greatly reduces the
384 memory footprint of RCU.
385
368endchoice 386endchoice
369 387
388config PREEMPT_RCU
389 def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
390 help
391 This option enables preemptible-RCU code that is common between
392 the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
393
370config RCU_TRACE 394config RCU_TRACE
371 bool "Enable tracing for RCU" 395 bool "Enable tracing for RCU"
372 depends on TREE_RCU || TREE_PREEMPT_RCU 396 depends on TREE_RCU || TREE_PREEMPT_RCU
@@ -387,9 +411,12 @@ config RCU_FANOUT
387 help 411 help
388 This option controls the fanout of hierarchical implementations 412 This option controls the fanout of hierarchical implementations
389 of RCU, allowing RCU to work efficiently on machines with 413 of RCU, allowing RCU to work efficiently on machines with
390 large numbers of CPUs. This value must be at least the cube 414 large numbers of CPUs. This value must be at least the fourth
391 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit 415 root of NR_CPUS, which allows NR_CPUS to be insanely large.
392 systems and up to 262,144 for 64-bit systems. 416 The default value of RCU_FANOUT should be used for production
417 systems, but if you are stress-testing the RCU implementation
418 itself, small RCU_FANOUT values allow you to test large-system
419 code paths on small(er) systems.
393 420
394 Select a specific number if testing RCU itself. 421 Select a specific number if testing RCU itself.
395 Take the default if unsure. 422 Take the default if unsure.
@@ -990,6 +1017,7 @@ config PERF_EVENTS
990 default y if (PROFILING || PERF_COUNTERS) 1017 default y if (PROFILING || PERF_COUNTERS)
991 depends on HAVE_PERF_EVENTS 1018 depends on HAVE_PERF_EVENTS
992 select ANON_INODES 1019 select ANON_INODES
1020 select IRQ_WORK
993 help 1021 help
994 Enable kernel support for various performance events provided 1022 Enable kernel support for various performance events provided
995 by software and hardware. 1023 by software and hardware.
diff --git a/init/main.c b/init/main.c
index 94ab488039aa..e59af24a0b7c 100644
--- a/init/main.c
+++ b/init/main.c
@@ -424,7 +424,6 @@ static void __init setup_command_line(char *command_line)
424static __initdata DECLARE_COMPLETION(kthreadd_done); 424static __initdata DECLARE_COMPLETION(kthreadd_done);
425 425
426static noinline void __init_refok rest_init(void) 426static noinline void __init_refok rest_init(void)
427 __releases(kernel_lock)
428{ 427{
429 int pid; 428 int pid;
430 429
@@ -556,7 +555,6 @@ asmlinkage void __init start_kernel(void)
556 555
557 local_irq_disable(); 556 local_irq_disable();
558 early_boot_irqs_off(); 557 early_boot_irqs_off();
559 early_init_irq_lock_class();
560 558
561/* 559/*
562 * Interrupts are still disabled. Do necessary setups, then 560 * Interrupts are still disabled. Do necessary setups, then
@@ -819,7 +817,6 @@ static void run_init_process(const char *init_filename)
819 * makes it inline to init() and it becomes part of init.text section 817 * makes it inline to init() and it becomes part of init.text section
820 */ 818 */
821static noinline int init_post(void) 819static noinline int init_post(void)
822 __releases(kernel_lock)
823{ 820{
824 /* need to finish all async __init code before freeing the memory */ 821 /* need to finish all async __init code before freeing the memory */
825 async_synchronize_full(); 822 async_synchronize_full();