Index: sys/dev/xen/control/control.c =================================================================== --- sys/dev/xen/control/control.c +++ sys/dev/xen/control/control.c @@ -446,7 +446,7 @@ xctrl->xctrl_watch.max_pending = 1; xs_register_watch(&xctrl->xctrl_watch); - if (xen_pv_domain()) + if (xen_has_pv_shutdown_handler()) EVENTHANDLER_REGISTER(shutdown_final, xen_pv_shutdown_final, NULL, SHUTDOWN_PRI_LAST); Index: sys/x86/include/xen/xen-os.h =================================================================== --- sys/x86/include/xen/xen-os.h +++ sys/x86/include/xen/xen-os.h @@ -61,6 +61,13 @@ return (!xen_hvm_domain() || xen_vector_callback_enabled); } +static inline bool +xen_has_pv_shutdown_handler(void) +{ + + return (xen_pv_domain()); +} + static inline bool xen_pv_disks_disabled(void) {