aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig31
-rw-r--r--init/do_mounts.c7
-rw-r--r--init/main.c5
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
505config 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
507choice 515choice
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
521config SLUB 529config 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
531config SLOB 539config 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
545endchoice 552endchoice
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)
425static void noinline rest_init(void) 426static 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 /*