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 7/7] xen/acpi/sleep: Register to the acpi_suspend_low

We piggyback on "x86/acpi: Provide registration for acpi_suspend_lowlevel."
to register a Xen version of the callback. The callback does not
do anything special - except it omits the x86_acpi_suspend_lowlevel.
It does that b/c during suspend it tries to save cr8 values (which
the hypervisor does not support), and then on resume path the
cr3, cr8, idt, and gdt are all resumed which clashes with what
the hypervisor has set up for the guest.

Signed-off-by: Liang Tang <liang.tang@xxxxxxxxxx>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 include/xen/acpi.h |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index 69a6890..832b5e5 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -44,11 +44,26 @@
 acpi_status xen_acpi_notify_hypervisor_state(u8 sleep_state,
                                     u32 pm1a_cnt, u32 pm1b_cnd);
 
+static inline int xen_acpi_suspend_lowlevel(void)
+{
+       /*
+       * Xen will save and restore CPU context, so
+       * we can skip that and just go straight to
+       * the suspend.
+       */
+       acpi_enter_sleep_state(ACPI_STATE_S3);
+       return 0;
+}
+
+
 static inline void xen_acpi_sleep_register(void)
 {
-       if (xen_initial_domain())
+       if (xen_initial_domain()){
                acpi_os_prepare_sleep_register(
                        &xen_acpi_notify_hypervisor_state);
+
+               acpi_suspend_lowlevel = xen_acpi_suspend_lowlevel;
+       }
 }
 #else
 static inline void xen_acpi_sleep_register(void)
-- 
1.7.7.1


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