ACPI 6 Non-Volatile Memory Device Support / NFIT / LIBND For Linux
Written by Michael Larabel in Hardware on 21 May 2015 at 09:18 AM EDT. Add A Comment
The Linux kernel continues advancing on many hardware fronts, among which is support for ACPI 6.0 and the kernel is making the new LIBND subsystem for non-volatile memory device support.

Dan Williams and others (mainly at Intel Corp) have been spearheading the kernel's LIBND and NFIT code for supporting ACPI 6's NVDIMM Firmware Interface Table (NFIT) and registering NVDIMM (Non-Volatile Memory) resources and interfaces. The ACPI 6.0 specification adds persistent memory types of e820-type-7 and efi-type-14.

Version three of the libnd non-volatile memory device support patches were published on Wednesday and currently amount to 21 patches. There's been NVDIMM support already within the kernel but this is about supporting the new standards under the LIBND subsystem. The proposed kernel documentation explains, "Prior to the arrival of the NFIT, non-volatile memory was described to a system in various ad-hoc ways. Usually only the bare minimum was provided, namely, a single system-physical-address range where writes are expected to be durable after a system power loss. Now, the NFIT specification standardizes not only the description of PMEM, but also BLK and platform message-passing entry points for control and configuration."

The new Linux kernel LIBND subsystem is described as:
The LIBND subsystem provides support for three types of NVDIMMs, namely, PMEM, BLK, and NVDIMM devices that can simultaneously support both PMEM and BLK mode access. These three modes of operation are described by the "NVDIMM Firmware Interface Table" (NFIT) in ACPI 6. While the LIBND implementation is generic and supports pre-NFIT platforms, it was guided by the superset of capabilities need to support this ACPI 6 definition for NVDIMM resources. The bulk of the kernel implementation is in place to handle the case where DPA accessible via PMEM is aliased with DPA accessible via BLK. When that occurs a LABEL is needed to reserve DPA for exclusive access via one mode a time.
Assuming V3 addresses most of the outstanding issues, hopefully we'll see this ACPI 6 NVDIMM / LIBND code ready for the Linux 4.2 kernel.

Published in a separate patch series on Wednesday were more ACPI 6.0 patches for Linux. Those ACPI 6.0 patches include support for the STAO, XENV, NFIT, IORT, and WPBT tables of ACPI6 along with adustments to FADT, LPIT, DRTM, and MADT.

Those wanting to browse the ACPI 6.0 specification can find it hosted at
Related News
About The Author
Author picture

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter or contacted via

Popular News This Week