Merge branch 'upstream/jump-label-noearly' of git://git.kernel.org/pub/scm/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 7 Nov 2011 04:20:46 +0000 (20:20 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 7 Nov 2011 04:20:46 +0000 (20:20 -0800)
* 'upstream/jump-label-noearly' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen:
  jump-label: initialize jump-label subsystem much earlier
  x86/jump_label: add arch_jump_label_transform_static()
  s390/jump-label: add arch_jump_label_transform_static()
  jump_label: add arch_jump_label_transform_static() to optimise non-live code updates
  sparc/jump_label: drop arch_jump_label_text_poke_early()
  x86/jump_label: drop arch_jump_label_text_poke_early()
  jump_label: if a key has already been initialized, don't nop it out
  stop_machine: make stop_machine safe and efficient to call early
  jump_label: use proper atomic_t initializer

Conflicts:
 - arch/x86/kernel/jump_label.c
Added __init_or_module to arch_jump_label_text_poke_early vs
removal of that function entirely
 - kernel/stop_machine.c
same patch ("stop_machine: make stop_machine safe and efficient
to call early") merged twice, with whitespace fix in one version

1  2 
init/main.c

diff --combined init/main.c
index 63f5f6f8dc3bd32c82e4b77f1082d879e98556a4,29d8d847de9499ebb9fe1a601f5a5ec1eb8cbf58..217ed23e94875d59ffd7b6a95562fcba36112e08
@@@ -163,7 -163,7 +163,7 @@@ static int __init obsolete_checksetup(c
        p = __setup_start;
        do {
                int n = strlen(p->str);
 -              if (!strncmp(line, p->str, n)) {
 +              if (parameqn(line, p->str, n)) {
                        if (p->early) {
                                /* Already done in parse_early_param?
                                 * (Needs exact match on param part).
@@@ -381,6 -381,9 +381,6 @@@ static noinline void __init_refok rest_
        preempt_enable_no_resched();
        schedule();
  
 -      /* At this point, we can enable user mode helper functionality */
 -      usermodehelper_enable();
 -
        /* Call into cpu_idle with preempt disabled */
        preempt_disable();
        cpu_idle();
@@@ -392,7 -395,7 +392,7 @@@ static int __init do_early_param(char *
        const struct obs_kernel_param *p;
  
        for (p = __setup_start; p < __setup_end; p++) {
 -              if ((p->early && strcmp(param, p->str) == 0) ||
 +              if ((p->early && parameq(param, p->str)) ||
                    (strcmp(param, "console") == 0 &&
                     strcmp(p->str, "earlycon") == 0)
                ) {
@@@ -512,6 -515,9 +512,9 @@@ asmlinkage void __init start_kernel(voi
        parse_args("Booting kernel", static_command_line, __start___param,
                   __stop___param - __start___param,
                   &unknown_bootoption);
+       jump_label_init();
        /*
         * These use large bootmem allocations and must precede
         * kmem_cache_init()
@@@ -730,7 -736,6 +733,7 @@@ static void __init do_basic_setup(void
        driver_init();
        init_irq_proc();
        do_ctors();
 +      usermodehelper_enable();
        do_initcalls();
  }