diff options
author | Kyle McMartin <kyle@redhat.com> | 2011-05-30 07:23:14 -0400 |
---|---|---|
committer | Kyle McMartin <kyle@redhat.com> | 2011-05-30 07:23:14 -0400 |
commit | 123d535ad8de98fe5fd368bea098100171fdfb97 (patch) | |
tree | 519e4e355539a65ca27c0321f3af048874314d4d /acpi_reboot.patch | |
parent | cbc61c988b303e7718d0e711e1c506b0700042f4 (diff) | |
download | kernel-123d535ad8de98fe5fd368bea098100171fdfb97.tar.gz kernel-123d535ad8de98fe5fd368bea098100171fdfb97.tar.xz kernel-123d535ad8de98fe5fd368bea098100171fdfb97.zip |
rebase and nuke patches
Diffstat (limited to 'acpi_reboot.patch')
-rw-r--r-- | acpi_reboot.patch | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/acpi_reboot.patch b/acpi_reboot.patch deleted file mode 100644 index c67cf950b..000000000 --- a/acpi_reboot.patch +++ /dev/null @@ -1,53 +0,0 @@ -Improve our reboot handling for compatibility with Windows. Upstream in .38? - -diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c -index c495aa8..c770e66 100644 ---- a/arch/x86/kernel/reboot.c -+++ b/arch/x86/kernel/reboot.c -@@ -34,7 +34,7 @@ EXPORT_SYMBOL(pm_power_off); - - static const struct desc_ptr no_idt = {}; - static int reboot_mode; --enum reboot_type reboot_type = BOOT_KBD; -+enum reboot_type reboot_type = BOOT_ACPI; - int reboot_force; - - #if defined(CONFIG_X86_32) && defined(CONFIG_SMP) -@@ -538,9 +538,23 @@ void __attribute__((weak)) mach_reboot_fixups(void) - { - } - -+/* -+ * Windows does the following on reboot: -+ * 1) If the FADT has the ACPI reboot register flag set, try it -+ * 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 -+ * -+ * 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 -+ * try to force a triple fault and then cycle between hitting the keyboard -+ * controller and doing that -+ */ - static void native_machine_emergency_restart(void) - { - int i; -+ int attempt = 0; -+ int orig_reboot_type = reboot_type; - - if (reboot_emergency) - emergency_vmx_disable_all(); -@@ -562,6 +576,13 @@ static void native_machine_emergency_restart(void) - outb(0xfe, 0x64); /* pulse reset low */ - udelay(50); - } -+ if (attempt == 0 && orig_reboot_type == BOOT_ACPI) { -+ attempt = 1; -+ reboot_type = BOOT_ACPI; -+ } else { -+ reboot_type = BOOT_TRIPLE; -+ } -+ break; - - case BOOT_TRIPLE: - load_idt(&no_idt); |