diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 31 | ||||
-rw-r--r-- | init/do_mounts.c | 7 | ||||
-rw-r--r-- | init/main.c | 5 |
3 files changed, 30 insertions, 13 deletions
diff --git a/init/Kconfig b/init/Kconfig index d0edf42f4d..322b1f8c21 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -143,9 +143,7 @@ config POSIX_MQUEUE | |||
143 | queues every message has a priority which decides about succession | 143 | queues every message has a priority which decides about succession |
144 | of receiving it by a process. If you want to compile and run | 144 | of receiving it by a process. If you want to compile and run |
145 | programs written e.g. for Solaris with use of its POSIX message | 145 | programs written e.g. for Solaris with use of its POSIX message |
146 | queues (functions mq_*) say Y here. To use this feature you will | 146 | queues (functions mq_*) say Y here. |
147 | also need mqueue library, available from | ||
148 | <http://www.mat.uni.torun.pl/~wrona/posix_ipc/> | ||
149 | 147 | ||
150 | POSIX message queues are visible as a filesystem called 'mqueue' | 148 | POSIX message queues are visible as a filesystem called 'mqueue' |
151 | and can be mounted somewhere if you want to do filesystem | 149 | and can be mounted somewhere if you want to do filesystem |
@@ -308,7 +306,7 @@ config SYSFS_DEPRECATED | |||
308 | releases. | 306 | releases. |
309 | 307 | ||
310 | If enabled, this option will also move any device structures | 308 | If enabled, this option will also move any device structures |
311 | that belong to a class, back into the /sys/class heirachy, in | 309 | that belong to a class, back into the /sys/class hierarchy, in |
312 | order to support older versions of udev. | 310 | order to support older versions of udev. |
313 | 311 | ||
314 | If you are using a distro that was released in 2006 or later, | 312 | If you are using a distro that was released in 2006 or later, |
@@ -504,6 +502,16 @@ config VM_EVENT_COUNTERS | |||
504 | on EMBEDDED systems. /proc/vmstat will only show page counts | 502 | on EMBEDDED systems. /proc/vmstat will only show page counts |
505 | if VM event counters are disabled. | 503 | if VM event counters are disabled. |
506 | 504 | ||
505 | config SLUB_DEBUG | ||
506 | default y | ||
507 | bool "Enable SLUB debugging support" if EMBEDDED | ||
508 | depends on SLUB | ||
509 | help | ||
510 | SLUB has extensive debug support features. Disabling these can | ||
511 | result in significant savings in code size. This also disables | ||
512 | SLUB sysfs support. /sys/slab will not exist and there will be | ||
513 | no support for cache validation etc. | ||
514 | |||
507 | choice | 515 | choice |
508 | prompt "Choose SLAB allocator" | 516 | prompt "Choose SLAB allocator" |
509 | default SLAB | 517 | default SLAB |
@@ -514,9 +522,9 @@ config SLAB | |||
514 | bool "SLAB" | 522 | bool "SLAB" |
515 | help | 523 | help |
516 | The regular slab allocator that is established and known to work | 524 | The regular slab allocator that is established and known to work |
517 | well in all environments. It organizes chache hot objects in | 525 | well in all environments. It organizes cache hot objects in |
518 | per cpu and per node queues. SLAB is the default choice for | 526 | per cpu and per node queues. SLAB is the default choice for |
519 | slab allocator. | 527 | a slab allocator. |
520 | 528 | ||
521 | config SLUB | 529 | config SLUB |
522 | depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT | 530 | depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT |
@@ -526,21 +534,20 @@ config SLUB | |||
526 | instead of managing queues of cached objects (SLAB approach). | 534 | instead of managing queues of cached objects (SLAB approach). |
527 | Per cpu caching is realized using slabs of objects instead | 535 | Per cpu caching is realized using slabs of objects instead |
528 | of queues of objects. SLUB can use memory efficiently | 536 | of queues of objects. SLUB can use memory efficiently |
529 | way and has enhanced diagnostics. | 537 | and has enhanced diagnostics. |
530 | 538 | ||
531 | config SLOB | 539 | config SLOB |
532 | # | 540 | # |
533 | # SLOB cannot support SMP because SLAB_DESTROY_BY_RCU does not work | 541 | # SLOB does not support SMP because SLAB_DESTROY_BY_RCU is unsupported |
534 | # properly. | ||
535 | # | 542 | # |
536 | depends on EMBEDDED && !SMP && !SPARSEMEM | 543 | depends on EMBEDDED && !SMP && !SPARSEMEM |
537 | bool "SLOB (Simple Allocator)" | 544 | bool "SLOB (Simple Allocator)" |
538 | help | 545 | help |
539 | SLOB replaces the SLAB allocator with a drastically simpler | 546 | SLOB replaces the SLAB allocator with a drastically simpler |
540 | allocator. SLOB is more space efficient that SLAB but does not | 547 | allocator. SLOB is more space efficient that SLAB but does not |
541 | scale well (single lock for all operations) and is more susceptible | 548 | scale well (single lock for all operations) and is also highly |
542 | to fragmentation. SLOB it is a great choice to reduce | 549 | susceptible to fragmentation. SLUB can accomplish a higher object |
543 | memory usage and code size for embedded systems. | 550 | density. It is usually better to use SLUB instead of SLOB. |
544 | 551 | ||
545 | endchoice | 552 | endchoice |
546 | 553 | ||
diff --git a/init/do_mounts.c b/init/do_mounts.c index 3f57ed4599..46fe407fb0 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/root_dev.h> | 7 | #include <linux/root_dev.h> |
8 | #include <linux/security.h> | 8 | #include <linux/security.h> |
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/genhd.h> | ||
10 | #include <linux/mount.h> | 11 | #include <linux/mount.h> |
11 | #include <linux/device.h> | 12 | #include <linux/device.h> |
12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
@@ -308,17 +309,21 @@ retry: | |||
308 | /* | 309 | /* |
309 | * Allow the user to distinguish between failed sys_open | 310 | * Allow the user to distinguish between failed sys_open |
310 | * and bad superblock on root device. | 311 | * and bad superblock on root device. |
312 | * and give them a list of the available devices | ||
311 | */ | 313 | */ |
312 | #ifdef CONFIG_BLOCK | 314 | #ifdef CONFIG_BLOCK |
313 | __bdevname(ROOT_DEV, b); | 315 | __bdevname(ROOT_DEV, b); |
314 | #endif | 316 | #endif |
315 | printk("VFS: Cannot open root device \"%s\" or %s\n", | 317 | printk("VFS: Cannot open root device \"%s\" or %s\n", |
316 | root_device_name, b); | 318 | root_device_name, b); |
317 | printk("Please append a correct \"root=\" boot option\n"); | 319 | printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); |
318 | 320 | ||
321 | printk_all_partitions(); | ||
319 | panic("VFS: Unable to mount root fs on %s", b); | 322 | panic("VFS: Unable to mount root fs on %s", b); |
320 | } | 323 | } |
321 | 324 | ||
325 | printk("List of all partitions:\n"); | ||
326 | printk_all_partitions(); | ||
322 | printk("No filesystem could mount root, tried: "); | 327 | printk("No filesystem could mount root, tried: "); |
323 | for (p = fs_names; *p; p += strlen(p)+1) | 328 | for (p = fs_names; *p; p += strlen(p)+1) |
324 | printk(" %s", p); | 329 | printk(" %s", p); |
diff --git a/init/main.c b/init/main.c index c1537e0ddc..e8d080cab4 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -54,6 +54,7 @@ | |||
54 | #include <linux/lockdep.h> | 54 | #include <linux/lockdep.h> |
55 | #include <linux/pid_namespace.h> | 55 | #include <linux/pid_namespace.h> |
56 | #include <linux/device.h> | 56 | #include <linux/device.h> |
57 | #include <linux/kthread.h> | ||
57 | 58 | ||
58 | #include <asm/io.h> | 59 | #include <asm/io.h> |
59 | #include <asm/bugs.h> | 60 | #include <asm/bugs.h> |
@@ -425,8 +426,12 @@ static void __init setup_command_line(char *command_line) | |||
425 | static void noinline rest_init(void) | 426 | static void noinline rest_init(void) |
426 | __releases(kernel_lock) | 427 | __releases(kernel_lock) |
427 | { | 428 | { |
429 | int pid; | ||
430 | |||
428 | kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); | 431 | kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); |
429 | numa_default_policy(); | 432 | numa_default_policy(); |
433 | pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES); | ||
434 | kthreadd_task = find_task_by_pid(pid); | ||
430 | unlock_kernel(); | 435 | unlock_kernel(); |
431 | 436 | ||
432 | /* | 437 | /* |