NVDIMM remains in read-write mode after backup power is removed in Windows Server, version 1903 and Windows Server 2019

Applies to: Windows Server, version 1903Windows Server 2019, all versions

Symptoms


If the battery backup unit (BBU) for a non-volatile dual inline memory module (NVDIMM) fails or becomes disconnected from the module while the module is in read/write mode, the module remains in read/write mode.

If the computer restarts while the BBU is not functioning, the restart pauses to display messages that resemble the following:

UEF10304: Unable to enable the NVDIMM-N Save operation because CPLD is not Armed. All NVDIMM-N modules will be set to write-protected mode.
Please verify that the battery is operational, the server has sufficient power to support this configuration, and that NVDIMM Write-Protect mode has not been enabled in BIOS Setup

UEF10304: Unable to enable the NVDIMM-N Save operation because Battery is not present. All NVDIMM-N modules will be set to write-protected mode.
Please verify that the battery is operational, the server has sufficient power to support this configuration, and that NVDIMM Write-Protect mode has not been enabled in BIOS Setup

However, when the computer finishes restarting, the NVDIMM modules are in read/write mode.

Cause


By design, Windows Server, version 1903 and Windows Server 2019 manage NVDIMM modules in a manner that differs from that of Windows Server 2016. In Windows Server 2016, if an NVDIMM module that is in read/write mode loses power, it goes into read-only mode. In Windows Server, version 1903 and Windows Server 2019, if an NVDIMM module that is in read/write mode loses power, it continues to function in read/write mode.

Resolution


To make Windows Server, version 1903 and Windows Server 2019 manage NVDIMM modules in the same manner as Windows Server 2016, configure or add the following registry entry.

  1. In Registry Editor, navigate to the following subkey:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\pmem
  2. Create the following registry entry (or configure it if it already exists):
    • Name: ReadOnlyOnPersistenceLoss
    • Type: REG_DWORD
    • Value: non-zero

This registry entry controls Windows Server behavior both during startup and during normal operations.