Lines Matching refs:a

18 	        libndctl: instantiate a new library context example
30 How Do I Determine the Major Type of a Region?
50 by a DIMM to access its media. This indirection precludes the
54 DPA: DIMM Physical Address, is a DIMM-relative offset. With one DIMM in
55 the system there would be a 1:1 system-physical-address:DPA association.
56 Once more DIMMs are added a memory controller interleave must be
57 decoded to determine the DPA associated with a given
58 system-physical-address. BLK capacity always has a 1:1 relationship
59 with a single-DIMM's DPA range.
62 mmap persistent memory, from a PMEM block device, directly into a
69 It defines a vendor-id, device-id, and interface format for a given DIMM.
74 table with atomic update semantics to front a PMEM/BLK block device
77 LABEL: Metadata stored on a DIMM device that partitions and identifies
80 Note that traditional partition tables, GPT/MBR, are layered on top of a
95 accessible via BLK. When that occurs a LABEL is needed to reserve DPA
96 for exclusive access via one mode a time.
113 Prior to the arrival of the NFIT, non-volatile memory was described to a
115 provided, namely, a single system-physical-address range where writes
116 are expected to be durable after a system power loss. Now, the NFIT
121 For each NVDIMM access method (PMEM, BLK), LIBNVDIMM provides a block
124 1. PMEM (nd_pmem.ko): Drives a system-physical-address range. This
136 aliasing is present and a DIMM lacks a label, then no block device can
141 2. BLK (nd_blk.ko): This driver performs I/O using a set of platform
147 The NFIT specification defines a standard format for a BLK-aperture, but
160 availability, and serviceability) model. An access to a corrupted
161 system-physical-address address causes a CPU exception while an access
162 to a corrupted address through an BLK-aperture causes that block window
163 to raise an error status in a register. The latter is more aligned with
165 Also, if an administrator ever wants to replace a memory it is easier to
166 service a system at DIMM module boundaries. Compare this to PMEM where
176 accessed in its entirety through its BLK-aperture. Accessing a DPA
177 through a system-physical-address while simultaneously accessing the
178 same DPA through a BLK-aperture has undefined results. For this reason,
179 DIMMs with this dual interface configuration include a DSM function to
180 store/retrieve a LABEL. The LABEL effectively partitions the DPA-space
182 regions. For simplicity a DIMM is allowed a PMEM "region" per each
183 interleave set in which it is a member. The remaining DPA space can be
192 BLK-namespace can be configured with a BTT with unique atomic sector
193 sizes. While a PMEM device can host a BTT the LABEL specification does
194 not provide for a sector size to be specified for a PMEM namespace.
198 guarantees it can register a BTT on a PMEM device or partition. See
209 (a) (b) DIMM BLK-REGION
226 by a region device with a dynamically assigned id (REGION0 - REGION5).
230 of DIMM0 and DIMM1 with a user-specified name of "pm0.0". Some of that
232 accessed space starting at DPA-offset (a) into each DIMM. In that
239 well as DIMM2 and DIMM3. Some of REGION1 is allocated to a PMEM namespace
259 What follows is a description of the LIBNVDIMM sysfs layout and a
266 Every API call in the LIBNDCTL library requires a context that holds the
271 LIBNDCTL: instantiate a new library context example
283 A bus has a 1:1 relationship with an NFIT. The current expectation for
347 The DIMM device provides a character device for sending commands to
348 hardware, and it is a container for LABELs. If the DIMM is defined by
355 be physical DIMMs, so we use a more generic name.
389 identified by an "nfit_handle" a 32-bit value where:
393 Bit 15:12 socket ID (within scope of a Node controller if node controller is present)
420 sets on the "nfit_test.0" bus. The primary role of regions are to be a
421 container of "mappings". A mapping is a tuple of <DIMM,
424 LIBNVDIMM provides a built-in driver for these REGION devices. This driver
436 the case where the region is defined by a SPA.
524 implementations. The exact distinction of what a region contains is in
527 2. A region with zero child-namespaces is a possible configuration. For
528 example, the NFIT allows for a DCR to be published without a
529 corresponding BLK-aperture. This equates to a DIMM that can only accept
530 control/configuration messages, but no i/o through a descendant block
534 3. What if a third major interface type arises in the future? Outside
535 of vendor specific implementations, it's not difficult to envision a
536 third class of interface type beyond BLK and PMEM. With a generic name
545 4. There are more robust mechanisms for determining the major type of a
546 region than a device name. See the next section, How Do I Determine the
547 Major Type of a Region?
549 How Do I Determine the Major Type of a Region?
559 decide which block-device driver will attach to a given LIBNVDIMM namespace.
561 important to note that this method is robust in the presence of a
562 vendor-specific driver down the road. If a vendor-specific
566 In fact, a vendor may also want to have a vendor-specific region-driver
567 (outside of nd_region). For example, if a vendor defined its own LABEL
570 accurate than a region-name or region-devtype.
589 ...and is available as a region attribute, but keep in mind that the
595 As it currently stands a BLK-aperture region will never have a
596 "nfit/spa_index" attribute, but neither will a non-NFIT PMEM region. A
597 BLK region with a "mappings" value of 0 is, as mentioned above, a DIMM
598 that does not allow I/O. A PMEM region with a "mappings" value of zero
599 is a simple system-physical-address range.
606 surfaces one or more "namespace" devices. The arrival of a "namespace"
608 and register a disk/block device.
611 Here is a sample layout from the three major types of NAMESPACE where
612 namespace0.0 represents DIMM-info-backed PMEM (note that it has a 'uuid'
613 attribute), namespace2.0 represents a BLK namespace (note it has a
615 PMEM namespace (note that has no 'uuid' attribute due to not support a
661 no guarantees in this regard. For a static namespace identifier use its
677 Idle namespaces are automatically created by the kernel if a given
678 region has enough available capacity to create a new namespace.
683 internally with a static identifier.
698 /* unlike pmem namespaces, blk namespaces have a sector size */
708 ND (libnvdimm subsystem) to a volume manager like device-mapper.
711 within a NVME controller (see the nvme specification:
720 A BTT (design document: http://pmem.io/2014/09/23/btt.html) is a stacked
721 block device driver that fronts either the whole block device or a
722 partition of a block device emitted by either a PMEM or BLK NAMESPACE.
743 region. Each time this "seed" btt device is configured and enabled a new
744 seed is created. Creating a BTT configuration involves two steps of
745 finding and idle BTT and assigning it to consume a PMEM or BLK namespace.
773 Once instantiated a new inactive btt seed device will appear underneath
776 Once a "namespace" is removed from a BTT that instance of the BTT device
778 only at the device model level. In order to destroy a BTT the "info
779 block" needs to be destroyed. Note, that to destroy a BTT the media
781 the presence of a BTT and disable raw mode. This autodetect behavior