Persistent Memory Documentation
HomePMDKNDCTLBlog
  • Persistent Memory Documentation
  • Getting Started Guide
    • Introduction
    • PMDK Introduction
    • NDCTL Introduction
    • System Requirements
    • Creating Development Environments
      • Linux Environments
        • Using the memmap Kernel Option
        • Advanced Topics
          • Partitioning Namespaces
          • I/O Alignment Considerations
      • Windows Environments
      • Virtualization
        • Windows Server Hyper-V
        • Using QEMU Virtualization
        • VMware VSphere/ESXi
      • Cloud Environments
        • Microsoft Azure Cloud
        • Google Cloud Platform (GCP)
    • Installing NDCTL
    • Installing PMDK
      • PMDK Directory Structure
      • Installing PMDK using Linux Packages
      • Installing PMDK from Source on Linux
      • Installing PMDK on Windows
  • IPMCTL User Guide
  • NDCTL User Guide
Powered by GitBook
On this page
  • Get Started
  • Supporting Documents
  1. Getting Started Guide

NDCTL Introduction

PreviousPMDK IntroductionNextSystem Requirements

Last updated 3 years ago

The Non-Volatile Device Control (ndctl) is a utility for managing the LIBNVDIMM Linux Kernel subsystem. The LIBNVDIMM subsystem defines a kernel device model and control message interface for platform NFIT (NVDIMM Firmware Interface Table). This interface was first defined by the . Later versions may enhance or modify this specification. The latest ACPI and UEFI specifications can be found at .

The LIBNVDIMM 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 v6.0 or later. While the LIBNVDIMM 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.

Operations supported by the tool include provisioning capacity (namespaces), as well as enumerating/enabling/disabling the devices (DIMMs, regions, namespaces) associated with an NVDIMM bus.

Get Started

To get started with the ndctl utility, follow the document then the and .

Supporting Documents

  • NDCTL Project Homepage:

  • LIBNVDIMM Documentation:

  • ACPI v6.0:

  • Latest ACPI & UEFI Specifications:

  • NVDIMM Namespace:

  • DSM Interface Specification (v1.8):

  • DSM Interface Example:

  • Driver Writer's Guide:

Source Code Repositories

LIBNVDIMM:

LIBNDCTL:

PMEM:

ACPI v6.0 specification
http://uefi.org/specifications
Installing NDCTL
NDCTL User Guide
man pages
http://pmem.io/ndctl/
https://www.kernel.org/doc/Documentation/nvdimm/nvdimm.txt
http://www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf
http://uefi.org/specifications
http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf
http://pmem.io/documents/NVDIMM_DSM_Interface-V1.8.pdf
http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
http://pmem.io/documents/NVDIMM_Driver_Writers_Guide.pdf
https://git.kernel.org/cgit/linux/kernel/git/djbw/nvdimm.git
https://github.com/pmem/ndctl.git
https://github.com/01org/prd