Linux Audio

Check our new training course

Linux kernel drivers training

Mar 31-Apr 9, 2025, special US time zones
Register
Loading...
Note: File does not exist in v3.15.
  1# SPDX-License-Identifier: GPL-2.0-only
  2menuconfig LIBNVDIMM
  3	tristate "NVDIMM (Non-Volatile Memory Device) Support"
  4	depends on PHYS_ADDR_T_64BIT
  5	depends on HAS_IOMEM
  6	depends on BLK_DEV
  7	select MEMREGION
  8	help
  9	  Generic support for non-volatile memory devices including
 10	  ACPI-6-NFIT defined resources.  On platforms that define an
 11	  NFIT, or otherwise can discover NVDIMM resources, a libnvdimm
 12	  bus is registered to advertise PMEM (persistent memory)
 13	  namespaces (/dev/pmemX) and BLK (sliding mmio window(s))
 14	  namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a
 15	  memory resource that may span multiple DIMMs and support DAX
 16	  (see CONFIG_DAX).  A BLK namespace refers to an NVDIMM control
 17	  region which exposes an mmio register set for windowed access
 18	  mode to non-volatile memory.
 19
 20if LIBNVDIMM
 21
 22config BLK_DEV_PMEM
 23	tristate "PMEM: Persistent memory block device support"
 24	default LIBNVDIMM
 25	select DAX_DRIVER
 26	select ND_BTT if BTT
 27	select ND_PFN if NVDIMM_PFN
 28	help
 29	  Memory ranges for PMEM are described by either an NFIT
 30	  (NVDIMM Firmware Interface Table, see CONFIG_NFIT_ACPI), a
 31	  non-standard OEM-specific E820 memory type (type-12, see
 32	  CONFIG_X86_PMEM_LEGACY), or it is manually specified by the
 33	  'memmap=nn[KMG]!ss[KMG]' kernel command line (see
 34	  Documentation/admin-guide/kernel-parameters.rst).  This driver converts
 35	  these persistent memory ranges into block devices that are
 36	  capable of DAX (direct-access) file system mappings.  See
 37	  Documentation/driver-api/nvdimm/nvdimm.rst for more details.
 38
 39	  Say Y if you want to use an NVDIMM
 40
 41config ND_BLK
 42	tristate "BLK: Block data window (aperture) device support"
 43	default LIBNVDIMM
 44	select ND_BTT if BTT
 45	help
 46	  Support NVDIMMs, or other devices, that implement a BLK-mode
 47	  access capability.  BLK-mode access uses memory-mapped-i/o
 48	  apertures to access persistent media.
 49
 50	  Say Y if your platform firmware emits an ACPI.NFIT table
 51	  (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode
 52	  capabilities.
 53
 54config ND_CLAIM
 55	bool
 56
 57config ND_BTT
 58	tristate
 59
 60config BTT
 61	bool "BTT: Block Translation Table (atomic sector updates)"
 62	default y if LIBNVDIMM
 63	select ND_CLAIM
 64	help
 65	  The Block Translation Table (BTT) provides atomic sector
 66	  update semantics for persistent memory devices, so that
 67	  applications that rely on sector writes not being torn (a
 68	  guarantee that typical disks provide) can continue to do so.
 69	  The BTT manifests itself as an alternate personality for an
 70	  NVDIMM namespace, i.e. a namespace can be in raw mode (pmemX,
 71	  ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys,
 72	  etc...).
 73
 74	  Select Y if unsure
 75
 76config ND_PFN
 77	tristate
 78
 79config NVDIMM_PFN
 80	bool "PFN: Map persistent (device) memory"
 81	default LIBNVDIMM
 82	depends on ZONE_DEVICE
 83	select ND_CLAIM
 84	help
 85	  Map persistent memory, i.e. advertise it to the memory
 86	  management sub-system.  By default persistent memory does
 87	  not support direct I/O, RDMA, or any other usage that
 88	  requires a 'struct page' to mediate an I/O request.  This
 89	  driver allocates and initializes the infrastructure needed
 90	  to support those use cases.
 91
 92	  Select Y if unsure
 93
 94config NVDIMM_DAX
 95	bool "NVDIMM DAX: Raw access to persistent memory"
 96	default LIBNVDIMM
 97	depends on NVDIMM_PFN
 98	help
 99	  Support raw device dax access to a persistent memory
100	  namespace.  For environments that want to hard partition
101	  persistent memory, this capability provides a mechanism to
102	  sub-divide a namespace into character devices that can only be
103	  accessed via DAX (mmap(2)).
104
105	  Select Y if unsure
106
107config OF_PMEM
108	tristate "Device-tree support for persistent memory regions"
109	depends on OF
110	default LIBNVDIMM
111	help
112	  Allows regions of persistent memory to be described in the
113	  device-tree.
114
115	  Select Y if unsure.
116
117config NVDIMM_KEYS
118	def_bool y
119	depends on ENCRYPTED_KEYS
120	depends on (LIBNVDIMM=ENCRYPTED_KEYS) || LIBNVDIMM=m
121
122config NVDIMM_TEST_BUILD
123	tristate "Build the unit test core"
124	depends on m
125	depends on COMPILE_TEST && X86_64
126	default m if COMPILE_TEST
127	help
128	  Build the core of the unit test infrastructure. The result of
129	  this build is non-functional for unit test execution, but it
130	  otherwise helps catch build errors induced by changes to the
131	  core devm_memremap_pages() implementation and other
132	  infrastructure.
133
134endif