* 2) If still alive, write to the keyboard controller
  * 3) If still alive, write to the ACPI reboot register again
  * 4) If still alive, write to the keyboard controller again
+ * 5) If still alive, call the EFI runtime service to reboot
+ * 6) If still alive, write to the PCI IO port 0xCF9 to reboot
+ * 7) If still alive, inform BIOS to do a proper reboot
  *
  * If the machine is still alive at this stage, it gives up. We default to
- * following the same pattern, except that if we're still alive after (4) we'll
+ * following the same pattern, except that if we're still alive after (7) we'll
  * try to force a triple fault and then cycle between hitting the keyboard
  * controller and doing that
  */
                                attempt = 1;
                                reboot_type = BOOT_ACPI;
                        } else {
-                               reboot_type = BOOT_TRIPLE;
+                               reboot_type = BOOT_EFI;
                        }
                        break;
 
                        load_idt(&no_idt);
                        __asm__ __volatile__("int3");
 
+                       /* We're probably dead after this, but... */
                        reboot_type = BOOT_KBD;
                        break;
 
                case BOOT_BIOS:
                        machine_real_restart(MRR_BIOS);
 
-                       reboot_type = BOOT_KBD;
+                       /* We're probably dead after this, but... */
+                       reboot_type = BOOT_TRIPLE;
                        break;
 
                case BOOT_ACPI:
                                                 EFI_RESET_WARM :
                                                 EFI_RESET_COLD,
                                                 EFI_SUCCESS, 0, NULL);
-                       reboot_type = BOOT_KBD;
+                       reboot_type = BOOT_CF9;
                        break;
 
                case BOOT_CF9:
                                outb(cf9|reboot_code, 0xcf9);
                                udelay(50);
                        }
-                       reboot_type = BOOT_KBD;
+                       reboot_type = BOOT_BIOS;
                        break;
                }
        }