Skip to content

Commit

Permalink
ACPI: Bug compatibility for Windows on the ACPI reboot vector
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthew Garrett authored and Len Brown committed Mar 23, 2011
1 parent f17d9cb commit 6734fe5
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions drivers/acpi/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -45,6 +46,4 @@ void acpi_reboot(void)
acpi_reset();
break;
}
/* Wait ten seconds */
acpi_os_stall(10000000);
}

0 comments on commit 6734fe5

Please sign in to comment.