since 7.2. VirtaulBox commits a17d3e2a0bae and deed9bb7bd94 rename SUPR0EnableVTx -> SUPR0EnableHwvirt use hma_register_exclusive also for Openindiana --- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c +++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c @@ -57,6 +57,7 @@ #include #include #undef u /* /usr/include/sys/user.h:249:1 is where this is defined to (curproc->p_user). very cool. */ +#include #include "../SUPDrvInternal.h" #include @@ -986,6 +987,42 @@ return false; } +static const char *vbox_hma_ident = DEVICE_DESC; +static hma_reg_t *vbox_hma_reg; + +int VBOXCALL supdrvOSEnableHwvirt(bool fEnable) +{ + hma_reg_t *reg; + + + if (fEnable) { + cmn_err(CE_NOTE, "!Registering hypervisor\n"); + if (vbox_hma_reg) + return VINF_SUCCESS; + +#if OOCEVER >= 151029 + if ((reg = hma_register_exclusive(vbox_hma_ident)) == NULL) +#else + if ((reg = hma_register(vbox_hma_ident)) == NULL) +#endif + return VERR_NOT_SUPPORTED; + + cmn_err(CE_NOTE, "!Successfully registered '%s'\n", + vbox_hma_ident); + + vbox_hma_reg = reg; + return VINF_SUCCESS; + } + + if (vbox_hma_reg) { + cmn_err(CE_NOTE, "!Unregistering hypervisor\n"); + hma_unregister(vbox_hma_reg); + vbox_hma_reg = NULL; + } + + return VINF_SUCCESS; +} + #if defined(VBOX_WITH_NATIVE_SOLARIS_LOADING) \ && !defined(VBOX_WITHOUT_NATIVE_R0_LOADER) diff --git a/src/VBox/HostDrivers/Support/SUPDrv.cpp b/src/VBox/HostDrivers/Support/SUPDrv.cpp index 0d43c10..f36406f 100644 --- a/src/VBox/HostDrivers/Support/SUPDrv.cpp +++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp @@ -4316,6 +4316,8 @@ SUPR0DECL(int) SUPR0EnableHwvirt(bool fEnable) return supdrvOSEnableHwvirt(fEnable); # elif defined(RT_OS_LINUX) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) return supdrvOSEnableHwvirt(fEnable); +# elif defined(RT_OS_SOLARIS) + return supdrvOSEnableHwvirt(fEnable); # else RT_NOREF1(fEnable); return VERR_NOT_SUPPORTED; diff --git a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c index c1efb45..2a51675 100644 --- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c +++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c @@ -1003,7 +1003,7 @@ int VBOXCALL supdrvOSEnableHwvirt(bool fEnable) if (vbox_hma_reg) return VINF_SUCCESS; -#if OOCEVER >= 151029 +#if 1 if ((reg = hma_register_exclusive(vbox_hma_ident)) == NULL) #else if ((reg = hma_register(vbox_hma_ident)) == NULL)