diff options
author | Jiri Kosina <jkosina@suse.cz> | 2011-02-15 04:24:31 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-02-15 04:24:31 -0500 |
commit | 0a9d59a2461477bd9ed143c01af9df3f8f00fa81 (patch) | |
tree | df997d1cfb0786427a0df1fbd6f0640fa4248cf4 /init | |
parent | a23ce6da9677d245aa0aadc99f4197030350ab54 (diff) | |
parent | 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 (diff) |
Merge branch 'master' into for-next
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 75 | ||||
-rw-r--r-- | init/calibrate.c | 6 | ||||
-rw-r--r-- | init/main.c | 13 |
3 files changed, 48 insertions, 46 deletions
diff --git a/init/Kconfig b/init/Kconfig index cb0b2051bbb..3da09dab537 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -515,21 +515,6 @@ config RCU_BOOST_DELAY | |||
515 | 515 | ||
516 | Accept the default if unsure. | 516 | Accept the default if unsure. |
517 | 517 | ||
518 | config SRCU_SYNCHRONIZE_DELAY | ||
519 | int "Microseconds to delay before waiting for readers" | ||
520 | range 0 20 | ||
521 | default 10 | ||
522 | help | ||
523 | This option controls how long SRCU delays before entering its | ||
524 | loop waiting on SRCU readers. The purpose of this loop is | ||
525 | to avoid the unconditional context-switch penalty that would | ||
526 | otherwise be incurred if there was an active SRCU reader, | ||
527 | in a manner similar to adaptive locking schemes. This should | ||
528 | be set to be a bit longer than the common-case SRCU read-side | ||
529 | critical-section overhead. | ||
530 | |||
531 | Accept the default if unsure. | ||
532 | |||
533 | endmenu # "RCU Subsystem" | 518 | endmenu # "RCU Subsystem" |
534 | 519 | ||
535 | config IKCONFIG | 520 | config IKCONFIG |
@@ -760,8 +745,8 @@ config DEBUG_BLK_CGROUP | |||
760 | endif # CGROUPS | 745 | endif # CGROUPS |
761 | 746 | ||
762 | menuconfig NAMESPACES | 747 | menuconfig NAMESPACES |
763 | bool "Namespaces support" if EMBEDDED | 748 | bool "Namespaces support" if EXPERT |
764 | default !EMBEDDED | 749 | default !EXPERT |
765 | help | 750 | help |
766 | Provides the way to make tasks work with different objects using | 751 | Provides the way to make tasks work with different objects using |
767 | the same id. For example same IPC id may refer to different objects | 752 | the same id. For example same IPC id may refer to different objects |
@@ -914,23 +899,31 @@ config SYSCTL | |||
914 | config ANON_INODES | 899 | config ANON_INODES |
915 | bool | 900 | bool |
916 | 901 | ||
917 | menuconfig EMBEDDED | 902 | menuconfig EXPERT |
918 | bool "Configure standard kernel features (for small systems)" | 903 | bool "Configure standard kernel features (expert users)" |
919 | help | 904 | help |
920 | This option allows certain base kernel options and settings | 905 | This option allows certain base kernel options and settings |
921 | to be disabled or tweaked. This is for specialized | 906 | to be disabled or tweaked. This is for specialized |
922 | environments which can tolerate a "non-standard" kernel. | 907 | environments which can tolerate a "non-standard" kernel. |
923 | Only use this if you really know what you are doing. | 908 | Only use this if you really know what you are doing. |
924 | 909 | ||
910 | config EMBEDDED | ||
911 | bool "Embedded system" | ||
912 | select EXPERT | ||
913 | help | ||
914 | This option should be enabled if compiling the kernel for | ||
915 | an embedded system so certain expert options are available | ||
916 | for configuration. | ||
917 | |||
925 | config UID16 | 918 | config UID16 |
926 | bool "Enable 16-bit UID system calls" if EMBEDDED | 919 | bool "Enable 16-bit UID system calls" if EXPERT |
927 | depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) | 920 | depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) |
928 | default y | 921 | default y |
929 | help | 922 | help |
930 | This enables the legacy 16-bit UID syscall wrappers. | 923 | This enables the legacy 16-bit UID syscall wrappers. |
931 | 924 | ||
932 | config SYSCTL_SYSCALL | 925 | config SYSCTL_SYSCALL |
933 | bool "Sysctl syscall support" if EMBEDDED | 926 | bool "Sysctl syscall support" if EXPERT |
934 | depends on PROC_SYSCTL | 927 | depends on PROC_SYSCTL |
935 | default y | 928 | default y |
936 | select SYSCTL | 929 | select SYSCTL |
@@ -947,7 +940,7 @@ config SYSCTL_SYSCALL | |||
947 | If unsure say Y here. | 940 | If unsure say Y here. |
948 | 941 | ||
949 | config KALLSYMS | 942 | config KALLSYMS |
950 | bool "Load all symbols for debugging/ksymoops" if EMBEDDED | 943 | bool "Load all symbols for debugging/ksymoops" if EXPERT |
951 | default y | 944 | default y |
952 | help | 945 | help |
953 | Say Y here to let the kernel print out symbolic crash information and | 946 | Say Y here to let the kernel print out symbolic crash information and |
@@ -978,7 +971,7 @@ config KALLSYMS_EXTRA_PASS | |||
978 | 971 | ||
979 | 972 | ||
980 | config HOTPLUG | 973 | config HOTPLUG |
981 | bool "Support for hot-pluggable devices" if EMBEDDED | 974 | bool "Support for hot-pluggable devices" if EXPERT |
982 | default y | 975 | default y |
983 | help | 976 | help |
984 | This option is provided for the case where no hotplug or uevent | 977 | This option is provided for the case where no hotplug or uevent |
@@ -988,7 +981,7 @@ config HOTPLUG | |||
988 | 981 | ||
989 | config PRINTK | 982 | config PRINTK |
990 | default y | 983 | default y |
991 | bool "Enable support for printk" if EMBEDDED | 984 | bool "Enable support for printk" if EXPERT |
992 | help | 985 | help |
993 | This option enables normal printk support. Removing it | 986 | This option enables normal printk support. Removing it |
994 | eliminates most of the message strings from the kernel image | 987 | eliminates most of the message strings from the kernel image |
@@ -997,7 +990,7 @@ config PRINTK | |||
997 | strongly discouraged. | 990 | strongly discouraged. |
998 | 991 | ||
999 | config BUG | 992 | config BUG |
1000 | bool "BUG() support" if EMBEDDED | 993 | bool "BUG() support" if EXPERT |
1001 | default y | 994 | default y |
1002 | help | 995 | help |
1003 | Disabling this option eliminates support for BUG and WARN, reducing | 996 | Disabling this option eliminates support for BUG and WARN, reducing |
@@ -1008,12 +1001,12 @@ config BUG | |||
1008 | 1001 | ||
1009 | config ELF_CORE | 1002 | config ELF_CORE |
1010 | default y | 1003 | default y |
1011 | bool "Enable ELF core dumps" if EMBEDDED | 1004 | bool "Enable ELF core dumps" if EXPERT |
1012 | help | 1005 | help |
1013 | Enable support for generating core dumps. Disabling saves about 4k. | 1006 | Enable support for generating core dumps. Disabling saves about 4k. |
1014 | 1007 | ||
1015 | config PCSPKR_PLATFORM | 1008 | config PCSPKR_PLATFORM |
1016 | bool "Enable PC-Speaker support" if EMBEDDED | 1009 | bool "Enable PC-Speaker support" if EXPERT |
1017 | depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES | 1010 | depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES |
1018 | default y | 1011 | default y |
1019 | help | 1012 | help |
@@ -1022,14 +1015,14 @@ config PCSPKR_PLATFORM | |||
1022 | 1015 | ||
1023 | config BASE_FULL | 1016 | config BASE_FULL |
1024 | default y | 1017 | default y |
1025 | bool "Enable full-sized data structures for core" if EMBEDDED | 1018 | bool "Enable full-sized data structures for core" if EXPERT |
1026 | help | 1019 | help |
1027 | Disabling this option reduces the size of miscellaneous core | 1020 | Disabling this option reduces the size of miscellaneous core |
1028 | kernel data structures. This saves memory on small machines, | 1021 | kernel data structures. This saves memory on small machines, |
1029 | but may reduce performance. | 1022 | but may reduce performance. |
1030 | 1023 | ||
1031 | config FUTEX | 1024 | config FUTEX |
1032 | bool "Enable futex support" if EMBEDDED | 1025 | bool "Enable futex support" if EXPERT |
1033 | default y | 1026 | default y |
1034 | select RT_MUTEXES | 1027 | select RT_MUTEXES |
1035 | help | 1028 | help |
@@ -1038,7 +1031,7 @@ config FUTEX | |||
1038 | run glibc-based applications correctly. | 1031 | run glibc-based applications correctly. |
1039 | 1032 | ||
1040 | config EPOLL | 1033 | config EPOLL |
1041 | bool "Enable eventpoll support" if EMBEDDED | 1034 | bool "Enable eventpoll support" if EXPERT |
1042 | default y | 1035 | default y |
1043 | select ANON_INODES | 1036 | select ANON_INODES |
1044 | help | 1037 | help |
@@ -1046,7 +1039,7 @@ config EPOLL | |||
1046 | support for epoll family of system calls. | 1039 | support for epoll family of system calls. |
1047 | 1040 | ||
1048 | config SIGNALFD | 1041 | config SIGNALFD |
1049 | bool "Enable signalfd() system call" if EMBEDDED | 1042 | bool "Enable signalfd() system call" if EXPERT |
1050 | select ANON_INODES | 1043 | select ANON_INODES |
1051 | default y | 1044 | default y |
1052 | help | 1045 | help |
@@ -1056,7 +1049,7 @@ config SIGNALFD | |||
1056 | If unsure, say Y. | 1049 | If unsure, say Y. |
1057 | 1050 | ||
1058 | config TIMERFD | 1051 | config TIMERFD |
1059 | bool "Enable timerfd() system call" if EMBEDDED | 1052 | bool "Enable timerfd() system call" if EXPERT |
1060 | select ANON_INODES | 1053 | select ANON_INODES |
1061 | default y | 1054 | default y |
1062 | help | 1055 | help |
@@ -1066,7 +1059,7 @@ config TIMERFD | |||
1066 | If unsure, say Y. | 1059 | If unsure, say Y. |
1067 | 1060 | ||
1068 | config EVENTFD | 1061 | config EVENTFD |
1069 | bool "Enable eventfd() system call" if EMBEDDED | 1062 | bool "Enable eventfd() system call" if EXPERT |
1070 | select ANON_INODES | 1063 | select ANON_INODES |
1071 | default y | 1064 | default y |
1072 | help | 1065 | help |
@@ -1076,7 +1069,7 @@ config EVENTFD | |||
1076 | If unsure, say Y. | 1069 | If unsure, say Y. |
1077 | 1070 | ||
1078 | config SHMEM | 1071 | config SHMEM |
1079 | bool "Use full shmem filesystem" if EMBEDDED | 1072 | bool "Use full shmem filesystem" if EXPERT |
1080 | default y | 1073 | default y |
1081 | depends on MMU | 1074 | depends on MMU |
1082 | help | 1075 | help |
@@ -1087,7 +1080,7 @@ config SHMEM | |||
1087 | which may be appropriate on small systems without swap. | 1080 | which may be appropriate on small systems without swap. |
1088 | 1081 | ||
1089 | config AIO | 1082 | config AIO |
1090 | bool "Enable AIO support" if EMBEDDED | 1083 | bool "Enable AIO support" if EXPERT |
1091 | default y | 1084 | default y |
1092 | help | 1085 | help |
1093 | This option enables POSIX asynchronous I/O which may by used | 1086 | This option enables POSIX asynchronous I/O which may by used |
@@ -1164,16 +1157,16 @@ endmenu | |||
1164 | 1157 | ||
1165 | config VM_EVENT_COUNTERS | 1158 | config VM_EVENT_COUNTERS |
1166 | default y | 1159 | default y |
1167 | bool "Enable VM event counters for /proc/vmstat" if EMBEDDED | 1160 | bool "Enable VM event counters for /proc/vmstat" if EXPERT |
1168 | help | 1161 | help |
1169 | VM event counters are needed for event counts to be shown. | 1162 | VM event counters are needed for event counts to be shown. |
1170 | This option allows the disabling of the VM event counters | 1163 | This option allows the disabling of the VM event counters |
1171 | on EMBEDDED systems. /proc/vmstat will only show page counts | 1164 | on EXPERT systems. /proc/vmstat will only show page counts |
1172 | if VM event counters are disabled. | 1165 | if VM event counters are disabled. |
1173 | 1166 | ||
1174 | config PCI_QUIRKS | 1167 | config PCI_QUIRKS |
1175 | default y | 1168 | default y |
1176 | bool "Enable PCI quirk workarounds" if EMBEDDED | 1169 | bool "Enable PCI quirk workarounds" if EXPERT |
1177 | depends on PCI | 1170 | depends on PCI |
1178 | help | 1171 | help |
1179 | This enables workarounds for various PCI chipset | 1172 | This enables workarounds for various PCI chipset |
@@ -1182,7 +1175,7 @@ config PCI_QUIRKS | |||
1182 | 1175 | ||
1183 | config SLUB_DEBUG | 1176 | config SLUB_DEBUG |
1184 | default y | 1177 | default y |
1185 | bool "Enable SLUB debugging support" if EMBEDDED | 1178 | bool "Enable SLUB debugging support" if EXPERT |
1186 | depends on SLUB && SYSFS | 1179 | depends on SLUB && SYSFS |
1187 | help | 1180 | help |
1188 | SLUB has extensive debug support features. Disabling these can | 1181 | SLUB has extensive debug support features. Disabling these can |
@@ -1226,7 +1219,7 @@ config SLUB | |||
1226 | a slab allocator. | 1219 | a slab allocator. |
1227 | 1220 | ||
1228 | config SLOB | 1221 | config SLOB |
1229 | depends on EMBEDDED | 1222 | depends on EXPERT |
1230 | bool "SLOB (Simple Allocator)" | 1223 | bool "SLOB (Simple Allocator)" |
1231 | help | 1224 | help |
1232 | SLOB replaces the stock allocator with a drastically simpler | 1225 | SLOB replaces the stock allocator with a drastically simpler |
@@ -1237,7 +1230,7 @@ endchoice | |||
1237 | 1230 | ||
1238 | config MMAP_ALLOW_UNINITIALIZED | 1231 | config MMAP_ALLOW_UNINITIALIZED |
1239 | bool "Allow mmapped anonymous memory to be uninitialized" | 1232 | bool "Allow mmapped anonymous memory to be uninitialized" |
1240 | depends on EMBEDDED && !MMU | 1233 | depends on EXPERT && !MMU |
1241 | default n | 1234 | default n |
1242 | help | 1235 | help |
1243 | Normally, and according to the Linux spec, anonymous memory obtained | 1236 | Normally, and according to the Linux spec, anonymous memory obtained |
diff --git a/init/calibrate.c b/init/calibrate.c index 6eb48e53d61..24fe022c55f 100644 --- a/init/calibrate.c +++ b/init/calibrate.c | |||
@@ -66,7 +66,7 @@ static unsigned long __cpuinit calibrate_delay_direct(void) | |||
66 | pre_start = 0; | 66 | pre_start = 0; |
67 | read_current_timer(&start); | 67 | read_current_timer(&start); |
68 | start_jiffies = jiffies; | 68 | start_jiffies = jiffies; |
69 | while (jiffies <= (start_jiffies + 1)) { | 69 | while (time_before_eq(jiffies, start_jiffies + 1)) { |
70 | pre_start = start; | 70 | pre_start = start; |
71 | read_current_timer(&start); | 71 | read_current_timer(&start); |
72 | } | 72 | } |
@@ -74,8 +74,8 @@ static unsigned long __cpuinit calibrate_delay_direct(void) | |||
74 | 74 | ||
75 | pre_end = 0; | 75 | pre_end = 0; |
76 | end = post_start; | 76 | end = post_start; |
77 | while (jiffies <= | 77 | while (time_before_eq(jiffies, start_jiffies + 1 + |
78 | (start_jiffies + 1 + DELAY_CALIBRATION_TICKS)) { | 78 | DELAY_CALIBRATION_TICKS)) { |
79 | pre_end = end; | 79 | pre_end = end; |
80 | read_current_timer(&end); | 80 | read_current_timer(&end); |
81 | } | 81 | } |
diff --git a/init/main.c b/init/main.c index 00799c1d462..33c37c379e9 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -96,6 +96,15 @@ static inline void mark_rodata_ro(void) { } | |||
96 | extern void tc_init(void); | 96 | extern void tc_init(void); |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | /* | ||
100 | * Debug helper: via this flag we know that we are in 'early bootup code' | ||
101 | * where only the boot processor is running with IRQ disabled. This means | ||
102 | * two things - IRQ must not be enabled before the flag is cleared and some | ||
103 | * operations which are not allowed with IRQ disabled are allowed while the | ||
104 | * flag is set. | ||
105 | */ | ||
106 | bool early_boot_irqs_disabled __read_mostly; | ||
107 | |||
99 | enum system_states system_state __read_mostly; | 108 | enum system_states system_state __read_mostly; |
100 | EXPORT_SYMBOL(system_state); | 109 | EXPORT_SYMBOL(system_state); |
101 | 110 | ||
@@ -554,7 +563,7 @@ asmlinkage void __init start_kernel(void) | |||
554 | cgroup_init_early(); | 563 | cgroup_init_early(); |
555 | 564 | ||
556 | local_irq_disable(); | 565 | local_irq_disable(); |
557 | early_boot_irqs_off(); | 566 | early_boot_irqs_disabled = true; |
558 | 567 | ||
559 | /* | 568 | /* |
560 | * Interrupts are still disabled. Do necessary setups, then | 569 | * Interrupts are still disabled. Do necessary setups, then |
@@ -621,7 +630,7 @@ asmlinkage void __init start_kernel(void) | |||
621 | if (!irqs_disabled()) | 630 | if (!irqs_disabled()) |
622 | printk(KERN_CRIT "start_kernel(): bug: interrupts were " | 631 | printk(KERN_CRIT "start_kernel(): bug: interrupts were " |
623 | "enabled early\n"); | 632 | "enabled early\n"); |
624 | early_boot_irqs_on(); | 633 | early_boot_irqs_disabled = false; |
625 | local_irq_enable(); | 634 | local_irq_enable(); |
626 | 635 | ||
627 | /* Interrupts are enabled now so all GFP allocations are safe. */ | 636 | /* Interrupts are enabled now so all GFP allocations are safe. */ |