0

My setup:

  • Host runs Windows 11 24H2 Pro. It uses VirtualBox version 7.1.4 r165100 (Qt6.5.3).
  • Guest runs Kubuntu 24.04.1 LTS.

I see in VBox.log:

00:00:08.192929 HM: HMR3Init: Attempting fall back to NEM: VT-x is not available

What could cause this issue?


My diagnosis so far:

Franck Dernoncourt
  • 24,246
  • 64
  • 231
  • 400

1 Answers1

0

Background: NEM stands for Native Execution Mode. It is a fallback mode used by VirtualBox when VT-x (Intel Virtualization Technology) or AMD-V (AMD Virtualization) cannot be enabled due to system restrictions.

The issue is typically due to Hyper-V or some Windows security features.

I did these steps partly based on this virtualbox.org post:

  1. Disabled that Hyper-V service:

    enter image description here

  2. Ran in cmd as admin:

    bcdedit /set hypervisorlaunchtype off
    
  3. Disabled that policy:

    enter image description here

  4. Disables all core isolation features:

    enter image description here

    enter image description here

  5. Rebooted the laptop.

Then it worked:  VBox.log show it's using VT-x now instead of NEM.

00:00:06.534552 HM: HMR3Init: VT-x w/ nested paging and unrestricted guest execution hw support
00:00:07.822064 HM: Using VT-x implementation 3.0
00:00:07.822121 HM: VT-x/AMD-V init method: Local
[...]
00:00:07.822532 *********************** VT-x features ***********************
00:00:07.822533 Nested hardware virtualization - VMX features
00:00:07.822534   Mnemonic - Description                                  = guest (host)
00:00:07.822534   VMX - Virtual-Machine Extensions                        = 1 (1)
00:00:07.822534   InsOutInfo - INS/OUTS instruction info.                 = 1 (1)
00:00:07.822535   ExtIntExit - External interrupt exiting                 = 1 (1)
00:00:07.822535   NmiExit - NMI exiting                                   = 1 (1)
00:00:07.822535   VirtNmi - Virtual NMIs                                  = 1 (1)
00:00:07.822535   PreemptTimer - VMX preemption timer                     = 0 (1)
00:00:07.822536   PostedInt - Posted interrupts                           = 0 (1)
00:00:07.822536   IntWindowExit - Interrupt-window exiting                = 1 (1)
00:00:07.822536   TscOffsetting - TSC offsetting                          = 1 (1)
00:00:07.822537   HltExit - HLT exiting                                   = 1 (1)
00:00:07.822537   InvlpgExit - INVLPG exiting                             = 1 (1)
00:00:07.822537   MwaitExit - MWAIT exiting                               = 1 (1)
00:00:07.822537   RdpmcExit - RDPMC exiting                               = 1 (1)
00:00:07.822538   RdtscExit - RDTSC exiting                               = 1 (1)
00:00:07.822538   Cr3LoadExit - CR3-load exiting                          = 1 (1)
00:00:07.822538   Cr3StoreExit - CR3-store exiting                        = 1 (1)
00:00:07.822538   TertiaryExecCtls - Activate tertiary controls           = 0 (1)
00:00:07.822539   Cr8LoadExit  - CR8-load exiting                         = 1 (1)
00:00:07.822539   Cr8StoreExit - CR8-store exiting                        = 1 (1)
00:00:07.822539   UseTprShadow - Use TPR shadow                           = 1 (1)
00:00:07.822540   NmiWindowExit - NMI-window exiting                      = 1 (1)
00:00:07.822540   MovDRxExit - Mov-DR exiting                             = 1 (1)
00:00:07.822540   UncondIoExit - Unconditional I/O exiting                = 1 (1)
00:00:07.822540   UseIoBitmaps - Use I/O bitmaps                          = 1 (1)
00:00:07.822541   MonitorTrapFlag - Monitor Trap Flag                     = 0 (1)
00:00:07.822541   UseMsrBitmaps - MSR bitmaps                             = 1 (1)
00:00:07.822541   MonitorExit - MONITOR exiting                           = 1 (1)
00:00:07.822541   PauseExit - PAUSE exiting                               = 1 (1)
00:00:07.822542   SecondaryExecCtl - Activate secondary controls          = 1 (1)
00:00:07.822542   VirtApic - Virtualize-APIC accesses                     = 1 (1)
00:00:07.822542   Ept - Extended Page Tables                              = 1 (1)
00:00:07.822542   DescTableExit - Descriptor-table exiting                = 1 (1)
00:00:07.822543   Rdtscp - Enable RDTSCP                                  = 1 (1)
00:00:07.822543   VirtX2ApicMode - Virtualize-x2APIC mode                 = 0 (1)
00:00:07.822543   Vpid - Enable VPID                                      = 1 (1)
00:00:07.822544   WbinvdExit - WBINVD exiting                             = 1 (1)
00:00:07.822544   UnrestrictedGuest - Unrestricted guest                  = 1 (1)
00:00:07.822544   ApicRegVirt - APIC-register virtualization              = 0 (1)
00:00:07.822544   VirtIntDelivery - Virtual-interrupt delivery            = 0 (1)
00:00:07.822545   PauseLoopExit - PAUSE-loop exiting                      = 1 (1)
00:00:07.822545   RdrandExit - RDRAND exiting                             = 1 (1)
00:00:07.822545   Invpcid - Enable INVPCID                                = 1 (1)
00:00:07.822545   VmFuncs - Enable VM Functions                           = 0 (1)
00:00:07.822546   VmcsShadowing - VMCS shadowing                          = 0 (0)
00:00:07.822546   RdseedExiting - RDSEED exiting                          = 1 (1)
00:00:07.822546   PML - Page-Modification Log                             = 0 (1)
00:00:07.822546   EptVe - EPT violations can cause #VE                    = 0 (1)
00:00:07.822547   ConcealVmxFromPt - Conceal VMX from Processor Trace     = 0 (1)
00:00:07.822547   XsavesXRstors - Enable XSAVES/XRSTORS                   = 0 (1)
00:00:07.822547   PasidTranslate - PASID translation                      = 0 (0)
00:00:07.822548   ModeBasedExecuteEpt - Mode-based execute permissions    = 0 (1)
00:00:07.822548   SppEpt - Sub-page page write permissions for EPT        = 0 (0)
00:00:07.822548   PtEpt - Processor Trace address' translatable by EPT    = 0 (1)
00:00:07.822548   UseTscScaling - Use TSC scaling                         = 0 (1)
00:00:07.822549   UserWaitPause - Enable TPAUSE, UMONITOR and UMWAIT      = 0 (0)
00:00:07.822549   Pconfig - Enable PCONFIG                                = 0 (0)
00:00:07.822549   EnclvExit - ENCLV exiting                               = 0 (0)
00:00:07.822550   BusLockDetect - VMM Bus-Lock detection                  = 0 (0)
00:00:07.822551   InstrTimeout - Instruction timeout                      = 0 (0)
00:00:07.822551   LoadIwKeyExit - LOADIWKEY exiting                       = 0 (1)
00:00:07.822551   HLAT - Hypervisor-managed linear-address translation    = 0 (0)
00:00:07.822552   EptPagingWrite - EPT paging-write                       = 0 (0)
00:00:07.822552   GstPagingVerify - Guest-paging verification             = 0 (0)
00:00:07.822552   IpiVirt - IPI virtualization                            = 0 (0)
00:00:07.822552   VirtSpecCtrl - Virtualize IA32_SPEC_CTRL                = 0 (0)
00:00:07.822553   EntryLoadDebugCtls - Load debug controls on VM-entry    = 1 (1)
00:00:07.822553   Ia32eModeGuest - IA-32e mode guest                      = 1 (1)
00:00:07.822553   EntryLoadEferMsr - Load IA32_EFER MSR on VM-entry       = 1 (1)
00:00:07.822553   EntryLoadPatMsr - Load IA32_PAT MSR on VM-entry         = 1 (1)
00:00:07.822554   ExitSaveDebugCtls - Save debug controls on VM-exit      = 1 (1)
00:00:07.822554   HostAddrSpaceSize - Host address-space size             = 1 (1)
00:00:07.822554   ExitAckExtInt - Acknowledge interrupt on VM-exit        = 1 (1)
00:00:07.822555   ExitSavePatMsr - Save IA32_PAT MSR on VM-exit           = 1 (1)
00:00:07.822555   ExitLoadPatMsr - Load IA32_PAT MSR on VM-exit           = 1 (1)
00:00:07.822555   ExitSaveEferMsr - Save IA32_EFER MSR on VM-exit         = 1 (1)
00:00:07.822555   ExitLoadEferMsr - Load IA32_EFER MSR on VM-exit         = 1 (1)
00:00:07.822556   SavePreemptTimer - Save VMX-preemption timer            = 0 (1)
00:00:07.822556   SecondaryExitCtls - Secondary VM-exit controls          = 0 (0)
00:00:07.822556   ExitSaveEferLma - Save IA32_EFER.LMA on VM-exit         = 1 (1)
00:00:07.822556   IntelPt - Intel Processor Trace in VMX operation        = 0 (1)
00:00:07.822557   VmwriteAll - VMWRITE to any supported VMCS field        = 0 (1)
00:00:07.822557   EntryInjectSoftInt - Inject softint. with 0-len instr.  = 1 (1)
00:00:07.822557 
00:00:07.822557 ******************* End of VT-x features ********************

Note that it's likely that a subset of these instructions suffices to make it work.

Franck Dernoncourt
  • 24,246
  • 64
  • 231
  • 400