}
 
 /*
- * Disable virtualization, APIC etc. and park the CPU in a HLT loop
+ * this function calls the 'stop' function on all other CPUs in the system.
  */
 DEFINE_IDTENTRY_SYSVEC(sysvec_reboot)
 {
         * 2) Wait for all other CPUs to report that they reached the
         *    HLT loop in stop_this_cpu()
         *
-        * 3) If the system uses INIT/STARTUP for CPU bringup, then
-        *    send all present CPUs an INIT vector, which brings them
-        *    completely out of the way.
+        * 3) If #2 timed out send an NMI to the CPUs which did not
+        *    yet report
         *
-        * 4) If #3 is not possible and #2 timed out send an NMI to the
-        *    CPUs which did not yet report
-        *
-        * 5) Wait for all other CPUs to report that they reached the
+        * 4) Wait for all other CPUs to report that they reached the
         *    HLT loop in stop_this_cpu()
         *
-        * #4 can obviously race against a CPU reaching the HLT loop late.
+        * #3 can obviously race against a CPU reaching the HLT loop late.
         * That CPU will have reported already and the "have all CPUs
         * reached HLT" condition will be true despite the fact that the
         * other CPU is still handling the NMI. Again, there is no
                /*
                 * Don't wait longer than a second for IPI completion. The
                 * wait request is not checked here because that would
-                * prevent an NMI/INIT shutdown in case that not all
+                * prevent an NMI shutdown attempt in case that not all
                 * CPUs reach shutdown state.
                 */
                timeout = USEC_PER_SEC;
                        udelay(1);
        }
 
-       /*
-        * Park all other CPUs in INIT including "offline" CPUs, if
-        * possible. That's a safe place where they can't resume execution
-        * of HLT and then execute the HLT loop from overwritten text or
-        * page tables.
-        *
-        * The only downside is a broadcast MCE, but up to the point where
-        * the kexec() kernel brought all APs online again an MCE will just
-        * make HLT resume and handle the MCE. The machine crashes and burns
-        * due to overwritten text, page tables and data. So there is a
-        * choice between fire and frying pan. The result is pretty much
-        * the same. Chose frying pan until x86 provides a sane mechanism
-        * to park a CPU.
-        */
-       if (smp_park_other_cpus_in_init())
-               goto done;
-
-       /*
-        * If park with INIT was not possible and the REBOOT_VECTOR didn't
-        * take all secondary CPUs offline, try with the NMI.
-        */
+       /* if the REBOOT_VECTOR didn't work, try with the NMI */
        if (!cpumask_empty(&cpus_stop_mask)) {
                /*
                 * If NMI IPI is enabled, try to register the stop handler
                        udelay(1);
        }
 
-done:
        local_irq_save(flags);
        disable_local_APIC();
        mcheck_cpu_clear(this_cpu_ptr(&cpu_info));
 
        cache_aps_init();
 }
 
-bool smp_park_other_cpus_in_init(void)
-{
-       unsigned int cpu, this_cpu = smp_processor_id();
-       unsigned int apicid;
-
-       if (apic->wakeup_secondary_cpu_64 || apic->wakeup_secondary_cpu)
-               return false;
-
-       /*
-        * If this is a crash stop which does not execute on the boot CPU,
-        * then this cannot use the INIT mechanism because INIT to the boot
-        * CPU will reset the machine.
-        */
-       if (this_cpu)
-               return false;
-
-       for_each_cpu_and(cpu, &cpus_booted_once_mask, cpu_present_mask) {
-               if (cpu == this_cpu)
-                       continue;
-               apicid = apic->cpu_present_to_apicid(cpu);
-               if (apicid == BAD_APICID)
-                       continue;
-               send_init_sequence(apicid);
-       }
-       return true;
-}
-
 /*
  * Early setup to make printk work.
  */