aboutsummaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig49
-rw-r--r--init/Makefile1
-rw-r--r--init/do_mounts_initrd.c1
-rw-r--r--init/initramfs.c10
-rw-r--r--init/main.c26
-rw-r--r--init/version.c4
6 files changed, 65 insertions, 26 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 10382931eea..9edf103b3ec 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1,5 +1,6 @@
config DEFCONFIG_LIST
string
+ depends on !UML
option defconfig_list
default "/lib/modules/$UNAME_RELEASE/.config"
default "/etc/kernel-config"
@@ -248,6 +249,26 @@ config CPUSETS
Say N if unsure.
+config SYSFS_DEPRECATED
+ bool "Create deprecated sysfs files"
+ default y
+ help
+ This option creates deprecated symlinks such as the
+ "device"-link, the <subsystem>:<name>-link, and the
+ "bus"-link. It may also add deprecated key in the
+ uevent environment.
+ None of these features or values should be used today, as
+ they export driver core implementation details to userspace
+ or export properties which can't be kept stable across kernel
+ releases.
+
+ If enabled, this option will also move any device structures
+ that belong to a class, back into the /sys/class heirachy, in
+ order to support older versions of udev.
+
+ If you are using a distro that was released in 2006 or later,
+ it should be safe to say N here.
+
config RELAY
bool "Kernel->user space relay support (formerly relayfs)"
help
@@ -283,6 +304,15 @@ config TASK_XACCT
Say N if unsure.
+config TASK_IO_ACCOUNTING
+ bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
+ depends on TASK_XACCT
+ help
+ Collect information on the number of bytes of storage I/O which this
+ task has caused.
+
+ Say N if unsure.
+
config SYSCTL
bool
@@ -303,20 +333,19 @@ config UID16
config SYSCTL_SYSCALL
bool "Sysctl syscall support" if EMBEDDED
- default n
+ default y
select SYSCTL
---help---
- Enable the deprecated sysctl system call. sys_sysctl uses
- binary paths that have been found to be a major pain to maintain
- and use. The interface in /proc/sys is now the primary and what
- everyone uses.
+ sys_sysctl uses binary paths that have been found challenging
+ to properly maintain and use. The interface in /proc/sys
+ using paths with ascii names is now the primary path to this
+ information.
- Nothing has been using the binary sysctl interface for some
- time now so nothing should break if you disable sysctl syscall
- support, and your kernel will get marginally smaller.
+ Almost nothing using the binary sysctl interface so if you are
+ trying to save some space it is probably safe to disable this,
+ making your kernel marginally smaller.
- Unless you have an application that uses the sys_sysctl interface
- you should probably say N here.
+ If unsure say Y here.
config KALLSYMS
bool "Load all symbols for debugging/kksymoops" if EMBEDDED
diff --git a/init/Makefile b/init/Makefile
index 633a268d270..d6c764d0eab 100644
--- a/init/Makefile
+++ b/init/Makefile
@@ -15,6 +15,7 @@ clean-files := ../include/linux/compile.h
# dependencies on generated files need to be listed explicitly
+$(obj)/main.o: include/linux/compile.h
$(obj)/version.o: include/linux/compile.h
# compile.h changes depending on hostname, generation number, etc,
diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c
index 919a80cb322..2cfd7cb36e7 100644
--- a/init/do_mounts_initrd.c
+++ b/init/do_mounts_initrd.c
@@ -6,6 +6,7 @@
#include <linux/romfs_fs.h>
#include <linux/initrd.h>
#include <linux/sched.h>
+#include <linux/freezer.h>
#include "do_mounts.h"
diff --git a/init/initramfs.c b/init/initramfs.c
index d28c1094d7e..4fa0f7977de 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -182,6 +182,10 @@ static int __init do_collect(void)
static int __init do_header(void)
{
+ if (memcmp(collected, "070707", 6)==0) {
+ error("incorrect cpio method used: use -H newc option");
+ return 1;
+ }
if (memcmp(collected, "070701", 6)) {
error("no cpio magic");
return 1;
@@ -522,7 +526,7 @@ static void __init free_initrd(void)
#endif
-void __init populate_rootfs(void)
+static int __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start,
__initramfs_end - __initramfs_start, 0);
@@ -540,7 +544,7 @@ void __init populate_rootfs(void)
unpack_to_rootfs((char *)initrd_start,
initrd_end - initrd_start, 0);
free_initrd();
- return;
+ return 0;
}
printk("it isn't (%s); looks like an initrd\n", err);
fd = sys_open("/initrd.image", O_WRONLY|O_CREAT, 0700);
@@ -561,4 +565,6 @@ void __init populate_rootfs(void)
#endif
}
#endif
+ return 0;
}
+rootfs_initcall(populate_rootfs);
diff --git a/init/main.c b/init/main.c
index ee123243fb5..e3f0bb20b4d 100644
--- a/init/main.c
+++ b/init/main.c
@@ -29,6 +29,7 @@
#include <linux/percpu.h>
#include <linux/kmod.h>
#include <linux/kernel_stat.h>
+#include <linux/start_kernel.h>
#include <linux/security.h>
#include <linux/workqueue.h>
#include <linux/profile.h>
@@ -49,6 +50,9 @@
#include <linux/buffer_head.h>
#include <linux/debug_locks.h>
#include <linux/lockdep.h>
+#include <linux/utsrelease.h>
+#include <linux/pid_namespace.h>
+#include <linux/compile.h>
#include <asm/io.h>
#include <asm/bugs.h>
@@ -73,6 +77,10 @@
#error Sorry, your GCC is too old. It builds incorrect kernels.
#endif
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0
+#warning gcc-4.1.0 is known to miscompile the kernel. A different compiler version is recommended.
+#endif
+
static int init(void *);
extern void init_IRQ(void);
@@ -86,7 +94,6 @@ extern void pidmap_init(void);
extern void prio_tree_init(void);
extern void radix_tree_init(void);
extern void free_initmem(void);
-extern void populate_rootfs(void);
extern void driver_init(void);
extern void prepare_namespace(void);
#ifdef CONFIG_ACPI
@@ -475,6 +482,12 @@ void __init __attribute__((weak)) smp_setup_processor_id(void)
{
}
+static const char linux_banner[] =
+ "Linux version " UTS_RELEASE
+ " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
+ " (" LINUX_COMPILER ")"
+ " " UTS_VERSION "\n";
+
asmlinkage void __init start_kernel(void)
{
char * command_line;
@@ -503,6 +516,7 @@ asmlinkage void __init start_kernel(void)
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
+ unwind_setup();
setup_per_cpu_areas();
smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
@@ -618,8 +632,6 @@ static int __init initcall_debug_setup(char *str)
}
__setup("initcall_debug", initcall_debug_setup);
-struct task_struct *child_reaper = &init_task;
-
extern initcall_t __initcall_start[], __initcall_end[];
static void __init do_initcalls(void)
@@ -719,7 +731,7 @@ static int init(void * unused)
* assumptions about where in the task array this
* can be found.
*/
- child_reaper = current;
+ init_pid_ns.child_reaper = current;
cad_pid = task_pid(current);
@@ -732,12 +744,6 @@ static int init(void * unused)
cpuset_init_smp();
- /*
- * Do this before initcalls, because some drivers want to access
- * firmware files.
- */
- populate_rootfs();
-
do_basic_setup();
/*
diff --git a/init/version.c b/init/version.c
index 8f28344d9c7..9d96d36501c 100644
--- a/init/version.c
+++ b/init/version.c
@@ -33,7 +33,3 @@ struct uts_namespace init_uts_ns = {
},
};
EXPORT_SYMBOL_GPL(init_uts_ns);
-
-const char linux_banner[] =
- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";