Per citare Manuale del software Intel, Volume 3c :
VMXON is also controlled by the IA32_FEATURE_CONTROL MSR (MSR address 3AH).
This MSR is cleared to zero when a logical processor is reset. The relevant bits of the
MSR are:
- Bit 0 is the lock bit. If this bit is clear, VMXON causes a general-protection exception. If the lock bit is set, WRMSR to this MSR causes a general-protection exception; the MSR cannot be modified until a power-up reset condition. System BIOS can use this bit to provide a setup option for BIOS to disable support for VMX. To enable VMX support in a platform, BIOS must set bit 1, bit 2, or both(see below), as well as the lock bit.
- Bit 1 enables VMXON in SMX operation. If this bit is clear, execution of
VMXON in SMX operation causes a general-protection exception. Attempts to set
this bit on logical processors that do not support both VMX operation (see Section 23.6) and SMX operation (see Chapter 6, “Safer Mode Extensions Reference,” in Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B) cause general-protection exceptions.
- Bit 2 enables VMXON outside SMX operation. If this bit is clear, execution of VMXON outside SMX operation causes a general-protection exception. Attempts to set this bit on logical processors that do not support VMX operation (see Section 23.6) cause general-protection exceptions.
Interpretazione, per coloro che non sono fedeli a quello che sta succedendo qui:
- MSR è l'acronimo di registro specifico per macchina e fa riferimento a registri / impostazioni di configurazione che alterano tra le implementazioni dell'architettura x86.
- Alcuni di questi sono usati per configurare le funzionalità per quella famiglia di processori.
-
VMXON
è l'istruzione (Intel) x86 per entrare nella modalità di gestione dell'hypervisor - il punto in cui si ottiene l'accesso alle funzioni di virtualizzazione assistita hardware comprese le tabelle di pagine estese, ecc. Qui, si creano macchine virtuali e si esegue vmenter
e vmexit
e così via.
- Un'eccezione di protezione generale è un gestore di eccezioni incorporato nel processore che si verifica quando fai qualcosa che non ti è permesso fare. Gli esempi includono l'esecuzione di istruzioni privilegiate al di fuori di un livello privilegiato, ad es. l'istruzione
sidt
come applicazione in modalità utente (ring 3).
Come potete vedere dalla documentazione, i BIOS hanno la possibilità di abilitare o disabilitare VMX e possono anche usare il bit di blocco; se il bit di blocco è impostato, qualsiasi tentativo di scrittura di alterare la configurazione causerà un'eccezione GP.
Quindi in realtà dipende da come questi bit sono impostati dal BIOS, in risposta alla tua domanda. Se il BIOS imposta tutti i bit su 000, il software dovrebbe essere in grado di abilitare l'hypervisor tramite WRMSR
- consultare la discussione qui . Penso che WRMSR sia un'istruzione privilegiata, il che significa che dovresti farlo dal kernel. Tuttavia, una volta impostato il bit di blocco, è necessario riavviare - in sostanza il circuito controllerà lo stato del flag di ripristino, quindi genererà un'eccezione sul sistema operativo - che può continuare normalmente o in crash, a seconda che comprende l'eccezione (molto probabilmente no).