xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH]ACPI: workaround for S3 fail in two facs tables case
@ 2010-02-25  5:49 Wei, Gang
  2010-02-25  8:38 ` Jan Beulich
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Wei, Gang @ 2010-02-25  5:49 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com; +Cc: Keir Fraser

[-- Attachment #1: Type: text/plain, Size: 861 bytes --]

ACPI: workaround for S3 fail in two facs tables case

Some legacy BIOS which support ACPI2.0+ may expose two FACS tables via both FADT->FIRMWARE_CTRL and FADT->X_FIRMWARE_CTRL, but only lookup S3 waking_vector in the first one. So enhance the X_FIRMWARE_CTRL selection condition by adding FADT->FIRMWARE_CTRL == 0.

Signed-off-by: Wei Gang <gang.wei@intel.com>

diff -r e11c8dcbf690 xen/arch/x86/acpi/boot.c
--- a/xen/arch/x86/acpi/boot.c	Wed Feb 24 11:00:11 2010 +0800
+++ b/xen/arch/x86/acpi/boot.c	Thu Feb 25 20:47:37 2010 +0800
@@ -365,7 +365,7 @@ acpi_fadt_parse_sleep_info(struct acpi_t
 	       acpi_sinfo.pm1b_evt_blk.address);
 
 	/* Now FACS... */
-	if (fadt->header.revision >= FADT2_REVISION_ID)
+	if (fadt->header.revision >= FADT2_REVISION_ID && fadt->facs == 0)
 		facs_pa = fadt->Xfacs;
 	else
 		facs_pa = (uint64_t)fadt->facs;

[-- Attachment #2: two_facs_workaround.patch --]
[-- Type: application/octet-stream, Size: 845 bytes --]

ACPI: workaround for S3 fail in two facs tables case

Some legacy BIOS which support ACPI2.0+ may expose two FACS tables via both FADT->FIRMWARE_CTRL and FADT->X_FIRMWARE_CTRL, but only lookup S3 waking_vector in the first one. So enhance the X_FIRMWARE_CTRL selection condition by adding FADT->FIRMWARE_CTRL == 0.

Signed-off-by: Wei Gang <gang.wei@intel.com>

diff -r e11c8dcbf690 xen/arch/x86/acpi/boot.c
--- a/xen/arch/x86/acpi/boot.c	Wed Feb 24 11:00:11 2010 +0800
+++ b/xen/arch/x86/acpi/boot.c	Thu Feb 25 20:47:37 2010 +0800
@@ -365,7 +365,7 @@ acpi_fadt_parse_sleep_info(struct acpi_t
 	       acpi_sinfo.pm1b_evt_blk.address);
 
 	/* Now FACS... */
-	if (fadt->header.revision >= FADT2_REVISION_ID)
+	if (fadt->header.revision >= FADT2_REVISION_ID && fadt->facs == 0)
 		facs_pa = fadt->Xfacs;
 	else
 		facs_pa = (uint64_t)fadt->facs;

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-02-26  1:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-25  5:49 [PATCH]ACPI: workaround for S3 fail in two facs tables case Wei, Gang
2010-02-25  8:38 ` Jan Beulich
2010-02-25 10:39   ` Keir Fraser
2010-02-26  1:43   ` Wei, Gang
2010-02-25 11:58 ` Keir Fraser
2010-02-25 13:17   ` Jan Beulich
2010-02-25 13:24     ` Keir Fraser
2010-02-25 20:57 ` Keir Fraser
2010-02-26  1:24   ` Wei, Gang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).