NVMe Self-Study Bank: HMB, CMB and PMR

NVMe · Q1–328

NVM Express Base 2.4NVM Command Set 1.3NVMe over PCIe Transport 1.4

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
FacilityLocation/useLifetime/evidence
HMBHost-provided controller bufferReclaim after successful disable
CMBController memory with advertised usesReinitialize under reset/CMSE rules
PMRFunction-provided persistent regionCheck 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

  1. Q223 · What problems do HMB, CMB and PMR solve?
  2. Q224 · How are HMB size and descriptor lists configured?
  3. Q225 · How are malformed HMB allocations handled?
  4. Q226 · How is HMB enabled, disabled and returned after reset?
  5. Q227 · What happens if the host prematurely reclaims HMB?
  6. Q228 · How are CMB location, size and uses discovered?
  7. Q229 · Which queues, buffers and lists may reside in CMB?
  8. Q230 · How are out-of-range or unsupported CMB uses handled?
  9. Q231 · Do CMB configuration and contents survive reset?
  10. Q232 · How is PMR discovered, enabled and made ready?
  11. Q233 · What happens for not-ready or unhealthy PMR accesses?
  12. Q234 · How is PMR safely disabled?
  13. Q235 · How do resets and power cycles affect PMR state and data?
  14. 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)

Back to questions

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)

Back to questions

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)

Back to questions

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

HMB ownership changes at disable completion

Submitting a disable request does not yet end controller access. Wait for completion before reclaiming memory.

  1. Enable succeeds → controller may use HMB

    Keep buffers, the descriptor list and mappings valid.

  2. Request EHM=0 → await a successful CQE

    Do not modify or reclaim memory still in use before successful completion.

  3. 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.

  4. 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)

Back to questions

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)

Back to questions

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)

Back to questions

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)

Back to questions

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)

Back to questions

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

TriggerEffect 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)

Back to questions

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

PMR has its own Enable and Ready

CSTS.RDY and CC.EN do not answer whether PMR is usable.

  1. Configure the required address space

    Establish supported BAR/controller mappings; check CBAI for an invalid controller base address.

  2. Set PMRCTL.EN=1

    PMR can be enabled with CC.EN=0, without first enabling NVMe command processing.

  3. 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.

  4. 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)

Back to questions

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)

Back to questions

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)

Back to questions

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

TriggerEffect 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)

Back to questions

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)

Back to questions

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.

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
Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...