Para citar el Manual del software Intel, volumen 3c :
VMXON también está controlado por IA32_FEATURE_CONTROL MSR (MSR address 3AH).
Este MSR se borra a cero cuando se reinicia un procesador lógico. Los bits relevantes de la
MSR son:
- El bit 0 es el bit de bloqueo. Si este bit es claro, VMXON causa una excepción de protección general. Si se establece el bit de bloqueo, WRMSR a este MSR causa una excepción de protección general; el MSR no se puede modificar hasta que se reinicie el encendido. El BIOS del sistema puede usar este bit para proporcionar una opción de configuración para que el BIOS deshabilite la compatibilidad con VMX. Para habilitar el soporte de VMX en una plataforma, el BIOS debe establecer el bit 1, el bit 2 o ambos (ver a continuación), así como el bit de bloqueo.
- El bit 1 habilita VMXON en la operación SMX. Si este bit es claro, la ejecución de
VMXON en la operación SMX causa una excepción de protección general. Intenta establecer
este bit en los procesadores lógicos que no admiten la operación VMX (consulte la Sección 23.6) y la operación SMX (consulte el Capítulo 6, “Referencia de extensiones de modo más seguro”, en Intel® 64 e IA-32 Architectures Software Developer's Manual, Volume 2B) causa general -Excepciones de protección.
- El bit 2 habilita VMXON fuera de la operación SMX. Si este bit es claro, la ejecución de VMXON fuera de la operación de SMX causa una excepción de protección general. Los intentos de establecer este bit en procesadores lógicos que no admiten la operación VMX (consulte la Sección 23.6) causan excepciones de protección general.
Interpretación, para aquellos que no están al tanto de lo que está pasando aquí:
- MSR significa registro específico de la máquina y hace referencia a los registros / ajustes de configuración que se modifican entre las implementaciones de la arquitectura x86.
- Algunos de estos se utilizan para configurar funciones para esa familia de procesadores.
-
VMXON
es la instrucción (Intel) x86 para ingresar al modo de administración del hipervisor: el punto en el que obtiene acceso a las funciones de virtualización asistida por hardware, incluidas las tablas de páginas extendidas, etc. Aquí, crea máquinas virtuales y ejecuta vmenter
y vmexit
y así sucesivamente.
- Una excepción de protección general es un controlador de excepciones integrado en el procesador que ocurre cuando haces algo que no puedes hacer. Los ejemplos incluirían la ejecución de instrucciones privilegiadas fuera de un nivel privilegiado, por ejemplo, la instrucción
sidt
como una aplicación de modo de usuario (anillo 3).
Como puede ver en la documentación, los BIOS tienen la opción de habilitar o deshabilitar VMX y también pueden usar el bit de bloqueo; si se establece el bit de bloqueo, cualquier intento de escribir para alterar la configuración causará una excepción de GP.
Así que realmente depende de cómo esos bits son configurados por su BIOS, en respuesta a su pregunta. Si el BIOS establece todos los bits en 000, entonces el software debería poder habilitar el hipervisor a través de WRMSR
. Consulte la discusión aquí . Creo que WRMSR es una instrucción privilegiada, lo que significa que tendrías que hacerlo desde el núcleo. Sin embargo, una vez que se establece el bit de bloqueo, se requiere que reinicie (esencialmente, los circuitos comprobarán el estado del indicador de reinicio y luego lanzarán una excepción a su sistema operativo) que puede continuar como normal o fallar, dependiendo de si entiende la excepción (muy probablemente no).