Hot-Add Memory Support in Windows ServerUpdated: October 28, 2010 On x86-based and x64-based platforms platforms, some Windows Server editions support hot-add memory, which allows ranges of physical memory to be added to a running operating system without requiring a system reboot. This article describes how system manufacturers can take advantage of hot-add memory support in the following Windows Server editions:
On This Page
IntroductionHot-add memory minimizes a common source of server downtime: Requiring the server to be powered off and subsequently rebooted during memory upgrades. Hot-add memory allows ranges of physical memory to be added to a running operating system without requiring the system to be shut down. This allows an administrator to add memory to a running system to address existing or future needs for memory without incurring downtime for the system or applications. Starting with Windows Server 2003 Service Pack 1, Enterprise Edition and Datacenter Edition supports hot-add memory on both x64-based and Intel Itanium-based 64-bit platforms. Windows Server 2003, Enterprise Edition and Datacenter Edition support hot-add memory on x86-based ACPI platforms only. Hardware Support for Hot-Add MemoryTo support hot-add memory in hardware, system manufacturers must:
Hardware Mechanisms for Adding Physical Memory RegionsHot-add memory can be made available to the operating system by:
The operating system does not distinguish between memory modules that are physically added to a machine that is designed to support that operation, and memory that materializes within an operating system instance through some combination of service processor and management console technology. Describing Hot-Add Memory to the Operating SystemThe BIOS must describe hot-add memory accurately to the operating system by providing the following information:
Note: To support hibernate/resume successfully, the BIOS must perform the POST configuration of PCI devices on resume from hibernate as it did in the previous boot, even though there will be additional physical memory in the machine. Providing an SRATThe Static Resource Affinity Table (SRAT) indicates where memory might potentially be hot-added (or hot-removed). At a minimum, the SRAT must contain memory affinity structures that define which ranges of memory can be hot plugged. If the system does not have NUMA properties, the proximity ID of the all affinity structures should be set to 0. This information will be used to determine the size of data structures used by the operating system and to determine whether the loader should put the machine into PAE mode in anticipation of future hot-added memory with physical addresses above 4 GB. For information about the SRAT, see Static Resource Affinity Table. This white paper also contains an example showing how memory that can be hot plugged is described using the SRAT. Defining Memory Device ObjectsStarting with Windows Server 2003, Enterprise Edition and Datacenter Edition, the operating system supports the concept of describing memory as a device, as defined in section 10.12 of the ACPI 2.0 specification. The ACPI 2.0 memory device object represents ranges of physical memory. Representing memory as a device allows the operating system to use existing Plug and Play and ACPI mechanisms to detect specific memory ranges that have been added to the operating system instance. The ACPI 2.0 specification is available at Hot-add memory ranges must be described through ACPI 2.0 memory device objects. If memory ranges can be hot-added independently, they should be described by separate memory device objects. It is not necessary to support the full ACPI 2.0 namespace definition in order to define ACPI 2.0 memory device objects. ACPI memory device objects have the same semantics as other ACPI objects with the following exceptions:
The following example ASL code fragment defines an ACPI 2.0 memory device object that describes two memory regions:
Scope(\_SB){
Device(MEM0) {
Name(_HID, EISAID("PNP0C80"))
Name(_CRS, ResourceTemplate() {
QwordMemory(ResourceConsumer,
,
MinFixed,
MaxFixed,
Cacheable,
ReadWrite,
0xfffffff,
0x10000000,
0x2fffffff,
0,
,,)
QwordMemory(ResourceConsumer,
,
MinFixed,
MaxFixed,
Cacheable,
ReadWrite,
0xfffffff,
0x30000000,
0x3fffffff,
0,
,,)
}
}
}
Reporting Physical Memory at POSTThe BIOS must use the E820 mechanism to report any memory present in the system at POST, even if that memory is also described by an ACPI memory device object. This ensures platform compatibility with earlier operating systems, including Windows 2000. Memory described by the E820 mechanism can overlap memory described by an ACPI memory device object. The BIOS is not required to dynamically update the E820 information to reflect the hot-added memory. The operating system accesses E820 information only during bootstrap, so there is no benefit to having E820 calls to reflect memory that is hot-added after boot. Operating System Support for Hot-Add MemoryOperating system support for hot-add memory consists of the following:
When memory is hot added to the system, the following steps occur:
Call to ActionTo support hot-add memory in hardware on x86-based and x64-based systems, manufacturers should:
To ensure that hot -add memory hardware interoperates well with the supported editions of Windows Server, the Windows Development labs need an opportunity to test this feature on your platforms. Please contact Microsoft and provide test hardware as soon as possible so we can work together to ensure that hot add memory works well on your platform. For information about submitting hardware to Windows Development labs, write to wintrack@microsoft.com. Related InformationStatic Resource Affinity Table ACPI 2.0 Specification at |
|

