WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH]ACPI: workaround for S3 fail in two facs tables case

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH]ACPI: workaround for S3 fail in two facs tables case
From: "Wei, Gang" <gang.wei@xxxxxxxxx>
Date: Thu, 25 Feb 2010 13:49:40 +0800
Accept-language: zh-CN, en-US
Acceptlanguage: zh-CN, en-US
Cc: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Delivery-date: Wed, 24 Feb 2010 21:51:07 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acq13lKhxRtlttZBS6OrDhFD9qjUSw==
Thread-topic: [PATCH]ACPI: workaround for S3 fail in two facs tables case
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@xxxxxxxxx>

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: two_facs_workaround.patch
Description: two_facs_workaround.patch

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