ACPI: Bug compatibility for Windows on the ACPI reboot vector
authorMatthew Garrett <mjg@redhat.com>
Fri, 11 Mar 2011 21:12:19 +0000 (16:12 -0500)
committerLen Brown <len.brown@intel.com>
Wed, 23 Mar 2011 03:52:19 +0000 (23:52 -0400)
Windows ignores the bit_offset and bit_width, despite the spec requiring
that they be validated. Drop the checks so that we match this behaviour.
Windows also goes straight for the keyboard controller if the ACPI reboot
fails, so we shouldn't sleep if we're still alive.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/reboot.c

index 93f91142d7ad5ca01fc62b8dc16569660cfa0434..4870aaaa2ae194a291e72ccb52b9349b81e69ee4 100644 (file)
@@ -15,9 +15,10 @@ void acpi_reboot(void)
 
        rr = &acpi_gbl_FADT.reset_register;
 
-       /* Is the reset register supported? */
-       if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) ||
-           rr->bit_width != 8 || rr->bit_offset != 0)
+       /* Is the reset register supported? The spec says we should be
+        * checking the bit width and bit offset, but Windows ignores
+        * these fields */
+       if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER))
                return;
 
        reset_value = acpi_gbl_FADT.reset_value;
@@ -45,6 +46,4 @@ void acpi_reboot(void)
                acpi_reset();
                break;
        }
-       /* Wait ten seconds */
-       acpi_os_stall(10000000);
 }