NVMe Self-Study Bank: HMB, CMB and PMR
NVMe · Q1–328
Q223–Q236
HMB, CMB and PMR
- HMB
- Host Memory Buffer
- CMB
- Controller Memory Buffer
- PMR
- Persistent Memory Region
Compare location, ownership, lifetime and persistence rather than treating all memory facilities alike.
Each question is followed by its explanation. Start with the volume overview, then follow the field interpretations, comparisons or processes. Essential conditions and the normal path are visible from the start. All numerical examples are hypothetical. Status is written SCT/SC; h indicates hexadecimal.
- SCT
- Status Code Type
Location, ownership and persistence
Retained addressing is not retained content; CQE success alone does not establish PMR persistence.
- CQE
- Completion Queue Entry
| Facility | Location/use | Lifetime/evidence |
|---|---|---|
| HMB | Host-provided controller buffer | Reclaim after successful disable |
| CMB | Controller memory with advertised uses | Reinitialize under reset/CMSE rules |
| PMR | Function-provided persistent region | Check readiness, health and write barriers |
Worked interpretation: HMB cannot be reused before disable; retained CMB addressing can still require content reinitialization; PMR has distinct persistence/health rules.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties)
Review the terminology when needed
- Controller / namespace
- A controller receives commands and manages access. A namespace is a logical storage space that commands can address. An NVM subsystem contains controllers and nonvolatile storage resources.
- SQ / CQ / SQE / CQE
- Submission and Completion Queues carry command entries (SQEs) and completion entries (CQEs). QID identifies a queue, CID distinguishes outstanding commands in one SQ, and NSID identifies a namespace.
- Register / Identify / Feature / Log
- A register exposes control or state. Identify queries capabilities and attributes; features query or configure operation; log pages report specific state or records. FID, LID, CNS and CSI select features, logs, Identify structures and command sets.
- index / offset / zero-based
- An index selects an entry, usually starting at 0; an offset measures distance from an origin in specified units. A zero-based count encodes count−1, but not every zero-valued field is a count. A Dword is 4 bytes; a byte is 8 bits.
- Scope / reset / retention
- Scope names the affected objects; retention means preserving state. Controller Reset (clearing CC.EN) is one form of Controller Level Reset, or CLR. Different CLR triggers can retain different registers.
Questions in this volume
- Q223 · What problems do HMB, CMB and PMR solve?
- Q224 · How are HMB size and descriptor lists configured?
- Q225 · How are malformed HMB allocations handled?
- Q226 · How is HMB enabled, disabled and returned after reset?
- Q227 · What happens if the host prematurely reclaims HMB?
- Q228 · How are CMB location, size and uses discovered?
- Q229 · Which queues, buffers and lists may reside in CMB?
- Q230 · How are out-of-range or unsupported CMB uses handled?
- Q231 · Do CMB configuration and contents survive reset?
- Q232 · How is PMR discovered, enabled and made ready?
- Q233 · What happens for not-ready or unhealthy PMR accesses?
- Q234 · How is PMR safely disabled?
- Q235 · How do resets and power cycles affect PMR state and data?
- Q236 · How do host memory, HMB, CMB and PMR lifetimes compare?
Q223 What problems do HMB, CMB and PMR solve?
Follow the explanation
Their memory location, user and persistence guarantees differ; identify those before placement.
1. What differs
HMB is host memory dedicated to the controller; CMB is controller memory for supported uses; PMR is directly accessible persistent memory.
HMB uses FID 0Dh descriptors; CMB uses address/control registers; PMR uses enable/readiness/health registers.
- FID
- Feature Identifier
2. How to choose and verify
Discover HMB through HMPRE, CMB through CAP/CMBSZ and PMR through CAP/PMRCAP.
Match the need: firmware host RAM, supported CMB SQ placement or persistent PMR data with barriers and health checks.
- SQ
- Submission Queue
Success means supported use within its constraints, not universal placement freedom.
3. Conditions that shape the comparison
Queue/list use in PMR is outside scope and may return Invalid Field; writable PMR is not interchangeable with CMB.
Compare support, configuration, access method and restored contents, not only readable bytes.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q224 How are HMB size and descriptor lists configured?
Follow the explanation
Multiple contiguous ranges form HMB; the descriptor list itself must be physically contiguous.
1. Establish the source and scope
The allocation is exclusive to one controller and unavailable for ordinary host writes while enabled.
Read preferred/minimum size, minimum descriptor size and maximum descriptors; size capability fields use 4 KiB units.
2. Fields, units and worked interpretation
HSIZE/BSIZE use CC.MPS pages; HMDLEC is a literal count, list address is 16-byte aligned and BADD page-aligned.
Pin memory, construct descriptors, reconcile sizes and enable with EHM=1, awaiting success.
Get verifies allocation; with hypothetical 8 KiB pages, HSIZE256 means 2 MiB.
3. Conditions that change the interpretation
Zero HMDLEC requires Invalid Field; exceeding usable descriptor limits may reduce utilization rather than force rejection.
Convert capability units before encoding HSIZE and verify readback.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q225 How are malformed HMB allocations handled?
Follow the explanation
Different fields have different rules; isolate one malformed condition at a time.
1. Distinguish the failure conditions
Check list structure, ranges and current enable state.
Zero entry count is Invalid Field; zero-size descriptors are ignored. The list address low four bits are treated as zero without a required check.
Re-enabling active HMB requires Command Sequence Error; unsupported HMNARE requires Invalid Field. Do not demand one status for every alignment defect.
2. Establish the cause from evidence
Check limits, HMBR, current EHM and submitted fields.
Separate specified format errors from inaccessible-memory transfer failures.
3. Outcome and follow-up checks
Valid allocation succeeds; out-of-limit allocation may be only partly used.
Match each condition to its rule, preserving ignore versus reject semantics.
First check whether multiple faults prevent a unique expected status.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q226 How is HMB enabled, disabled and returned after reset?
Follow the explanation
Explicit ownership transitions establish when memory may be reclaimed.
1. Prepare the operation
EHM controls use; MR describes whether returned contents are unchanged.
Read EHM/allocation rather than assuming pre-reset enablement persists.
EHM0 ignores CDW12–15; MR1 requires identical size, list address/content and buffer contents.
2. Sequence and completion conditions
Submitting a disable request does not yet end controller access. Wait for completion before reclaiming memory.
- Enable succeeds → controller may use HMB
Keep buffers, the descriptor list and mappings valid.
- Request EHM=0 → await a successful CQE
Do not modify or reclaim memory still in use before successful completion.
- Disable succeeds → host may reclaim or reconfigure
The controller must not access HMB until re-enabled. Disabling an already-disabled HMB succeeds without other action.
- Separate case: provide the configuration after reset
Reset is not required to disable HMB. After a reset, supply the retained or a new configuration; use MR=1 only when all return-memory conditions hold.
Compare the last HMB access, disable completion and host reclamation on one timeline.
- CQE
- Completion Queue Entry
3. Handle unmet conditions
Re-enable while enabled is a sequence error; claiming MR1 after modification violates the return premise.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q227 What happens if the host prematurely reclaims HMB?
Follow the explanation
It violates exclusive ownership and can expose or corrupt memory reassigned to another use.
1. Mechanism and scope
Damage may reach unrelated host data in reassigned physical pages.
Both descriptors and described ranges must remain intact; retaining only the list is insufficient.
2. Understand it through actions and results
Check EHM, disable completion and allocation/mapping lifetime.
Disable and await success before unmapping; failure recovery must end old accesses before reclamation.
After a valid handoff the old allocation is no longer accessed.
3. Avoid a misleading conclusion
Host misuse has no guaranteed detection or fixed status and may corrupt data; error logging is not protection.
Distinguish premature host reclamation from controller accesses after successful disable.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q228 How are CMB location, size and uses discovered?
Follow the explanation
Discover both host access and controller interpretation of command addresses.
1. Select the target and information
Its PCIe and controller address ranges may have different bases but matching offsets.
Check CAP.CMBS, enable CRE and read location/size; zero values with CRE0 do not prove absence.
BIR selects BAR, OFST locates the region and SZ×SZU determines size within BAR limits; support bits distinguish uses.
- BAR
- Base Address Register
2. Query sequence and interpretation
Configure a nonconflicting CBA, enable CMSE, check CBAI and initialize contents.
Both address views reach the same contents at matching offsets.
3. Handle missing or inconsistent evidence
Invalid CBA sets CBAI and prevents memory-space enablement; it is register state, not an Admin CQE.
Cross-check address bounds, units and use flags, not just capability presence.
First check confusion between BAR and configured controller addresses.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q229 Which queues, buffers and lists may reside in CMB?
Follow the explanation
Independent capability bits govern placement; SQ support does not imply CQ/data support.
- SQ
- Submission Queue
- CQ
- Completion Queue
1. Mechanism and scope
Restrictions apply to an entire queue, a command’s list or its data/metadata set.
CQMMS0 prohibits mixed queue placement; CQPDS0 requires contiguous queues. LISTS and related bits govern pointer-list placement and dependencies.
2. Understand it through actions and results
Inspect use flags and mixed-memory/discontiguous-list capabilities.
Select the object capability, then validate its combined placement constraints before allocating.
With hypothetical SQS1/CQS0, an SQ may use CMB while its CQ remains in host memory.
- CQ
- Completion Queue
3. Avoid a misleading conclusion
General misuse requires Invalid Use of CMB; placing lists with LISTS0 is explicitly undefined, not a fixed-status case.
Interpret RDS/WDS by command transfer direction.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q230 How are out-of-range or unsupported CMB uses handled?
Follow the explanation
Distinguish invalid mapping, misuse within a mapped CMB and addresses interpreted elsewhere.
1. Distinguish the failure conditions
CBA/size define the controller range; disabled CMSE routes addresses elsewhere.
CBA must not overflow the 64-bit address space or overlap enabled PMR space.
Mapping failure uses CBAI; misuse uses its specified status. Out-of-range addresses may resolve elsewhere and have no universal CMB-overrun status.
2. Establish the cause from evidence
Preserve mapping/status/capabilities and the full command range.
Calculate both range endpoints, resolve address spaces and check use/mixing rules.
3. Outcome and follow-up checks
Valid ranges and uses follow ordinary command processing.
Command outcomes and register status are separate evidence.
First check arithmetic overflow and which address space was used.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q231 Do CMB configuration and contents survive reset?
Follow the explanation
Mapping retention and data retention are distinct.
1. Identify the trigger and affected objects
CC.EN reset and FLR explicitly retain CMBMSC; other sources use their own register rules.
- FLR
- Function Level Reset
Snapshot source and registers, then reread after recovery.
2. State changes and recovery
CMSE0→1, Controller Reset and FLR make CMB contents undefined.
- FLR
- Function Level Reset
Restore mapping, initialize memory and rebuild queues, especially CQ phase bits.
A new lifetime uses initialized contents, not old queue state.
3. Checks across reset or power loss
| Trigger | Effect on this operation or state |
|---|---|
| What survives or continues after Controller Reset? | CC.EN reset and FLR retain CMBMSC but make CMB contents undefined. Reinitialize memory, especially CQ phases; retained addressing does not preserve valid queues/data. |
| What survives or continues after NVM Subsystem Reset? | Rediscover mappings and rebuild queues after subsystem reset; do not extend specific CC.EN/FLR retention to every reset source. |
| What survives or continues after a power cycle? | CMB has no PMR-style power-cycle persistence guarantee; reconfigure and initialize it. |
4. Verify retention and recovery
Identical residual bytes do not turn undefined retention into a guarantee.
Validate mappings and content/queue initialization separately.
First check whether unchanged CMBMSC incorrectly caused initialization to be skipped.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q232 How is PMR discovered, enabled and made ready?
Follow the explanation
PMR enablement is independent of the command controller and has its own readiness state.
1. Prepare the operation
PMR occupies the selected BAR region, with separately configurable controller addressing.
Check support, location, command access, barrier mechanisms and timeout units.
EN1 plus NRDY0 establishes readiness, with health/error checks still required.
2. Sequence and completion conditions
CSTS.RDY and CC.EN do not answer whether PMR is usable.
- Configure the required address space
Establish supported BAR/controller mappings; check CBAI for an invalid controller base address.
- Set PMRCTL.EN=1
PMR can be enabled with CC.EN=0, without first enabling NVMe command processing.
- Wait for PMRSTS.NRDY=0
Before judging the transition incomplete, the host should wait at least PMRTO×PMRTU, using the indicated minutes or 500 ms unit.
- Check HSTS, ERR and permitted use
Access only when enabled, ready, healthy and correctly mapped, and only for supported uses.
NRDY=1 means not ready. PMRTO is not an execution deadline for an arbitrary I/O command.
3. Handle unmet conditions
PMRTO is a transition wait allowance, not a per-command timeout; invalid addressing is reported by CBAI.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q233 What happens for not-ready or unhealthy PMR accesses?
Follow the explanation
Completion of an access does not establish valid contents without PMR status.
1. Distinguish the failure conditions
Direct accesses and commands using PMR buffers expose errors differently.
Not-ready reads can succeed with undefined data and writes can succeed without updating memory; health distinguishes restore failure, read-only and unreliable states.
Detected failure writing an associated PMR should produce Data Transfer Error for the command; direct accesses have no NVMe CQE.
2. Establish the cause from evidence
Inspect EN/NRDY/HSTS/ERR; HSTS clears when not ready, so zero alone does not prove usable health.
Establish readiness, access, then verify barriers/status and reconsider accesses since the last normal health observation.
3. Outcome and follow-up checks
A successful NVMe command targeting PMR does not alone prove the PMR write succeeded.
Validate command success and PMR health separately.
First inspect readiness at access time, not merely after later recovery.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q234 How is PMR safely disabled?
Follow the explanation
Establish completion and persistence before disabling rather than assuming in-flight writes are safe.
1. Prepare the operation
Coordinate direct users and commands still using PMR buffers.
Check supported barriers, health and transition wait units.
Use the advertised PMR-read or PMRSTS-read barrier, not an arbitrary register read.
2. Sequence and completion conditions
Stop accesses, drain users, perform the supported barrier/health check, clear EN and wait for NRDY1.
NRDY1 indicates disabled readiness for re-enable; valid persistent content is not made undefined as CMB would be.
3. Handle unmet conditions
Successful disable cannot prove earlier data valid when error/health state says otherwise.
Verify barrier/health and enable-state ordering, not only final EN0.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q235 How do resets and power cycles affect PMR state and data?
Follow the explanation
Persistence and current accessibility differ; restoration can leave retained data temporarily unavailable.
1. Identify the trigger and affected objects
Retention applies to completed persistent writes, not unverified in-flight writes.
Preserve barrier evidence and inspect enable/readiness/health/mapping after recovery.
2. State changes and recovery
Restore Error means current normal persistent operation with possibly incorrect restored content, unlike ongoing Unreliable status.
Restore readiness, inspect health and verify content, accounting separately for Sanitize.
Qualified persistent data survives CLR, disable and power cycle; register retention remains source-specific.
3. Checks across reset or power loss
| Trigger | Effect on this operation or state |
|---|---|
| What survives or continues after Controller Reset? | Ready-state persistent data survives CLR. CC.EN reset also retains PMR control/status registers; inspect health and Restore Error nonetheless. |
| What survives or continues after NVM Subsystem Reset? | Recheck enable/readiness and HSTS after subsystem reset. Data persistence differs from register restoration; Restore Error questions restored contents. |
| What survives or continues after a power cycle? | Confirmed persistent writes survive power cycles, subject to restored health checks. Sanitize can purge PMR and is distinct from ordinary power-loss behavior. |
4. Verify retention and recovery
Nonzero ERR persists until PCI Function reset; clearing CC.EN does not necessarily clear it.
Verify data, registers and errors as separate requirements.
First distinguish persistent-data loss from incomplete writes or premature reads.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Q236 How do host memory, HMB, CMB and PMR lifetimes compare?
Follow the explanation
Equal-looking data addresses can have different owners, initialization duties and reclamation conditions.
1. What differs
Ordinary host buffers are command-scoped; HMB is controller-exclusive; CMB is device-local; PMR adds persistence mechanisms.
Reclaim ordinary buffers by command/queue lifetime, HMB after disable, initialize CMB after reset and verify PMR barriers/health.
2. How to choose and verify
Use capabilities and command pointers to identify the actual space.
Map host/controller addresses to physical memory and mark access/reclamation boundaries.
A Write completion can end source-buffer use without releasing HMB or performing a PMR barrier.
3. Conditions that shape the comparison
Error outcomes depend on the violated interface, not one universal memory-error status.
Verify ownership, mapping, completion and persistence rather than merely readable contents.
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations for this question
Sources: Base 2.4 §5.2.30.2.3, 8.2.4 · Base 2.4 §8.2.1 (memory placement and lifetime) · Base 2.4 §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS) · Base 2.4 §8.2.5 (memory behavior; exclude PCIe packet detail) · Base 2.4 §3.1.4 (PMR properties) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Source locations and existing figure guides
Base printed page = PDF page−26; the other two use identical numbers. Locations follow the supplied PDF body and retain figure numbers. Shared pages contribute only the relevant definitions, excluding Fabrics and PCIe link/packet content.
- Base 2.4 · §3.1.4 (CMBLOC, CMBSZ, CMBMSC, CMBSTS)
Printed pages 67–69, 70–72 · PDF 93–95, 96–98 · Figure 47–48, 52–55 - Base 2.4 · §3.1.4 (PMR properties)
Printed pages 73–77 · PDF 99–103 · Figure 58–64 - Base 2.4 · §3.7.1–3.7.4
Printed pages 120–124 · PDF 146–150 - Base 2.4 · §4.2.3
Printed pages 145–155 · PDF 171–181 · Figure 101–105 - Base 2.4 · §5.2.2
Printed pages 183–190 · PDF 209–216 · Figure 150–156 - Base 2.4 · §5.2.13.1.2
Printed pages 218–220 · PDF 244–246 · Figure 212 - Base 2.4 · §5.2.13.1.14 (header, reset, hardware, Set Feature events)
Printed pages 244–256, 258, 262–264 · PDF 270–282, 284, 288–290 · Figure 232–244, 246, 252–253 - Base 2.4 · §5.2.14.2.1
Printed pages 340–387 · PDF 366–413 · Figure 338–341 - Base 2.4 · §5.2.30.2.3, 8.2.4
Printed pages 515–519, 744 · PDF 541–545, 770 · Figure 545–553 - Base 2.4 · §8.2.1 (memory placement and lifetime)
Printed pages 742–744 · PDF 768–770 - Base 2.4 · §8.2.5 (memory behavior; exclude PCIe packet detail)
Printed pages 745–746 · PDF 771–772
When you need a field guide
Existing figure explanations have canonical locations; use these links instead of duplicating the same guide.
- Base 2.4 Figure 101 · Completion Queue Entry: Status Field
- Base 2.4 Figure 104 · Status Code – Command Specific Status Values
- Base 2.4 Figure 338 · Identify – Identify Controller Data Structure, I/O Command Set Independent
Original documents used
- NVM Express Base Specification · Revision 2.4 · 2026-07-31
NVM-Express-Base-Specification-Revision-2.4-Ratified-2026.07.31.pdf - NVM Express NVM Command Set Specification · Revision 1.3 · 2026-07-31
NVM-Express-NVM-Command-Set-Specification-Revision-1.3-Ratified-2026.07.31.pdf - NVM Express NVMe over PCIe Transport Specification · Revision 1.4 · 2026-07-31
NVM-Express-NVMe-over-PCIe-Transport-Specification-Revision-1.4-Ratified-2026.07.31.pdf


Comments