PAE/NX/SSE2 Support Requirement Guide for Windows 8 June 13, 2012 Abstract This document details the processor support for the PAE/NX/SSE2 requirement in Windows 8, error cases and scenarios that customers encounter when machines fail to meet the requirement, and what to do to install Windows 8 on their PCs. This information applies to the following operating systems: Windows 8 Windows Server 2012 References and resources discussed here are listed at the end of this paper. The current version of this paper is maintained on the Web at: PAE/NX/SSE2 Support Requirement Guide for Windows 8 Disclaimer: This document is provided “as-is”. Information and views expressed in this document, including URL and other Internet website references, may change without notice. Some information relates to prereleased product which may be substantially modified before it’s commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here. You bear the risk of using it. Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 2 Contents Overview ........................................................................................................................ 3 NX ............................................................................................................................... 3 PAE ............................................................................................................................. 3 SSE2 ............................................................................................................................ 4 Scope of Implications ..................................................................................................... 4 Support Requirements ................................................................................................... 4 Windows 8 Logo Requirement................................................................................... 5 Hardware Compatibility Check in Windows Setup .................................................... 5 Kernel Enhancement.................................................................................................. 6 FAQ ................................................................................................................................. 6 How do I know if my system supports NX or SSE2? .................................................. 6 If NX is supported on my system, how do I turn on NX? ........................................... 8 What should I do when Windows 8 failed to install on a VM with error 0x0000260?8 June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 3 Overview No-eXecute (NX) is a processor feature that allows marking of memory pages as nonexecutable. The feature allows the CPU to help guard the system from attacks by malicious software. When the NX feature is enabled on a system, it prevents malicious software code from being placed in accessible regions of memory to be executed when control reaches that memory location. Windows 8 requires that systems must have processors that support NX, and NX must be turned on for important security safeguards to function effectively and avoid potential security vulnerabilities. Streaming SIMD Extensions 2 (SSE2) is a previous standard that is supported in Intel and AMD processors. All processors that support NX also support SSE2. Many Windows 8 applications have code paths with the SSE2 instruction set. Performance optimizations in the latest versions of Visual Studio are enhanced to generate SSE2 instructions by default. To prevent these applications from crashing when running on a system without SSE2 support, the SSE2 support requirement is also enforced in Windows 8. NX The term "NX" referred to in this document is defined as the NX processor bit defined by AMD, or the equivalent XD processor bit defined by Intel for the Data Execution Prevention (DEP) feature support in Microsoft Windows. The DEP support was first introduced in Windows XP SP2 and Windows Server 2003 SP1 to help prevent malicious code execution from data pages. The 32-bit version of Windows uses one of the following for DEP support features: The AMD-defined No-eXecute (NX) page protection processor feature The Intel-defined eXecute Disable (XD) bit feature To use these processor features, the x86 (32-bit) processor must be running in Physical Address Extension (PAE) mode. The 64-bit version of Windows uses the NX processor feature on 64-bit extensions and certain values of the access rights Page Table Entry (PTE) field on Intel’s Itanium Processor Family (IPF) processors. Other than DEP, another defensive enhancement introduced in Windows XP SP2 and Windows Server 2003 SP1 is the Address Space Layout Randomization (ASLR). ASLR moves executable images into random locations when a system boots, making it harder for malicious code to operate predictably. ASLR and DEP are only effective when they are used together. NX must be enabled for these two important Windows security safeguards to remain effective. More details can be referenced at Windows ISV Software Security Defenses. PAE As described in previous section, to use the NX processor feature, the processor must be running in Physical Address Extension (PAE) mode. PAE is a processor feature that enables x86 processors to access more than 4 GB of physical memory on capable versions of Windows. The Intel Itanium and x64 processor architectures can access June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 4 more than 4 GB of physical memory natively, and do not provide the equivalent of PAE. PAE is supported only by 32-bit versions of Windows running on x86-based systems. PAE is automatically enabled when DEP is enabled on a system with a processor that supports the NX feature. SSE2 Streaming SIMD Extensions 2 (SSE2) is one of the Intel Single Instruction Multiple Data (SIMD) processor supplementary instruction sets initially introduced with Pentium 4 in 2001. AMD also added the SSE2 support with Opteron and Athlon 64 ranges of AMD64 processors in 2003. All processors that support NX also support SSE2, and SSE2 is also a requirement for Windows 8. Scope of Implications NX has been supported in x86 and x64 processors since Windows XP SP2 and Windows Server 2003 SP1. All modern processors support NX. NX can be turned off in the BIOS. Based on available telemetry data, it is believed that 1% of the systems of the Windows 7 population are running with NX off due to misconfiguration in the BIOS setting. NX requires PAE-capable processors on 32-bit version of Windows. All 64-bit processors support NX, as they are Address Windowing Extensions (AWE) aware. Therefore, the issue of old 32-bit processors that are not PAE-capable has no WOA implications or Windows Server (Windows Server 2012 is 64-bit only) implications. The processor requirement won't impact customers on modern systems, or on systems that meet logo requirements for Windows 7 because these systems have PAE-capable 32-bit processors that support NX and allow NX to be turned on. Only a small set of customers who have Windows 7 running on very old 32-bit processors without PAE/NX support will be impacted. Windows 8 Consumer Preview and Windows Server 2012 Beta were released with the requirement for PAE, which impacted a small number of customers with old hardware that did not support PAE. Many of these installation failures occurred when installing Windows 8 on misconfigured Virtual Machines (VMs). Windows Setup would fail the installation with error 0xc0000260 and roll back to Windows 7. Visual Studio 2010 started emitting SSE2 instructions by default since its release. Applications that hit those code paths would crash on systems with old processors that do not support SSE2 as described in SSE2 instructions generated when /arch:SSE is specified. The CLR in Windows 8 Consumer Preview and Windows Server 2012 Beta was emitting SSE2 instructions, while Windows Setup would allow the installation on a system with old processor that does not support SSE2. In this case, applications, as simple as running the Computer Management task, could easily hit those code paths and crash. Support Requirements This section details the measurements that we have taken to ensure processors on systems running Windows 8 meet the PAE, NX, and SSE2 support requirements. June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 5 Windows 8 Logo Requirement It is a Windows 8 Hardware Certification Requirement that all drivers must operate normally with Execution Protection to ensure proper device and driver behavior in systems. Drivers must not execute code out of the stack, paged pool, and session pool. Drivers must not fail to load when PAE mode is enabled. In addition, the system firmware must have NX on and DEP policy must not be set to Always Off. A certification test was added to certify a given system meeting this NX support requirement. Refer to Windows 8 Hardware Certification Requirements for more details. Hardware Compatibility Check in Windows Setup Windows Setup is enhanced to add hardware compatibility check for PAE, NX, and SSE2 support on the install system. Systems that failed the requirement of processor support for PAE, NX, and SSE2 are reported as hard blocks for Windows 8 in the compatibility issue report with the message “Your PC's CPU isn't compatible with Windows 8.” Note that this support requirement check is only available in new Windows Setup and Upgrade Assistant. Windows 8 includes an alternate version of Windows setup in the sources folder of the installation media that does not include this check. Customers who attempt to use this alternate version of Windows Setup on a system that does not meet the PAE/NX/SSE2 support requirements will encounter an error during the Setup process and roll back to their previous operating system. June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 6 Also, in the case of boot from media or network installation such as Windows Deployment Services (WDS) installation, there is no compatibility check during Windows Setup. For such scenarios, a system without NX or SSE2 support will result in bugcheck described in Kernel Enhancement, when Setup attempts the first boot of Windows. Kernel Enhancement To align with the requirement that Windows 8 systems must have NX feature and SSE2 instructions support, the Windows 8 kernel is enhanced to check for the presence of these features during initialization. All systems that do not support NX or SSE2 will no longer be able to initialize a Windows 8 kernel. Systems that can disable NX in firmware will have that option overridden, so any misconfigured firmware will not cause boot to fail. Attempting to boot a system without NX or SSE2 support will result in bugcheck. Users will get the UNSUPPORTED_PROCESSOR code (0x0000005D) along with four lines of information on a 32-bit system: Line 1 – a code indicating a feature is missing and an identifier for the CPU Line 2-4 – Vendor ID strings On a 64-bit system, the bugcheck shows the same UNSUPPORTED_PROCESSOR code as on a 32-bit system along with four different lines of information: Line 1 – the contents of the standard features register Line 2 – the contents of the extended features register Line 3-4 – both 0 FAQ How do I know if my system supports NX or SSE2? You can use the Coreinfo command-line utility to get the processor information on your system and review PAE, NX, and SSE2 entries in the output list. A supported processor feature will have the * character displayed next to the feature name, and a - character if not supported. For example: June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 7 Coreinfo v3.04 - Dump information on system CPU and memory topology Copyright (C) 2008-2012 Mark Russinovich Sysinternals - www.sysinternals.com AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ x86 Family 15 Model 75 Stepping 2, AuthenticAMD HTT * Hyperthreading enabled HYPERVISOR Hypervisor is present VMX Supports Intel hardware-assisted virtualization SVM * Supports AMD hardware-assisted virtualization EM64T * Supports 64-bit mode SMX SKINIT EIST - Supports Intel trusted execution Supports AMD SKINIT Supports Enhanced Intel Speedstep NX PAGE1GB PAE PAT PSE PSE36 PGE SS VME * * * * * * * Supports no-execute page protection Supports 1 GB large pages Supports > 32-bit physical addresses Supports Page Attribute Table Supports 4 MB pages Supports > 32-bit address 4 MB pages Supports global bit in page tables Supports bus snooping for cache operations Supports Virtual-8086 mode FPU MMX MMXEXT 3DNOW 3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 …….. …….. * * * * Implements i387 floating point instructions Supports MMX instruction set Implements AMD MMX extensions Supports 3DNow! instructions * Supports 3DNow! extension instructions Supports Streaming SIMD Extensions Supports Streaming SIMD Extensions 2 Supports Streaming SIMD Extensions 3 Supports Supplemental SIMD Extensions 3 Supports Streaming SIMD Extensions 4.1 Supports Streaming SIMD Extensions 4.2 * * * - If PAE is displayed as not supported in Coreinfo output, your system has a processor that is not PAE-capable, and cannot support NX. If PAE is shown as supported, but NX is displayed as not supported in Coreinfo output: Consult the feature set published by the CPU manufacturer to determine if NX is supported by the processor on your system. If the processor on your system does have the NX support, then your system may have misconfigured BIOS setting for NX support option. June 13, 2012 © 2012 Microsoft. All rights reserved. PAE/NX/SSE2 Support Requirement Guide for Windows 8 - 8 If NX is supported on my system, how do I turn on NX? On a system that has the NX support, you can refer to the manufacturer’s guide for your system to go into the BIOS settings option and look for the NX or XD settings under the Security tab to turn on the NX support. If the BIOS setting for the NX support option is not available on your system, you may need to contact the manufacturer for updating the BIOS. Note that on a 64-bit system, if NX is supported by the system, the system configuration settings do not allow setting DEP policy to Always Off. More information about system-wide configuration of DEP can be referenced in A detailed description of the Data Execution Prevention (DEP) feature in Windows XP Service Pack 2, Windows XP Tablet PC Edition 2005, and Windows Server 2003. Starting with Windows 8 Release Preview, processors on a system must support NX and SSE2 for the system to boot successfully. If your system has the support but the settings are misconfigured, the options will be overridden before kernel boots up the system. This kernel enhancement is not available in Windows 8 prior to the Release Preview. What should I do when Windows 8 failed to install on a VM with error 0x0000260? If the Virtual Machine (VM) is hosted on a system that supports NX, you must enable PAE/NX in the virtualization product’s settings or configuration manager when setting up the Windows 8 virtual environment. Refer to the user or system guide of the virtualization product you are using for instructions of enabling PAE/NX for the VM. Note that if you tried to install Windows 8 on the VM hosted on a system running a previous version of Windows with NX disabled, you must follow the instructions described in How Do I Know if My System Supports NX or SSE2? and IF NX Is Supported on My System, How Do I Turn on NX? to enable NX on the system before PAE/NX can be enabled for the VM. June 13, 2012 © 2012 Microsoft. All rights reserved.