aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig43
-rw-r--r--init/do_mounts_md.c22
-rw-r--r--init/do_mounts_rd.c4
-rw-r--r--init/main.c9
4 files changed, 28 insertions, 50 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 9fc0759fa942..ba42f3793a84 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -105,7 +105,6 @@ config SWAP
105 105
106config SYSVIPC 106config SYSVIPC
107 bool "System V IPC" 107 bool "System V IPC"
108 depends on MMU
109 ---help--- 108 ---help---
110 Inter Process Communication is a suite of library functions and 109 Inter Process Communication is a suite of library functions and
111 system calls which let processes (running programs) synchronize and 110 system calls which let processes (running programs) synchronize and
@@ -190,40 +189,13 @@ config AUDIT
190 189
191config AUDITSYSCALL 190config AUDITSYSCALL
192 bool "Enable system-call auditing support" 191 bool "Enable system-call auditing support"
193 depends on AUDIT && (X86 || PPC || PPC64 || ARCH_S390 || IA64 || UML || SPARC64) 192 depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64)
194 default y if SECURITY_SELINUX 193 default y if SECURITY_SELINUX
195 help 194 help
196 Enable low-overhead system-call auditing infrastructure that 195 Enable low-overhead system-call auditing infrastructure that
197 can be used independently or with another kernel subsystem, 196 can be used independently or with another kernel subsystem,
198 such as SELinux. 197 such as SELinux.
199 198
200config HOTPLUG
201 bool "Support for hot-pluggable devices" if !ARCH_S390
202 default ARCH_S390
203 help
204 This option is provided for the case where no in-kernel-tree
205 modules require HOTPLUG functionality, but a module built
206 outside the kernel tree does. Such modules require Y here.
207
208config KOBJECT_UEVENT
209 bool "Kernel Userspace Events" if EMBEDDED
210 depends on NET
211 default y
212 help
213 This option enables the kernel userspace event layer, which is a
214 simple mechanism for kernel-to-user communication over a netlink
215 socket.
216 The goal of the kernel userspace events layer is to provide a simple
217 and efficient events system, that notifies userspace about kobject
218 state changes. This will enable applications to just listen for
219 events instead of polling system devices and files.
220 Hotplug events (kobject addition and removal) are also available on
221 the netlink socket in addition to the execution of /sbin/hotplug if
222 CONFIG_HOTPLUG is enabled.
223
224 Say Y, unless you are building a system requiring minimal memory
225 consumption.
226
227config IKCONFIG 199config IKCONFIG
228 bool "Kernel .config support" 200 bool "Kernel .config support"
229 ---help--- 201 ---help---
@@ -308,6 +280,15 @@ config KALLSYMS_EXTRA_PASS
308 you wait for kallsyms to be fixed. 280 you wait for kallsyms to be fixed.
309 281
310 282
283config HOTPLUG
284 bool "Support for hot-pluggable devices" if EMBEDDED
285 default y
286 help
287 This option is provided for the case where no hotplug or uevent
288 capabilities is wanted by the kernel. You should only consider
289 disabling this option for embedded systems that do not use modules, a
290 dynamic /dev tree, or dynamic device discovery. Just say Y.
291
311config PRINTK 292config PRINTK
312 default y 293 default y
313 bool "Enable support for printk" if EMBEDDED 294 bool "Enable support for printk" if EMBEDDED
@@ -461,8 +442,8 @@ config OBSOLETE_MODPARM
461 If unsure, say Y. 442 If unsure, say Y.
462 443
463config MODVERSIONS 444config MODVERSIONS
464 bool "Module versioning support (EXPERIMENTAL)" 445 bool "Module versioning support"
465 depends on MODULES && EXPERIMENTAL 446 depends on MODULES
466 help 447 help
467 Usually, you have to use modules compiled with your kernel. 448 Usually, you have to use modules compiled with your kernel.
468 Saying Y here makes it sometimes possible to use modules 449 Saying Y here makes it sometimes possible to use modules
diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
index 3fbc3555ce96..f6f36806f84a 100644
--- a/init/do_mounts_md.c
+++ b/init/do_mounts_md.c
@@ -17,7 +17,7 @@ static int __initdata raid_noautodetect, raid_autopart;
17static struct { 17static struct {
18 int minor; 18 int minor;
19 int partitioned; 19 int partitioned;
20 int pers; 20 int level;
21 int chunk; 21 int chunk;
22 char *device_names; 22 char *device_names;
23} md_setup_args[MAX_MD_DEVS] __initdata; 23} md_setup_args[MAX_MD_DEVS] __initdata;
@@ -47,7 +47,7 @@ extern int mdp_major;
47 */ 47 */
48static int __init md_setup(char *str) 48static int __init md_setup(char *str)
49{ 49{
50 int minor, level, factor, fault, pers, partitioned = 0; 50 int minor, level, factor, fault, partitioned = 0;
51 char *pername = ""; 51 char *pername = "";
52 char *str1; 52 char *str1;
53 int ent; 53 int ent;
@@ -78,7 +78,7 @@ static int __init md_setup(char *str)
78 } 78 }
79 if (ent >= md_setup_ents) 79 if (ent >= md_setup_ents)
80 md_setup_ents++; 80 md_setup_ents++;
81 switch (get_option(&str, &level)) { /* RAID Personality */ 81 switch (get_option(&str, &level)) { /* RAID level */
82 case 2: /* could be 0 or -1.. */ 82 case 2: /* could be 0 or -1.. */
83 if (level == 0 || level == LEVEL_LINEAR) { 83 if (level == 0 || level == LEVEL_LINEAR) {
84 if (get_option(&str, &factor) != 2 || /* Chunk Size */ 84 if (get_option(&str, &factor) != 2 || /* Chunk Size */
@@ -86,16 +86,12 @@ static int __init md_setup(char *str)
86 printk(KERN_WARNING "md: Too few arguments supplied to md=.\n"); 86 printk(KERN_WARNING "md: Too few arguments supplied to md=.\n");
87 return 0; 87 return 0;
88 } 88 }
89 md_setup_args[ent].pers = level; 89 md_setup_args[ent].level = level;
90 md_setup_args[ent].chunk = 1 << (factor+12); 90 md_setup_args[ent].chunk = 1 << (factor+12);
91 if (level == LEVEL_LINEAR) { 91 if (level == LEVEL_LINEAR)
92 pers = LINEAR;
93 pername = "linear"; 92 pername = "linear";
94 } else { 93 else
95 pers = RAID0;
96 pername = "raid0"; 94 pername = "raid0";
97 }
98 md_setup_args[ent].pers = pers;
99 break; 95 break;
100 } 96 }
101 /* FALL THROUGH */ 97 /* FALL THROUGH */
@@ -103,7 +99,7 @@ static int __init md_setup(char *str)
103 str = str1; 99 str = str1;
104 /* FALL THROUGH */ 100 /* FALL THROUGH */
105 case 0: 101 case 0:
106 md_setup_args[ent].pers = 0; 102 md_setup_args[ent].level = LEVEL_NONE;
107 pername="super-block"; 103 pername="super-block";
108 } 104 }
109 105
@@ -190,10 +186,10 @@ static void __init md_setup_drive(void)
190 continue; 186 continue;
191 } 187 }
192 188
193 if (md_setup_args[ent].pers) { 189 if (md_setup_args[ent].level != LEVEL_NONE) {
194 /* non-persistent */ 190 /* non-persistent */
195 mdu_array_info_t ainfo; 191 mdu_array_info_t ainfo;
196 ainfo.level = pers_to_level(md_setup_args[ent].pers); 192 ainfo.level = md_setup_args[ent].level;
197 ainfo.size = 0; 193 ainfo.size = 0;
198 ainfo.nr_disks =0; 194 ainfo.nr_disks =0;
199 ainfo.raid_disks =0; 195 ainfo.raid_disks =0;
diff --git a/init/do_mounts_rd.c b/init/do_mounts_rd.c
index c10b08a80982..c2683fcd792d 100644
--- a/init/do_mounts_rd.c
+++ b/init/do_mounts_rd.c
@@ -145,7 +145,7 @@ int __init rd_load_image(char *from)
145 int nblocks, i, disk; 145 int nblocks, i, disk;
146 char *buf = NULL; 146 char *buf = NULL;
147 unsigned short rotate = 0; 147 unsigned short rotate = 0;
148#if !defined(CONFIG_ARCH_S390) && !defined(CONFIG_PPC_ISERIES) 148#if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
149 char rotator[4] = { '|' , '/' , '-' , '\\' }; 149 char rotator[4] = { '|' , '/' , '-' , '\\' };
150#endif 150#endif
151 151
@@ -237,7 +237,7 @@ int __init rd_load_image(char *from)
237 } 237 }
238 sys_read(in_fd, buf, BLOCK_SIZE); 238 sys_read(in_fd, buf, BLOCK_SIZE);
239 sys_write(out_fd, buf, BLOCK_SIZE); 239 sys_write(out_fd, buf, BLOCK_SIZE);
240#if !defined(CONFIG_ARCH_S390) && !defined(CONFIG_PPC_ISERIES) 240#if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
241 if (!(i % 16)) { 241 if (!(i % 16)) {
242 printk("%c\b", rotator[rotate & 0x3]); 242 printk("%c\b", rotator[rotate & 0x3]);
243 rotate++; 243 rotate++;
diff --git a/init/main.c b/init/main.c
index 27f97f9b4636..2ed3638deec7 100644
--- a/init/main.c
+++ b/init/main.c
@@ -47,12 +47,12 @@
47#include <linux/rmap.h> 47#include <linux/rmap.h>
48#include <linux/mempolicy.h> 48#include <linux/mempolicy.h>
49#include <linux/key.h> 49#include <linux/key.h>
50#include <net/sock.h>
51 50
52#include <asm/io.h> 51#include <asm/io.h>
53#include <asm/bugs.h> 52#include <asm/bugs.h>
54#include <asm/setup.h> 53#include <asm/setup.h>
55#include <asm/sections.h> 54#include <asm/sections.h>
55#include <asm/cacheflush.h>
56 56
57/* 57/*
58 * This is one of the first .c files built. Error out early 58 * This is one of the first .c files built. Error out early
@@ -100,6 +100,9 @@ extern void acpi_early_init(void);
100#else 100#else
101static inline void acpi_early_init(void) { } 101static inline void acpi_early_init(void) { }
102#endif 102#endif
103#ifndef CONFIG_DEBUG_RODATA
104static inline void mark_rodata_ro(void) { }
105#endif
103 106
104#ifdef CONFIG_TC 107#ifdef CONFIG_TC
105extern void tc_init(void); 108extern void tc_init(void);
@@ -614,9 +617,6 @@ static void __init do_basic_setup(void)
614 sysctl_init(); 617 sysctl_init();
615#endif 618#endif
616 619
617 /* Networking initialization needs a process context */
618 sock_init();
619
620 do_initcalls(); 620 do_initcalls();
621} 621}
622 622
@@ -712,6 +712,7 @@ static int init(void * unused)
712 */ 712 */
713 free_initmem(); 713 free_initmem();
714 unlock_kernel(); 714 unlock_kernel();
715 mark_rodata_ro();
715 system_state = SYSTEM_RUNNING; 716 system_state = SYSTEM_RUNNING;
716 numa_default_policy(); 717 numa_default_policy();
717 718