]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
x86 acpi: Correctly obtain information needed for successfully
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 11 Apr 2008 12:21:45 +0000 (13:21 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 11 Apr 2008 12:21:45 +0000 (13:21 +0100)
powering off various systems (making use of the optional nature of
PM1b_{cnt,evt}_blk).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/acpi/boot.c

index 71d73a98cafe11a6e8655362e68b136fa3f61596..0e1f3ecb487255c45a7f724b1ca19687e99fd792 100644 (file)
@@ -392,12 +392,14 @@ acpi_fadt_parse_sleep_info(struct fadt_descriptor_rev2 *fadt)
                /* 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;
@@ -415,6 +417,11 @@ acpi_fadt_parse_sleep_info(struct fadt_descriptor_rev2 *fadt)
        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)
                facs_pa = fadt->xfirmware_ctrl;
@@ -455,10 +462,6 @@ acpi_fadt_parse_sleep_info(struct fadt_descriptor_rev2 *fadt)
                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);