return rc;
}
+static inline int
+HYPERVISOR_dom0_op(struct xen_platform_op *platform_op)
+{
+
+ return _hypercall1(int, platform_op, platform_op);
+}
+
#if CONFIG_XEN_COMPAT <= 0x030002
static inline int
HYPERVISOR_nmi_op(
#include <contrib/dev/acpica/include/acpi.h>
#include <contrib/dev/acpica/include/accommon.h>
+#ifdef XENHVM
+#include <xen/xen-os.h>
+#include <xen/hypervisor.h>
+#include <xen/interface/platform.h>
+#endif
+
#define _COMPONENT ACPI_HARDWARE
ACPI_MODULE_NAME ("hwsleep")
UINT32 InValue;
ACPI_STATUS Status;
+#ifdef XENHVM
+ struct xen_platform_op op = {
+ .cmd = XENPF_enter_acpi_sleep,
+ .interface_version = XENPF_INTERFACE_VERSION,
+ .u.enter_acpi_sleep = {
+ .sleep_state = SleepState,
+ .flags = 0,
+ },
+ };
+#endif
ACPI_FUNCTION_TRACE (HwLegacySleep);
ACPI_FLUSH_CPU_CACHE ();
+#ifdef XENHVM
+ if (xen_initial_domain()) {
+ op.u.enter_acpi_sleep.pm1a_cnt_val = Pm1aControl;
+ op.u.enter_acpi_sleep.pm1b_cnt_val = Pm1bControl;
+ HYPERVISOR_dom0_op(&op);
+ }
+#endif
+
/* Write #2: Write both SLP_TYP + SLP_EN */
Status = AcpiHwWritePm1Control (Pm1aControl, Pm1bControl);
return (rc);
}
+static inline int
+HYPERVISOR_dom0_op(struct xen_platform_op *platform_op)
+{
+
+ return _hypercall1(int, platform_op, platform_op);
+}
+
#if CONFIG_XEN_COMPAT <= 0x030002
static inline int
HYPERVISOR_nmi_op(