diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-20 14:19:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-20 14:19:35 -0400 |
commit | 19244ad06b70ed84931df868583547ce1cd3a186 (patch) | |
tree | 5ebe6d43bd493f61492ff92fe957c7a44418fa8f /drivers/acpi | |
parent | b3dc627cabb33fc95f93da78457770c1b2a364d2 (diff) |
Revert "ACPI: ignore FADT reset-reg-sup flag"
This reverts commit cf450136bfde77c7f95065c91bffded4aa7fa731.
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>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/acpica/hwxface.c | 3 | ||||
-rw-r--r-- | drivers/acpi/reboot.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/acpi/acpica/hwxface.c b/drivers/acpi/acpica/hwxface.c index ab513a972c95..a716fede4f25 100644 --- a/drivers/acpi/acpica/hwxface.c +++ b/drivers/acpi/acpica/hwxface.c | |||
@@ -74,7 +74,8 @@ acpi_status acpi_reset(void) | |||
74 | 74 | ||
75 | /* Check if the reset register is supported */ | 75 | /* Check if the reset register is supported */ |
76 | 76 | ||
77 | if (!reset_reg->address) { | 77 | if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) || |
78 | !reset_reg->address) { | ||
78 | return_ACPI_STATUS(AE_NOT_EXIST); | 79 | return_ACPI_STATUS(AE_NOT_EXIST); |
79 | } | 80 | } |
80 | 81 | ||
diff --git a/drivers/acpi/reboot.c b/drivers/acpi/reboot.c index c1d612435939..a6c77e8b37bd 100644 --- a/drivers/acpi/reboot.c +++ b/drivers/acpi/reboot.c | |||
@@ -23,7 +23,8 @@ void acpi_reboot(void) | |||
23 | /* Is the reset register supported? The spec says we should be | 23 | /* Is the reset register supported? The spec says we should be |
24 | * checking the bit width and bit offset, but Windows ignores | 24 | * checking the bit width and bit offset, but Windows ignores |
25 | * these fields */ | 25 | * these fields */ |
26 | /* Ignore also acpi_gbl_FADT.flags.ACPI_FADT_RESET_REGISTER */ | 26 | if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER)) |
27 | return; | ||
27 | 28 | ||
28 | reset_value = acpi_gbl_FADT.reset_value; | 29 | reset_value = acpi_gbl_FADT.reset_value; |
29 | 30 | ||