[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v9 16/19] xen: add shutdown hook for PVH



Add the PV shutdown hook to PVH.
---
 sys/dev/xen/control/control.c |   37 ++++++++++++++++++-------------------
 1 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c
index bc0609d..78894ba 100644
--- a/sys/dev/xen/control/control.c
+++ b/sys/dev/xen/control/control.c
@@ -316,21 +316,6 @@ xctrl_suspend()
        EVENTHANDLER_INVOKE(power_resume);
 }
 
-static void
-xen_pv_shutdown_final(void *arg, int howto)
-{
-       /*
-        * Inform the hypervisor that shutdown is complete.
-        * This is not necessary in HVM domains since Xen
-        * emulates ACPI in that mode and FreeBSD's ACPI
-        * support will request this transition.
-        */
-       if (howto & (RB_HALT | RB_POWEROFF))
-               HYPERVISOR_shutdown(SHUTDOWN_poweroff);
-       else
-               HYPERVISOR_shutdown(SHUTDOWN_reboot);
-}
-
 #else
 
 /* HVM mode suspension. */
@@ -440,6 +425,21 @@ xctrl_crash()
        panic("Xen directed crash");
 }
 
+static void
+xen_pv_shutdown_final(void *arg, int howto)
+{
+       /*
+        * Inform the hypervisor that shutdown is complete.
+        * This is not necessary in HVM domains since Xen
+        * emulates ACPI in that mode and FreeBSD's ACPI
+        * support will request this transition.
+        */
+       if (howto & (RB_HALT | RB_POWEROFF))
+               HYPERVISOR_shutdown(SHUTDOWN_poweroff);
+       else
+               HYPERVISOR_shutdown(SHUTDOWN_reboot);
+}
+
 /*------------------------------ Event Reception 
-----------------------------*/
 static void
 xctrl_on_watch_event(struct xs_watch *watch, const char **vec, unsigned int 
len)
@@ -522,10 +522,9 @@ xctrl_attach(device_t dev)
        xctrl->xctrl_watch.callback_data = (uintptr_t)xctrl;
        xs_register_watch(&xctrl->xctrl_watch);
 
-#ifndef XENHVM
-       EVENTHANDLER_REGISTER(shutdown_final, xen_pv_shutdown_final, NULL,
-                             SHUTDOWN_PRI_LAST);
-#endif
+       if (xen_pv_domain())
+               EVENTHANDLER_REGISTER(shutdown_final, xen_pv_shutdown_final, 
NULL,
+                                     SHUTDOWN_PRI_LAST);
 
        return (0);
 }
-- 
1.7.7.5 (Apple Git-26)


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.