Mailing List Archive

[linux-2.6.18-xen] Fix one dead loop case in host S3
# HG changeset patch
# User kfraser@localhost.localdomain
# Date 1189160303 -3600
# Node ID 2a214d4ef5b175708d01ac5ce15de7745c48b756
# Parent 8d1af6acf74090a1fafc80d02d2feab2da9b7f53
Fix one dead loop case in host S3

Wake sts is only required to be checked for S1, and implementation
is free to not touch wake sts bit for S3. The latter case is observed
falling into loop on checking wake sts after sleep hypercall returns.
Actually we only need to check hypercall return value here, and those
checks belong to Xen instead.

Signed-off-by Kevin Tian <kevin.tian@intel.com>
---
drivers/acpi/hardware/hwsleep.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)

diff -r 8d1af6acf740 -r 2a214d4ef5b1 drivers/acpi/hardware/hwsleep.c
--- a/drivers/acpi/hardware/hwsleep.c Fri Sep 07 11:09:25 2007 +0100
+++ b/drivers/acpi/hardware/hwsleep.c Fri Sep 07 11:18:23 2007 +0100
@@ -338,10 +338,6 @@ acpi_status asmlinkage acpi_enter_sleep_
status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK,
ACPI_REGISTER_PM1B_CONTROL,
PM1Bcontrol);
-#else
- status = acpi_notify_hypervisor_state(sleep_state,
- PM1Acontrol, PM1Bcontrol);
-#endif
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
@@ -383,6 +379,15 @@ acpi_status asmlinkage acpi_enter_sleep_
} while (!in_value);

return_ACPI_STATUS(AE_OK);
+#else
+ /* PV ACPI just need check hypercall return value */
+ status = acpi_notify_hypervisor_state(sleep_state,
+ PM1Acontrol, PM1Bcontrol);
+ if (ACPI_FAILURE(status))
+ return_ACPI_STATUS(status);
+ else
+ return_ACPI_STATUS(AE_OK);
+#endif
}

ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state)

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