Skip to content

Commit

Permalink
Revert "ACPI: ignore FADT reset-reg-sup flag"
Browse files Browse the repository at this point in the history
This reverts commit cf45013.

It breaks reboot on at least one Thinkpad T43, as reported by Jörg Otte:
 "On reboot it shuts down as normal.
  The last lines displayed are:

  >Unmounting temporary filesystems.. [OK]
  >Deactivating swap...               [OK]
  >Unmounting local filesystems...    [OK]
  >Will now restart
  >    Restarting system

  Then I hear it accessing the cd-drive, but then it's being stuck."

Jörg bisected the regression to this commit.

That commit fixes another machine (see

  https://bugzilla.kernel.org/show_bug.cgi?id=11533

for details) that has a BIOS bug and doesn't support ACPI reset.
However, at least one of those other reporters no longer even has the
machine in question, and had a different workaround to begin with.
Besides, it clearly was a buggy BIOS.  Let's not break the correct case
to fix that case.

Reported-and-bisected-by: Jörg Otte <jrg.otte@googlemail.com>
Cc: linux-acpi@vger.kernel.org
Cc: Len Brown <lenb@kernel.org>
Cc: Peter Anvin <hpa@zytor.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Linus Torvalds committed Apr 20, 2012
1 parent b3dc627 commit 19244ad
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
3 changes: 2 additions & 1 deletion drivers/acpi/acpica/hwxface.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ acpi_status acpi_reset(void)

/* Check if the reset register is supported */

if (!reset_reg->address) {
if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) ||
!reset_reg->address) {
return_ACPI_STATUS(AE_NOT_EXIST);
}

Expand Down
3 changes: 2 additions & 1 deletion drivers/acpi/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ void acpi_reboot(void)
/* Is the reset register supported? The spec says we should be
* checking the bit width and bit offset, but Windows ignores
* these fields */
/* Ignore also acpi_gbl_FADT.flags.ACPI_FADT_RESET_REGISTER */
if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER))
return;

reset_value = acpi_gbl_FADT.reset_value;

Expand Down

0 comments on commit 19244ad

Please sign in to comment.