diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 113 | ||||
-rw-r--r-- | init/do_mounts.c | 6 | ||||
-rw-r--r-- | init/main.c | 39 | ||||
-rw-r--r-- | init/version.c | 5 |
4 files changed, 76 insertions, 87 deletions
diff --git a/init/Kconfig b/init/Kconfig index 2081a4d3d917..f5dbc6d4261b 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -470,17 +470,15 @@ choice | |||
470 | config TREE_RCU | 470 | config TREE_RCU |
471 | bool "Tree-based hierarchical RCU" | 471 | bool "Tree-based hierarchical RCU" |
472 | depends on !PREEMPT && SMP | 472 | depends on !PREEMPT && SMP |
473 | select IRQ_WORK | ||
474 | help | 473 | help |
475 | This option selects the RCU implementation that is | 474 | This option selects the RCU implementation that is |
476 | designed for very large SMP system with hundreds or | 475 | designed for very large SMP system with hundreds or |
477 | thousands of CPUs. It also scales down nicely to | 476 | thousands of CPUs. It also scales down nicely to |
478 | smaller systems. | 477 | smaller systems. |
479 | 478 | ||
480 | config TREE_PREEMPT_RCU | 479 | config PREEMPT_RCU |
481 | bool "Preemptible tree-based hierarchical RCU" | 480 | bool "Preemptible tree-based hierarchical RCU" |
482 | depends on PREEMPT | 481 | depends on PREEMPT |
483 | select IRQ_WORK | ||
484 | help | 482 | help |
485 | This option selects the RCU implementation that is | 483 | This option selects the RCU implementation that is |
486 | designed for very large SMP systems with hundreds or | 484 | designed for very large SMP systems with hundreds or |
@@ -501,15 +499,17 @@ config TINY_RCU | |||
501 | 499 | ||
502 | endchoice | 500 | endchoice |
503 | 501 | ||
504 | config PREEMPT_RCU | 502 | config SRCU |
505 | def_bool TREE_PREEMPT_RCU | 503 | bool |
506 | help | 504 | help |
507 | This option enables preemptible-RCU code that is common between | 505 | This option selects the sleepable version of RCU. This version |
508 | TREE_PREEMPT_RCU and, in the old days, TINY_PREEMPT_RCU. | 506 | permits arbitrary sleeping or blocking within RCU read-side critical |
507 | sections. | ||
509 | 508 | ||
510 | config TASKS_RCU | 509 | config TASKS_RCU |
511 | bool "Task_based RCU implementation using voluntary context switch" | 510 | bool "Task_based RCU implementation using voluntary context switch" |
512 | default n | 511 | default n |
512 | select SRCU | ||
513 | help | 513 | help |
514 | This option enables a task-based RCU implementation that uses | 514 | This option enables a task-based RCU implementation that uses |
515 | only voluntary context switch (not preemption!), idle, and | 515 | only voluntary context switch (not preemption!), idle, and |
@@ -518,7 +518,7 @@ config TASKS_RCU | |||
518 | If unsure, say N. | 518 | If unsure, say N. |
519 | 519 | ||
520 | config RCU_STALL_COMMON | 520 | config RCU_STALL_COMMON |
521 | def_bool ( TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE ) | 521 | def_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE ) |
522 | help | 522 | help |
523 | This option enables RCU CPU stall code that is common between | 523 | This option enables RCU CPU stall code that is common between |
524 | the TINY and TREE variants of RCU. The purpose is to allow | 524 | the TINY and TREE variants of RCU. The purpose is to allow |
@@ -576,7 +576,7 @@ config RCU_FANOUT | |||
576 | int "Tree-based hierarchical RCU fanout value" | 576 | int "Tree-based hierarchical RCU fanout value" |
577 | range 2 64 if 64BIT | 577 | range 2 64 if 64BIT |
578 | range 2 32 if !64BIT | 578 | range 2 32 if !64BIT |
579 | depends on TREE_RCU || TREE_PREEMPT_RCU | 579 | depends on TREE_RCU || PREEMPT_RCU |
580 | default 64 if 64BIT | 580 | default 64 if 64BIT |
581 | default 32 if !64BIT | 581 | default 32 if !64BIT |
582 | help | 582 | help |
@@ -596,7 +596,7 @@ config RCU_FANOUT_LEAF | |||
596 | int "Tree-based hierarchical RCU leaf-level fanout value" | 596 | int "Tree-based hierarchical RCU leaf-level fanout value" |
597 | range 2 RCU_FANOUT if 64BIT | 597 | range 2 RCU_FANOUT if 64BIT |
598 | range 2 RCU_FANOUT if !64BIT | 598 | range 2 RCU_FANOUT if !64BIT |
599 | depends on TREE_RCU || TREE_PREEMPT_RCU | 599 | depends on TREE_RCU || PREEMPT_RCU |
600 | default 16 | 600 | default 16 |
601 | help | 601 | help |
602 | This option controls the leaf-level fanout of hierarchical | 602 | This option controls the leaf-level fanout of hierarchical |
@@ -621,7 +621,7 @@ config RCU_FANOUT_LEAF | |||
621 | 621 | ||
622 | config RCU_FANOUT_EXACT | 622 | config RCU_FANOUT_EXACT |
623 | bool "Disable tree-based hierarchical RCU auto-balancing" | 623 | bool "Disable tree-based hierarchical RCU auto-balancing" |
624 | depends on TREE_RCU || TREE_PREEMPT_RCU | 624 | depends on TREE_RCU || PREEMPT_RCU |
625 | default n | 625 | default n |
626 | help | 626 | help |
627 | This option forces use of the exact RCU_FANOUT value specified, | 627 | This option forces use of the exact RCU_FANOUT value specified, |
@@ -652,11 +652,11 @@ config RCU_FAST_NO_HZ | |||
652 | Say N if you are unsure. | 652 | Say N if you are unsure. |
653 | 653 | ||
654 | config TREE_RCU_TRACE | 654 | config TREE_RCU_TRACE |
655 | def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU ) | 655 | def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU ) |
656 | select DEBUG_FS | 656 | select DEBUG_FS |
657 | help | 657 | help |
658 | This option provides tracing for the TREE_RCU and | 658 | This option provides tracing for the TREE_RCU and |
659 | TREE_PREEMPT_RCU implementations, permitting Makefile to | 659 | PREEMPT_RCU implementations, permitting Makefile to |
660 | trivially select kernel/rcutree_trace.c. | 660 | trivially select kernel/rcutree_trace.c. |
661 | 661 | ||
662 | config RCU_BOOST | 662 | config RCU_BOOST |
@@ -672,30 +672,32 @@ config RCU_BOOST | |||
672 | Say Y here if you are working with real-time apps or heavy loads | 672 | Say Y here if you are working with real-time apps or heavy loads |
673 | Say N here if you are unsure. | 673 | Say N here if you are unsure. |
674 | 674 | ||
675 | config RCU_BOOST_PRIO | 675 | config RCU_KTHREAD_PRIO |
676 | int "Real-time priority to boost RCU readers to" | 676 | int "Real-time priority to use for RCU worker threads" |
677 | range 1 99 | 677 | range 1 99 if RCU_BOOST |
678 | depends on RCU_BOOST | 678 | range 0 99 if !RCU_BOOST |
679 | default 1 | 679 | default 1 if RCU_BOOST |
680 | help | 680 | default 0 if !RCU_BOOST |
681 | This option specifies the real-time priority to which long-term | 681 | help |
682 | preempted RCU readers are to be boosted. If you are working | 682 | This option specifies the SCHED_FIFO priority value that will be |
683 | with a real-time application that has one or more CPU-bound | 683 | assigned to the rcuc/n and rcub/n threads and is also the value |
684 | threads running at a real-time priority level, you should set | 684 | used for RCU_BOOST (if enabled). If you are working with a |
685 | RCU_BOOST_PRIO to a priority higher then the highest-priority | 685 | real-time application that has one or more CPU-bound threads |
686 | real-time CPU-bound thread. The default RCU_BOOST_PRIO value | 686 | running at a real-time priority level, you should set |
687 | of 1 is appropriate in the common case, which is real-time | 687 | RCU_KTHREAD_PRIO to a priority higher than the highest-priority |
688 | real-time CPU-bound application thread. The default RCU_KTHREAD_PRIO | ||
689 | value of 1 is appropriate in the common case, which is real-time | ||
688 | applications that do not have any CPU-bound threads. | 690 | applications that do not have any CPU-bound threads. |
689 | 691 | ||
690 | Some real-time applications might not have a single real-time | 692 | Some real-time applications might not have a single real-time |
691 | thread that saturates a given CPU, but instead might have | 693 | thread that saturates a given CPU, but instead might have |
692 | multiple real-time threads that, taken together, fully utilize | 694 | multiple real-time threads that, taken together, fully utilize |
693 | that CPU. In this case, you should set RCU_BOOST_PRIO to | 695 | that CPU. In this case, you should set RCU_KTHREAD_PRIO to |
694 | a priority higher than the lowest-priority thread that is | 696 | a priority higher than the lowest-priority thread that is |
695 | conspiring to prevent the CPU from running any non-real-time | 697 | conspiring to prevent the CPU from running any non-real-time |
696 | tasks. For example, if one thread at priority 10 and another | 698 | tasks. For example, if one thread at priority 10 and another |
697 | thread at priority 5 are between themselves fully consuming | 699 | thread at priority 5 are between themselves fully consuming |
698 | the CPU time on a given CPU, then RCU_BOOST_PRIO should be | 700 | the CPU time on a given CPU, then RCU_KTHREAD_PRIO should be |
699 | set to priority 6 or higher. | 701 | set to priority 6 or higher. |
700 | 702 | ||
701 | Specify the real-time priority, or take the default if unsure. | 703 | Specify the real-time priority, or take the default if unsure. |
@@ -715,7 +717,7 @@ config RCU_BOOST_DELAY | |||
715 | 717 | ||
716 | config RCU_NOCB_CPU | 718 | config RCU_NOCB_CPU |
717 | bool "Offload RCU callback processing from boot-selected CPUs" | 719 | bool "Offload RCU callback processing from boot-selected CPUs" |
718 | depends on TREE_RCU || TREE_PREEMPT_RCU | 720 | depends on TREE_RCU || PREEMPT_RCU |
719 | default n | 721 | default n |
720 | help | 722 | help |
721 | Use this option to reduce OS jitter for aggressive HPC or | 723 | Use this option to reduce OS jitter for aggressive HPC or |
@@ -739,6 +741,7 @@ config RCU_NOCB_CPU | |||
739 | choice | 741 | choice |
740 | prompt "Build-forced no-CBs CPUs" | 742 | prompt "Build-forced no-CBs CPUs" |
741 | default RCU_NOCB_CPU_NONE | 743 | default RCU_NOCB_CPU_NONE |
744 | depends on RCU_NOCB_CPU | ||
742 | help | 745 | help |
743 | This option allows no-CBs CPUs (whose RCU callbacks are invoked | 746 | This option allows no-CBs CPUs (whose RCU callbacks are invoked |
744 | from kthreads rather than from softirq context) to be specified | 747 | from kthreads rather than from softirq context) to be specified |
@@ -747,7 +750,6 @@ choice | |||
747 | 750 | ||
748 | config RCU_NOCB_CPU_NONE | 751 | config RCU_NOCB_CPU_NONE |
749 | bool "No build_forced no-CBs CPUs" | 752 | bool "No build_forced no-CBs CPUs" |
750 | depends on RCU_NOCB_CPU | ||
751 | help | 753 | help |
752 | This option does not force any of the CPUs to be no-CBs CPUs. | 754 | This option does not force any of the CPUs to be no-CBs CPUs. |
753 | Only CPUs designated by the rcu_nocbs= boot parameter will be | 755 | Only CPUs designated by the rcu_nocbs= boot parameter will be |
@@ -761,7 +763,6 @@ config RCU_NOCB_CPU_NONE | |||
761 | 763 | ||
762 | config RCU_NOCB_CPU_ZERO | 764 | config RCU_NOCB_CPU_ZERO |
763 | bool "CPU 0 is a build_forced no-CBs CPU" | 765 | bool "CPU 0 is a build_forced no-CBs CPU" |
764 | depends on RCU_NOCB_CPU | ||
765 | help | 766 | help |
766 | This option forces CPU 0 to be a no-CBs CPU, so that its RCU | 767 | This option forces CPU 0 to be a no-CBs CPU, so that its RCU |
767 | callbacks are invoked by a per-CPU kthread whose name begins | 768 | callbacks are invoked by a per-CPU kthread whose name begins |
@@ -776,7 +777,6 @@ config RCU_NOCB_CPU_ZERO | |||
776 | 777 | ||
777 | config RCU_NOCB_CPU_ALL | 778 | config RCU_NOCB_CPU_ALL |
778 | bool "All CPUs are build_forced no-CBs CPUs" | 779 | bool "All CPUs are build_forced no-CBs CPUs" |
779 | depends on RCU_NOCB_CPU | ||
780 | help | 780 | help |
781 | This option forces all CPUs to be no-CBs CPUs. The rcu_nocbs= | 781 | This option forces all CPUs to be no-CBs CPUs. The rcu_nocbs= |
782 | boot parameter will be ignored. All CPUs' RCU callbacks will | 782 | boot parameter will be ignored. All CPUs' RCU callbacks will |
@@ -900,14 +900,6 @@ config ARCH_SUPPORTS_INT128 | |||
900 | config ARCH_WANT_NUMA_VARIABLE_LOCALITY | 900 | config ARCH_WANT_NUMA_VARIABLE_LOCALITY |
901 | bool | 901 | bool |
902 | 902 | ||
903 | config NUMA_BALANCING_DEFAULT_ENABLED | ||
904 | bool "Automatically enable NUMA aware memory/task placement" | ||
905 | default y | ||
906 | depends on NUMA_BALANCING | ||
907 | help | ||
908 | If set, automatic NUMA balancing will be enabled if running on a NUMA | ||
909 | machine. | ||
910 | |||
911 | config NUMA_BALANCING | 903 | config NUMA_BALANCING |
912 | bool "Memory placement aware NUMA scheduler" | 904 | bool "Memory placement aware NUMA scheduler" |
913 | depends on ARCH_SUPPORTS_NUMA_BALANCING | 905 | depends on ARCH_SUPPORTS_NUMA_BALANCING |
@@ -920,8 +912,16 @@ config NUMA_BALANCING | |||
920 | 912 | ||
921 | This system will be inactive on UMA systems. | 913 | This system will be inactive on UMA systems. |
922 | 914 | ||
915 | config NUMA_BALANCING_DEFAULT_ENABLED | ||
916 | bool "Automatically enable NUMA aware memory/task placement" | ||
917 | default y | ||
918 | depends on NUMA_BALANCING | ||
919 | help | ||
920 | If set, automatic NUMA balancing will be enabled if running on a NUMA | ||
921 | machine. | ||
922 | |||
923 | menuconfig CGROUPS | 923 | menuconfig CGROUPS |
924 | boolean "Control Group support" | 924 | bool "Control Group support" |
925 | select KERNFS | 925 | select KERNFS |
926 | help | 926 | help |
927 | This option adds support for grouping sets of processes together, for | 927 | This option adds support for grouping sets of processes together, for |
@@ -979,32 +979,17 @@ config CGROUP_CPUACCT | |||
979 | Provides a simple Resource Controller for monitoring the | 979 | Provides a simple Resource Controller for monitoring the |
980 | total CPU consumed by the tasks in a cgroup. | 980 | total CPU consumed by the tasks in a cgroup. |
981 | 981 | ||
982 | config RESOURCE_COUNTERS | 982 | config PAGE_COUNTER |
983 | bool "Resource counters" | 983 | bool |
984 | help | ||
985 | This option enables controller independent resource accounting | ||
986 | infrastructure that works with cgroups. | ||
987 | 984 | ||
988 | config MEMCG | 985 | config MEMCG |
989 | bool "Memory Resource Controller for Control Groups" | 986 | bool "Memory Resource Controller for Control Groups" |
990 | depends on RESOURCE_COUNTERS | 987 | select PAGE_COUNTER |
991 | select EVENTFD | 988 | select EVENTFD |
992 | help | 989 | help |
993 | Provides a memory resource controller that manages both anonymous | 990 | Provides a memory resource controller that manages both anonymous |
994 | memory and page cache. (See Documentation/cgroups/memory.txt) | 991 | memory and page cache. (See Documentation/cgroups/memory.txt) |
995 | 992 | ||
996 | Note that setting this option increases fixed memory overhead | ||
997 | associated with each page of memory in the system. By this, | ||
998 | 8(16)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory | ||
999 | usage tracking struct at boot. Total amount of this is printed out | ||
1000 | at boot. | ||
1001 | |||
1002 | Only enable when you're ok with these trade offs and really | ||
1003 | sure you need the memory resource controller. Even when you enable | ||
1004 | this, you can set "cgroup_disable=memory" at your boot option to | ||
1005 | disable memory resource controller and you can avoid overheads. | ||
1006 | (and lose benefits of memory resource controller) | ||
1007 | |||
1008 | config MEMCG_SWAP | 993 | config MEMCG_SWAP |
1009 | bool "Memory Resource Controller Swap Extension" | 994 | bool "Memory Resource Controller Swap Extension" |
1010 | depends on MEMCG && SWAP | 995 | depends on MEMCG && SWAP |
@@ -1055,7 +1040,8 @@ config MEMCG_KMEM | |||
1055 | 1040 | ||
1056 | config CGROUP_HUGETLB | 1041 | config CGROUP_HUGETLB |
1057 | bool "HugeTLB Resource Controller for Control Groups" | 1042 | bool "HugeTLB Resource Controller for Control Groups" |
1058 | depends on RESOURCE_COUNTERS && HUGETLB_PAGE | 1043 | depends on HUGETLB_PAGE |
1044 | select PAGE_COUNTER | ||
1059 | default n | 1045 | default n |
1060 | help | 1046 | help |
1061 | Provides a cgroup Resource Controller for HugeTLB pages. | 1047 | Provides a cgroup Resource Controller for HugeTLB pages. |
@@ -1304,8 +1290,8 @@ endif | |||
1304 | config CC_OPTIMIZE_FOR_SIZE | 1290 | config CC_OPTIMIZE_FOR_SIZE |
1305 | bool "Optimize for size" | 1291 | bool "Optimize for size" |
1306 | help | 1292 | help |
1307 | Enabling this option will pass "-Os" instead of "-O2" to gcc | 1293 | Enabling this option will pass "-Os" instead of "-O2" to |
1308 | resulting in a smaller kernel. | 1294 | your compiler resulting in a smaller kernel. |
1309 | 1295 | ||
1310 | If unsure, say N. | 1296 | If unsure, say N. |
1311 | 1297 | ||
@@ -1600,6 +1586,7 @@ config PERF_EVENTS | |||
1600 | depends on HAVE_PERF_EVENTS | 1586 | depends on HAVE_PERF_EVENTS |
1601 | select ANON_INODES | 1587 | select ANON_INODES |
1602 | select IRQ_WORK | 1588 | select IRQ_WORK |
1589 | select SRCU | ||
1603 | help | 1590 | help |
1604 | Enable kernel support for various performance events provided | 1591 | Enable kernel support for various performance events provided |
1605 | by software and hardware. | 1592 | by software and hardware. |
@@ -1775,7 +1762,7 @@ config SLABINFO | |||
1775 | default y | 1762 | default y |
1776 | 1763 | ||
1777 | config RT_MUTEXES | 1764 | config RT_MUTEXES |
1778 | boolean | 1765 | bool |
1779 | 1766 | ||
1780 | config BASE_SMALL | 1767 | config BASE_SMALL |
1781 | int | 1768 | int |
diff --git a/init/do_mounts.c b/init/do_mounts.c index 9b3565c41502..eb410083e8e0 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c | |||
@@ -395,8 +395,6 @@ retry: | |||
395 | case 0: | 395 | case 0: |
396 | goto out; | 396 | goto out; |
397 | case -EACCES: | 397 | case -EACCES: |
398 | flags |= MS_RDONLY; | ||
399 | goto retry; | ||
400 | case -EINVAL: | 398 | case -EINVAL: |
401 | continue; | 399 | continue; |
402 | } | 400 | } |
@@ -419,6 +417,10 @@ retry: | |||
419 | #endif | 417 | #endif |
420 | panic("VFS: Unable to mount root fs on %s", b); | 418 | panic("VFS: Unable to mount root fs on %s", b); |
421 | } | 419 | } |
420 | if (!(flags & MS_RDONLY)) { | ||
421 | flags |= MS_RDONLY; | ||
422 | goto retry; | ||
423 | } | ||
422 | 424 | ||
423 | printk("List of all partitions:\n"); | 425 | printk("List of all partitions:\n"); |
424 | printk_all_partitions(); | 426 | printk_all_partitions(); |
diff --git a/init/main.c b/init/main.c index b0c705515089..54565bf57beb 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -51,7 +51,7 @@ | |||
51 | #include <linux/mempolicy.h> | 51 | #include <linux/mempolicy.h> |
52 | #include <linux/key.h> | 52 | #include <linux/key.h> |
53 | #include <linux/buffer_head.h> | 53 | #include <linux/buffer_head.h> |
54 | #include <linux/page_cgroup.h> | 54 | #include <linux/page_ext.h> |
55 | #include <linux/debug_locks.h> | 55 | #include <linux/debug_locks.h> |
56 | #include <linux/debugobjects.h> | 56 | #include <linux/debugobjects.h> |
57 | #include <linux/lockdep.h> | 57 | #include <linux/lockdep.h> |
@@ -78,6 +78,8 @@ | |||
78 | #include <linux/context_tracking.h> | 78 | #include <linux/context_tracking.h> |
79 | #include <linux/random.h> | 79 | #include <linux/random.h> |
80 | #include <linux/list.h> | 80 | #include <linux/list.h> |
81 | #include <linux/integrity.h> | ||
82 | #include <linux/proc_ns.h> | ||
81 | 83 | ||
82 | #include <asm/io.h> | 84 | #include <asm/io.h> |
83 | #include <asm/bugs.h> | 85 | #include <asm/bugs.h> |
@@ -85,10 +87,6 @@ | |||
85 | #include <asm/sections.h> | 87 | #include <asm/sections.h> |
86 | #include <asm/cacheflush.h> | 88 | #include <asm/cacheflush.h> |
87 | 89 | ||
88 | #ifdef CONFIG_X86_LOCAL_APIC | ||
89 | #include <asm/smp.h> | ||
90 | #endif | ||
91 | |||
92 | static int kernel_init(void *); | 90 | static int kernel_init(void *); |
93 | 91 | ||
94 | extern void init_IRQ(void); | 92 | extern void init_IRQ(void); |
@@ -349,15 +347,6 @@ __setup("rdinit=", rdinit_setup); | |||
349 | 347 | ||
350 | #ifndef CONFIG_SMP | 348 | #ifndef CONFIG_SMP |
351 | static const unsigned int setup_max_cpus = NR_CPUS; | 349 | static const unsigned int setup_max_cpus = NR_CPUS; |
352 | #ifdef CONFIG_X86_LOCAL_APIC | ||
353 | static void __init smp_init(void) | ||
354 | { | ||
355 | APIC_init_uniprocessor(); | ||
356 | } | ||
357 | #else | ||
358 | #define smp_init() do { } while (0) | ||
359 | #endif | ||
360 | |||
361 | static inline void setup_nr_cpu_ids(void) { } | 350 | static inline void setup_nr_cpu_ids(void) { } |
362 | static inline void smp_prepare_cpus(unsigned int maxcpus) { } | 351 | static inline void smp_prepare_cpus(unsigned int maxcpus) { } |
363 | #endif | 352 | #endif |
@@ -486,10 +475,10 @@ void __init __weak thread_info_cache_init(void) | |||
486 | static void __init mm_init(void) | 475 | static void __init mm_init(void) |
487 | { | 476 | { |
488 | /* | 477 | /* |
489 | * page_cgroup requires contiguous pages, | 478 | * page_ext requires contiguous pages, |
490 | * bigger than MAX_ORDER unless SPARSEMEM. | 479 | * bigger than MAX_ORDER unless SPARSEMEM. |
491 | */ | 480 | */ |
492 | page_cgroup_init_flatmem(); | 481 | page_ext_init_flatmem(); |
493 | mem_init(); | 482 | mem_init(); |
494 | kmem_cache_init(); | 483 | kmem_cache_init(); |
495 | percpu_init_late(); | 484 | percpu_init_late(); |
@@ -577,6 +566,10 @@ asmlinkage __visible void __init start_kernel(void) | |||
577 | local_irq_disable(); | 566 | local_irq_disable(); |
578 | idr_init_cache(); | 567 | idr_init_cache(); |
579 | rcu_init(); | 568 | rcu_init(); |
569 | |||
570 | /* trace_printk() and trace points may be used after this */ | ||
571 | trace_init(); | ||
572 | |||
580 | context_tracking_init(); | 573 | context_tracking_init(); |
581 | radix_tree_init(); | 574 | radix_tree_init(); |
582 | /* init some links before init_ISA_irqs() */ | 575 | /* init some links before init_ISA_irqs() */ |
@@ -627,7 +620,7 @@ asmlinkage __visible void __init start_kernel(void) | |||
627 | initrd_start = 0; | 620 | initrd_start = 0; |
628 | } | 621 | } |
629 | #endif | 622 | #endif |
630 | page_cgroup_init(); | 623 | page_ext_init(); |
631 | debug_objects_mem_init(); | 624 | debug_objects_mem_init(); |
632 | kmemleak_init(); | 625 | kmemleak_init(); |
633 | setup_per_cpu_pageset(); | 626 | setup_per_cpu_pageset(); |
@@ -660,8 +653,9 @@ asmlinkage __visible void __init start_kernel(void) | |||
660 | /* rootfs populating might need page-writeback */ | 653 | /* rootfs populating might need page-writeback */ |
661 | page_writeback_init(); | 654 | page_writeback_init(); |
662 | proc_root_init(); | 655 | proc_root_init(); |
663 | cgroup_init(); | 656 | nsfs_init(); |
664 | cpuset_init(); | 657 | cpuset_init(); |
658 | cgroup_init(); | ||
665 | taskstats_init_early(); | 659 | taskstats_init_early(); |
666 | delayacct_init(); | 660 | delayacct_init(); |
667 | 661 | ||
@@ -959,8 +953,8 @@ static int __ref kernel_init(void *unused) | |||
959 | ret = run_init_process(execute_command); | 953 | ret = run_init_process(execute_command); |
960 | if (!ret) | 954 | if (!ret) |
961 | return 0; | 955 | return 0; |
962 | pr_err("Failed to execute %s (error %d). Attempting defaults...\n", | 956 | panic("Requested init %s failed (error %d).", |
963 | execute_command, ret); | 957 | execute_command, ret); |
964 | } | 958 | } |
965 | if (!try_to_run_init_process("/sbin/init") || | 959 | if (!try_to_run_init_process("/sbin/init") || |
966 | !try_to_run_init_process("/etc/init") || | 960 | !try_to_run_init_process("/etc/init") || |
@@ -1026,8 +1020,11 @@ static noinline void __init kernel_init_freeable(void) | |||
1026 | * Ok, we have completed the initial bootup, and | 1020 | * Ok, we have completed the initial bootup, and |
1027 | * we're essentially up and running. Get rid of the | 1021 | * we're essentially up and running. Get rid of the |
1028 | * initmem segments and start the user-mode stuff.. | 1022 | * initmem segments and start the user-mode stuff.. |
1023 | * | ||
1024 | * rootfs is available now, try loading the public keys | ||
1025 | * and default modules | ||
1029 | */ | 1026 | */ |
1030 | 1027 | ||
1031 | /* rootfs is available now, try loading default modules */ | 1028 | integrity_load_keys(); |
1032 | load_default_modules(); | 1029 | load_default_modules(); |
1033 | } | 1030 | } |
diff --git a/init/version.c b/init/version.c index 1a4718e500fe..fe41a63efed6 100644 --- a/init/version.c +++ b/init/version.c | |||
@@ -35,7 +35,10 @@ struct uts_namespace init_uts_ns = { | |||
35 | .domainname = UTS_DOMAINNAME, | 35 | .domainname = UTS_DOMAINNAME, |
36 | }, | 36 | }, |
37 | .user_ns = &init_user_ns, | 37 | .user_ns = &init_user_ns, |
38 | .proc_inum = PROC_UTS_INIT_INO, | 38 | .ns.inum = PROC_UTS_INIT_INO, |
39 | #ifdef CONFIG_UTS_NS | ||
40 | .ns.ops = &utsns_operations, | ||
41 | #endif | ||
39 | }; | 42 | }; |
40 | EXPORT_SYMBOL_GPL(init_uts_ns); | 43 | EXPORT_SYMBOL_GPL(init_uts_ns); |
41 | 44 | ||