From: Pavel Machek <pavel@suse.cz>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: "Li, Shaohua" <shaohua.li@intel.com>,
"Zhao, Yakui" <yakui.zhao@intel.com>,
Matthew Garrett <mjg59@srcf.ucam.org>,
"Zhang, Rui" <rui.zhang@intel.com>,
"lenb@kernel.org" <lenb@kernel.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"andi@firstfloor.org" <andi@firstfloor.org>
Subject: Re: [PATCH] ACPI suspend: Always use the 32-bit waking vector
Date: Sun, 14 Sep 2008 13:46:16 +0200 [thread overview]
Message-ID: <20080914114615.GA4641@ucw.cz> (raw)
In-Reply-To: <200809061313.02088.rjw@sisk.pl>
Hi!
> > There was discussion about this issue several months ago (intel's ml), looks
> > people forgot to take action after the discussion. The spec owner said 64bit
> > vector is used in protected mode. That is if OS sets it, wakeup code is
> > called in protected mode by BIOS. So the 64-bit vector shouldn't be used.
>
> Well, I read this part of the spec (2.0c, 3.0b) more carefully and it matches
> what you're saying. Moreover, my understanding of it is that we should
> actually _clear_ the 64-bit vector on systems that support it, because
> otherwise the BIOS is supposed to use it and call the wake-up code in protected
> mode.
>
> The appended patch is based on this observation.
Hmm, nice.
64-bit waking is the one that is 'recommended' to use, right? Could we
get some strange machines (kohjisha?) to jump to the waking vector by
using 64-bit one?
Do windows use 32-bit or 64-bit vector?
> From: Rafael J. Wysocki <rjw@sisk.pl>
>
> ACPI suspend: Always use the 32-bit waking vector
>
> According to the ACPI specification 2.0c and later, the 64-bit waking vector
> should be cleared and the 32-bit waking vector should be used, unless we want
> the wake-up code to be called by the BIOS in Protected Mode. Moreover, some
> systems (for example HP dv5-1004nr) are known to fail to resume if the 64-bit
> waking vector is used. Therefore, modify the code to clear the 64-bit waking
> vector, for FACS version 1 or greater, and set the 32-bit one before suspend.
>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
ACK.
> ---
> drivers/acpi/hardware/hwsleep.c | 37 +++++++++++--------------------------
> 1 file changed, 11 insertions(+), 26 deletions(-)
>
> Index: linux-2.6/drivers/acpi/hardware/hwsleep.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/hardware/hwsleep.c
> +++ linux-2.6/drivers/acpi/hardware/hwsleep.c
> @@ -78,19 +78,17 @@ acpi_set_firmware_waking_vector(acpi_phy
> return_ACPI_STATUS(status);
> }
>
> - /* Set the vector */
> + /*
> + * According to the ACPI specification 2.0c and later, the 64-bit
> + * waking vector should be cleared and the 32-bit waking vector should
> + * be used, unless we want the wake-up code to be called by the BIOS in
> + * Protected Mode. Some systems (for example HP dv5-1004nr) are known
> + * to fail to resume if the 64-bit vector is used.
> + */
> + if (facs->version >= 1)
> + facs->xfirmware_waking_vector = 0;
>
> - if ((facs->length < 32) || (!(facs->xfirmware_waking_vector))) {
> - /*
> - * ACPI 1.0 FACS or short table or optional X_ field is zero
> - */
> - facs->firmware_waking_vector = (u32) physical_address;
> - } else {
> - /*
> - * ACPI 2.0 FACS with valid X_ field
> - */
> - facs->xfirmware_waking_vector = physical_address;
> - }
> + facs->firmware_waking_vector = (u32)physical_address;
>
> return_ACPI_STATUS(AE_OK);
> }
> @@ -134,20 +132,7 @@ acpi_get_firmware_waking_vector(acpi_phy
> }
>
> /* Get the vector */
> -
> - if ((facs->length < 32) || (!(facs->xfirmware_waking_vector))) {
> - /*
> - * ACPI 1.0 FACS or short table or optional X_ field is zero
> - */
> - *physical_address =
> - (acpi_physical_address) facs->firmware_waking_vector;
> - } else {
> - /*
> - * ACPI 2.0 FACS with valid X_ field
> - */
> - *physical_address =
> - (acpi_physical_address) facs->xfirmware_waking_vector;
> - }
> + *physical_address = (acpi_physical_address)facs->firmware_waking_vector;
>
> return_ACPI_STATUS(AE_OK);
> }
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2008-09-14 11:46 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-04 5:51 [PATCH]: ACPI : Set 32bit and 64bit waking vector in FCAS table Zhao Yakui
2008-09-04 8:10 ` Rafael J. Wysocki
2008-09-04 9:18 ` Zhang Rui
2008-09-04 9:37 ` Rafael J. Wysocki
2008-09-04 12:07 ` Matthew Garrett
2008-09-05 1:17 ` Zhao Yakui
2008-09-05 1:21 ` Li, Shaohua
2008-09-05 10:48 ` Rafael J. Wysocki
2008-09-06 11:13 ` [PATCH] ACPI suspend: Always use the 32-bit waking vector Rafael J. Wysocki
2008-09-14 11:46 ` Pavel Machek [this message]
2008-09-14 23:56 ` Rafael J. Wysocki
2008-09-15 9:50 ` Pavel Machek
2008-09-17 5:46 ` Rafael J. Wysocki
2008-09-17 7:29 ` Pavel Machek
2008-09-15 11:18 ` ACPI suspend: test 64-bit waking vector (was Re: [PATCH] ACPI suspend: Always use the 32-bit waking vector) Pavel Machek
2008-09-17 5:45 ` Rafael J. Wysocki
2008-09-17 7:28 ` Pavel Machek
2008-09-17 16:58 ` Rafael J. Wysocki
2008-09-24 7:17 ` [PATCH] ACPI suspend: Always use the 32-bit waking vector Len Brown
2008-09-04 9:27 ` [PATCH]: ACPI : Set 32bit and 64bit waking vector in FCAS table Zhao Yakui
2008-09-04 9:48 ` Rafael J. Wysocki
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=20080914114615.GA4641@ucw.cz \
--to=pavel@suse.cz \
--cc=andi@firstfloor.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=rjw@sisk.pl \
--cc=rui.zhang@intel.com \
--cc=shaohua.li@intel.com \
--cc=yakui.zhao@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.