# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1207916505 -3600
# Node ID 0a59c717ff13eb1f38757a706edc0df58bd22c98
# Parent f39b20085a3d18ff4801fafe1f4b5d029709b971
x86 acpi: Correctly obtain information needed for successfully
powering off various systems (making use of the optional nature of
PM1b_{cnt,evt}_blk).
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
xen/arch/x86/acpi/boot.c | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 deletions(-)
diff -r f39b20085a3d -r 0a59c717ff13 xen/arch/x86/acpi/boot.c
--- a/xen/arch/x86/acpi/boot.c Fri Apr 11 09:18:41 2008 +0100
+++ b/xen/arch/x86/acpi/boot.c Fri Apr 11 13:21:45 2008 +0100
@@ -392,12 +392,14 @@ acpi_fadt_parse_sleep_info(struct fadt_d
/* Sanity check on FADT Rev. 2 */
if ((fadt->xpm1a_cnt_blk.address_space_id !=
ACPI_ADR_SPACE_SYSTEM_IO) ||
- (fadt->xpm1b_cnt_blk.address_space_id !=
- ACPI_ADR_SPACE_SYSTEM_IO) ||
+ (fadt->xpm1b_cnt_blk.address
+ && fadt->xpm1b_cnt_blk.address_space_id !=
+ ACPI_ADR_SPACE_SYSTEM_IO) ||
(fadt->xpm1a_evt_blk.address_space_id !=
ACPI_ADR_SPACE_SYSTEM_IO) ||
- (fadt->xpm1b_evt_blk.address_space_id !=
- ACPI_ADR_SPACE_SYSTEM_IO))
+ (fadt->xpm1b_evt_blk.address
+ && fadt->xpm1b_evt_blk.address_space_id !=
+ ACPI_ADR_SPACE_SYSTEM_IO))
goto bad;
acpi_sinfo.pm1a_cnt = (uint16_t)fadt->xpm1a_cnt_blk.address;
@@ -414,6 +416,11 @@ acpi_fadt_parse_sleep_info(struct fadt_d
acpi_sinfo.pm1a_evt = (uint16_t)fadt->V1_pm1a_evt_blk;
if (!acpi_sinfo.pm1b_evt)
acpi_sinfo.pm1b_evt = (uint16_t)fadt->V1_pm1b_evt_blk;
+
+ printk(KERN_INFO PREFIX
+ "ACPI SLEEP INFO: pm1x_cnt[%x,%x], pm1x_evt[%x,%x]\n",
+ acpi_sinfo.pm1a_cnt, acpi_sinfo.pm1b_cnt,
+ acpi_sinfo.pm1a_evt, acpi_sinfo.pm1b_cnt);
/* Now FACS... */
if (fadt->revision >= FADT2_REVISION_ID)
@@ -455,10 +462,6 @@ acpi_fadt_parse_sleep_info(struct fadt_d
acpi_sinfo.vector_width = 64;
}
- printk(KERN_INFO PREFIX
- "ACPI SLEEP INFO: pm1x_cnt[%x,%x], pm1x_evt[%x,%x]\n",
- acpi_sinfo.pm1a_cnt, acpi_sinfo.pm1b_cnt,
- acpi_sinfo.pm1a_evt, acpi_sinfo.pm1b_cnt);
printk(KERN_INFO PREFIX
" wakeup_vec[%"PRIx64"], vec_size[%x]\n",
acpi_sinfo.wakeup_vector, acpi_sinfo.vector_width);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|