linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: x86@kernel.org, tglx@linutronix.de,
	tboot-devel@lists.sourceforge.net, shane.wang@intel.com,
	linux-pm@lists.linux-foundation.org, linux-acpi@vger.kernel.org,
	len.brown@intel.com, jose
Cc: xen-devel@lists.xensource.com,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH 7/7] xen/acpi/sleep: Register to the acpi_suspend_lowlevel a callback.
Date: Wed, 31 Aug 2011 14:31:24 -0400	[thread overview]
Message-ID: <1314815484-4668-8-git-send-email-konrad.wilk@oracle.com> (raw)
In-Reply-To: <1314815484-4668-1-git-send-email-konrad.wilk@oracle.com>

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@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 include/xen/acpi.h |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index e414f14..0409919 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -12,10 +12,22 @@ int xen_acpi_notify_hypervisor_state(u8 sleep_state,
 				     u32 pm1a_cnt, u32 pm1b_cnd,
 				     bool *skip_rest);
 
+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_suspend_lowlevel = xen_acpi_suspend_lowlevel;
 		__acpi_override_sleep = xen_acpi_notify_hypervisor_state;
+	}
 }
 #else
 static inline void xen_acpi_sleep_register(void)
-- 
1.7.4.1


  parent reply	other threads:[~2011-08-31 18:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-31 18:31 [RFC PATCH v1] ACPI S3 to work under Xen Konrad Rzeszutek Wilk
2011-08-31 18:31 ` [PATCH 1/7] x86: Expand the x86_msi_ops to have a restore MSIs Konrad Rzeszutek Wilk
2011-08-31 18:31 ` [PATCH 2/7] x86, acpi, tboot: Have a ACPI sleep override instead of calling tboot_sleep Konrad Rzeszutek Wilk
2011-09-07  4:20   ` Cihula, Joseph
2011-09-07 17:27     ` [Xen-devel] " Jeremy Fitzhardinge
2011-09-07 17:55       ` Cihula, Joseph
2011-08-31 18:31 ` [PATCH 3/7] x86/acpi/sleep: Provide registration for acpi_suspend_lowlevel Konrad Rzeszutek Wilk
2011-08-31 18:31 ` [PATCH 4/7] xen: Utilize the restore_msi_irqs hook Konrad Rzeszutek Wilk
2011-08-31 18:31 ` [PATCH 5/7] xen/acpi: Domain0 acpi parser related platform hypercall Konrad Rzeszutek Wilk
2011-09-07  5:50   ` Cihula, Joseph
2011-09-07 17:29     ` [Xen-devel] " Jeremy Fitzhardinge
2011-09-07 17:43       ` Cihula, Joseph
2011-09-07 19:06         ` Konrad Rzeszutek Wilk
2011-09-08 13:38           ` Konrad Rzeszutek Wilk
2011-09-22 12:51             ` Konrad Rzeszutek Wilk
2011-09-21 19:29       ` Konrad Rzeszutek Wilk
2011-09-21 22:42         ` Jeremy Fitzhardinge
2011-08-31 18:31 ` [PATCH 6/7] xen/acpi/sleep: Enable ACPI sleep via the __acpi_override_sleep Konrad Rzeszutek Wilk
2011-09-07  4:36   ` Cihula, Joseph
2011-08-31 18:31 ` Konrad Rzeszutek Wilk [this message]
2011-09-01  6:58 ` [RFC PATCH v1] ACPI S3 to work under Xen Tian, Kevin
2011-09-02 11:52 ` [Xen-devel] " Stefano Stabellini
     [not found] <1321392671-9128-1-git-send-email-konrad.wilk@oracle.com>
2011-11-15 21:31 ` [PATCH 7/7] xen/acpi/sleep: Register to the acpi_suspend_lowlevel a callback Konrad Rzeszutek Wilk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314815484-4668-8-git-send-email-konrad.wilk@oracle.com \
    --to=konrad.wilk@oracle.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=shane.wang@intel.com \
    --cc=tboot-devel@lists.sourceforge.net \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).