[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-3.4-testing] ACPI: workaround for S3 fail in two facs tables case



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1267131996 0
# Node ID 4f3f443df642e5009dbb31c072dc764171d99050
# Parent  b51c7384cf9642b6a2416091f33238ef9b3dfae5
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.

Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset:   20981:f6d7b66fdb80
xen-unstable date:        Thu Feb 25 20:56:43 2010 +0000
---
 xen/arch/x86/acpi/boot.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff -r b51c7384cf96 -r 4f3f443df642 xen/arch/x86/acpi/boot.c
--- a/xen/arch/x86/acpi/boot.c  Thu Feb 25 21:05:55 2010 +0000
+++ b/xen/arch/x86/acpi/boot.c  Thu Feb 25 21:06:36 2010 +0000
@@ -369,10 +369,15 @@ acpi_fadt_parse_sleep_info(struct acpi_t
               acpi_sinfo.pm1b_evt_blk.address);
 
        /* Now FACS... */
-       if (fadt->header.revision >= FADT2_REVISION_ID)
-               facs_pa = fadt->Xfacs;
-       else
+       facs_pa = ((fadt->header.revision >= FADT2_REVISION_ID)
+                  ? fadt->Xfacs : (uint64_t)fadt->facs);
+       if (fadt->facs && ((uint64_t)fadt->facs != facs_pa)) {
+               printk(KERN_WARNING PREFIX
+                      "32/64X FACS address mismatch in FADT - "
+                      "%08x/%016"PRIx64", using 32",
+                      fadt->facs, facs_pa);
                facs_pa = (uint64_t)fadt->facs;
+       }
 
        facs = (struct acpi_table_facs *)
                __acpi_map_table(facs_pa, sizeof(struct acpi_table_facs));

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.