These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / nvdimm / Kconfig
diff --git a/kernel/drivers/nvdimm/Kconfig b/kernel/drivers/nvdimm/Kconfig
new file mode 100644 (file)
index 0000000..53c1162
--- /dev/null
@@ -0,0 +1,91 @@
+menuconfig LIBNVDIMM
+       tristate "NVDIMM (Non-Volatile Memory Device) Support"
+       depends on PHYS_ADDR_T_64BIT
+       depends on BLK_DEV
+       help
+         Generic support for non-volatile memory devices including
+         ACPI-6-NFIT defined resources.  On platforms that define an
+         NFIT, or otherwise can discover NVDIMM resources, a libnvdimm
+         bus is registered to advertise PMEM (persistent memory)
+         namespaces (/dev/pmemX) and BLK (sliding mmio window(s))
+         namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a
+         memory resource that may span multiple DIMMs and support DAX
+         (see CONFIG_DAX).  A BLK namespace refers to an NVDIMM control
+         region which exposes an mmio register set for windowed access
+         mode to non-volatile memory.
+
+if LIBNVDIMM
+
+config BLK_DEV_PMEM
+       tristate "PMEM: Persistent memory block device support"
+       default LIBNVDIMM
+       depends on HAS_IOMEM
+       select ND_BTT if BTT
+       select ND_PFN if NVDIMM_PFN
+       help
+         Memory ranges for PMEM are described by either an NFIT
+         (NVDIMM Firmware Interface Table, see CONFIG_NFIT_ACPI), a
+         non-standard OEM-specific E820 memory type (type-12, see
+         CONFIG_X86_PMEM_LEGACY), or it is manually specified by the
+         'memmap=nn[KMG]!ss[KMG]' kernel command line (see
+         Documentation/kernel-parameters.txt).  This driver converts
+         these persistent memory ranges into block devices that are
+         capable of DAX (direct-access) file system mappings.  See
+         Documentation/nvdimm/nvdimm.txt for more details.
+
+         Say Y if you want to use an NVDIMM
+
+config ND_BLK
+       tristate "BLK: Block data window (aperture) device support"
+       default LIBNVDIMM
+       select ND_BTT if BTT
+       help
+         Support NVDIMMs, or other devices, that implement a BLK-mode
+         access capability.  BLK-mode access uses memory-mapped-i/o
+         apertures to access persistent media.
+
+         Say Y if your platform firmware emits an ACPI.NFIT table
+         (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode
+         capabilities.
+
+config ND_CLAIM
+       bool
+
+config ND_BTT
+       tristate
+
+config BTT
+       bool "BTT: Block Translation Table (atomic sector updates)"
+       default y if LIBNVDIMM
+       select ND_CLAIM
+       help
+         The Block Translation Table (BTT) provides atomic sector
+         update semantics for persistent memory devices, so that
+         applications that rely on sector writes not being torn (a
+         guarantee that typical disks provide) can continue to do so.
+         The BTT manifests itself as an alternate personality for an
+         NVDIMM namespace, i.e. a namespace can be in raw mode (pmemX,
+         ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys,
+         etc...).
+
+         Select Y if unsure
+
+config ND_PFN
+       tristate
+
+config NVDIMM_PFN
+       bool "PFN: Map persistent (device) memory"
+       default LIBNVDIMM
+       depends on ZONE_DEVICE
+       select ND_CLAIM
+       help
+         Map persistent memory, i.e. advertise it to the memory
+         management sub-system.  By default persistent memory does
+         not support direct I/O, RDMA, or any other usage that
+         requires a 'struct page' to mediate an I/O request.  This
+         driver allocates and initializes the infrastructure needed
+         to support those use cases.
+
+         Select Y if unsure
+
+endif