The VM is created as usual and the ISO is attached from the datastore.
During boot the option to press any key to boot is selected. Windows Icon appears as if its about to boot to windows install then the VM reboots and goes into a loop eventually ending up at EFI timeout.
vSphere 7.x and 8.x
This is a known issue with Windows 2025. This version requires a minimum CPU generation in order for it to boot/install.
If EVC is enabled and it is masking more than what the Windows 2025 guest OS needs for it to run, this issue occurs.
For example, a cluster with Ice Lake CPU hosts using EVC that sets the cluster to a baseline that is below what Windows 2025 needs for that particular guest OS to run, will not allow these VMs to be deployed.
Sample log entries:
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - [msg.Backdoor.OsNotFound] No operating system was found. If you have an operating system installation disc, you can insert the disc into the system's CD-ROM drive and restart the virtual machine.
# Here we can see the EVC Masking:
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - FeatureCompat: EVC masks:
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.STEPPING - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.Intel - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.MODEL - Val:0xf
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.maxTextureAnisotropy - MinVal:0x10
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.LM - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.NUM_EXT_LEVELS - Val:0x80000008
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.MWAIT - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.maxPointSize - MinVal:0x3f
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.logicOps - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.FAMILY - Val:6
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.sm41 - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.dxMaxConstantBuffers - MinVal:0xe
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.maxTextureSize - MinVal:0x2000
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.lineStipple - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.SSSE3 - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.SSE3 - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.NX - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.SS - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.maxVolumeExtent - MinVal:0x800
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.DS - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.multisample4x - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.LAHF64 - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.multisample2x - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.supports3D - MinVal:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.CMPXCHG16B - Val:1
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: svga.baseCapsLevel - MinVal:7
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Feature: cpuid.NUMLEVELS - Val:0xa
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - Masking Unknown Feature: Max:0
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - hostCPUID vendor: GenuineIntel
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - hostCPUID family: 0x6 model: 0x6a stepping: 0x6
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vmx - hostCPUID codename: Ice Lake SP
# Here we see the guest reboot and then Triple Fault and say the virtual cpu entered the shutdown state.
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - VMXNET3 user: Ethernet0 RSS fields requested by vmx: 3
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-1 - CPU reset: soft (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-2 - CPU reset: soft (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-3 - CPU reset: soft (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - Guest: Firmware has transitioned to runtime.
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05)+ vcpu-0 -
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - Triple fault.
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - MsgHint: msg.monitorEvent.tripleFault
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05)+ vcpu-0 - A fault has occurred causing a virtual CPU to enter the shutdown state. If this fault had occurred outside of a virtual machine, it would have caused the physical machine to restart. The shutdown state can be reached by incorrectly configuring the virtual machine, a bug in the guest operating system, or a problem in VMware ESX.---------------------------------------
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - CPU reset: hard (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-1 - CPU reset: hard (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-2 - CPU reset: hard (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-3 - CPU reset: hard (mode Emulation)
YYYY-MM-DDTHH:MM:SS.SSSSZ In(05) vcpu-0 - Chipset: The guest has requested that the virtual machine be hard reset.
From Microsoft's documentation, the minimum processors for Windows Server 2025 is:
Windows Server 2025 Second through Fifth Gen Xeon SP processors (x2xx, x3xx, x4xx, x5xx); Xeon 6 SP Processors (67xxE, 67xxP, 65xxP, 63xxP); Xeon E 23xx and 24xx; Xeon D 17xx, 18xx, 21xx, 27xx, 28xx; Pentium G7400 and G7400T
As reference, see:
https://learn.microsoft.com/en-us/windows-hardware/design/minimum/windows-processor-requirements
To be able to boot the VM choose one of the following options:
1. For the VM to run in the current cluster, disabling EVC mode exposes all the CPU feature set of the hardware processors of the hosts (in this example, Ice Lake processors)
or
2. Power on that VM on a different cluster or host with similar physical processors above the minimum required by Windows 2025.