From: "Jordan Crouse" <jordan.crouse@amd.com>
To: linux-acpi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, william.morrow@amd.com
Subject: [RFC/PATCH] ACPI: Correctly recover from a failed S3 attempt
Date: Tue, 8 Aug 2006 14:04:34 -0600 [thread overview]
Message-ID: <20060808200434.GJ14539@cosmic.amd.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 749 bytes --]
We have a poorly behaving BIOS that simply returns from its suspend
procedure, rather then jumping to the restart routine indicated by
the FACS. This appears to Linux as a failed S3 attempt.
This would normally succeed, but the sysenter msrs are not
restored and the restart fails. It is not clear if this is the only
omission, but if the sysenter msrs are manually entered in the debugger,
the OS resumes.
The attached patch would invoke the register restore function on failure.
This has absolutely no effect on correct systems, and, "does the right thing"
for failed or stupid BIOSes, at least as far as I am concerned.
Comments?
Jordan
--
Jordan Crouse
Senior Linux Engineer
Advanced Micro Devices, Inc.
<www.amd.com/embeddedprocessors>
[-- Attachment #2: acpi-s3-fix.patch --]
[-- Type: text/plain, Size: 1137 bytes --]
[PATCH] ACPI: Correctly recover from a failed S3 attempt
From: William Morrrow <william.morrow@amd.com>
This was discovered on a broken BIOS that simply returned from its
suspend procedure, appearing to the OS as a failed S3 attempt.
It is possible to invoke the protected mode register restore routine (which
would normally restore the sysenter registers) when the bios returns from S3.
This has no effect on a correctly running system and repairs the damage
from broken BIOS.
Signed-off-by: William Morrow <william.morrow@amd.com>
Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
---
arch/i386/kernel/acpi/wakeup.S | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/arch/i386/kernel/acpi/wakeup.S b/arch/i386/kernel/acpi/wakeup.S
index 9f408ee..b781b38 100644
--- a/arch/i386/kernel/acpi/wakeup.S
+++ b/arch/i386/kernel/acpi/wakeup.S
@@ -292,7 +292,10 @@ ENTRY(do_suspend_lowlevel)
pushl $3
call acpi_enter_sleep_state
addl $4, %esp
- ret
+
+# In case of S3 failure, we'll emerge here. Jump
+# to ret_point to recover
+ jmp ret_point
.p2align 4,,7
ret_point:
call restore_registers
next reply other threads:[~2006-08-08 20:04 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-08 20:04 Jordan Crouse [this message]
2006-08-17 15:48 ` [RFC/PATCH] ACPI: Correctly recover from a failed S3 attempt Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060808200434.GJ14539@cosmic.amd.com \
--to=jordan.crouse@amd.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=william.morrow@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox