NVMe Self-Study Bank: Get Log Page and data consistency

NVMe · Q1–328

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

Q69–Q81

Get Log Page and data consistency

Logs expose state, history or capability, with different lifetimes and read effects. Choose the view and scope before length, pagination, acknowledgment and consistency.

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

Four separate questions when reading logs

Choose the evidence first; a successful read does not complete the operation being observed.

Evidence neededViewLimitation
Supported logsLID 00hSupport does not imply a current event
Current healthSMART LID 02hCurrent warnings and lifetime counters differ
Command error detailsError LID 01hCorrelate identity; old entries can disappear
Persistent event historyPEL LID 0DhCapacity and supported-event limits remain
LID
Log Page Identifier

Worked interpretation: A 4096-byte read encodes NUMD1023. The next byte offset is 4096, but index-offset logs require their own entry progression.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.13.1.14–5.2.13.1.14.2.5 (exclude PCIe link/packet decoding)

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. Q69 · What does Supported Log Pages provide, and how should support be checked before reading another log?
  2. Q70 · What do Error Information and SMART/Health Information record?
  3. Q71 · What do Firmware Slot, Changed Namespace and Commands Supported and Effects logs establish?
  4. Q72 · When should Device Self-test, Persistent Event and Sanitize Status logs be used?
  5. Q73 · What do Endurance Group, Predictable Latency, Lockdown, Boot Partition and Media Unit Status logs contain?
  6. Q74 · How should NSID and other selectors follow a log’s scope?
  7. Q75 · How are large logs read in chunks, including offsets, lengths, overlaps and gaps?
  8. Q76 · What are LSI, UUID Index and Retain Asynchronous Event used for?
  9. Q77 · How can a host detect inconsistent log chunks when content changes?
  10. Q78 · How are old records handled when Error Information or PEL reaches capacity?
  11. Q79 · Which log data survives controller reset, subsystem reset or power cycling?
  12. Q80 · How should advertised log/command support be checked against actual behavior?
  13. Q81 · How does Commands Supported and Effects describe opcode support and impact?

Q69 What does Supported Log Pages provide, and how should support be checked before reading another log?

Task: discover Sanitize Status support and whether it accepts index offsets. Locate the target directory entry, then read support and offset capabilities separately.

Follow the explanation

Supported Log Pages is a directory of LIDs and index-offset support on the current interface. It distinguishes lack of support from zero-valued data. Reading it is a discovery method, not a mandatory command before every log request.

1. Select the target and information

Results describe the receiving interface and controller. Interfaces can differ; with CC.CSS=110b, CSI and the enabled command-set profile also affect support. Another interface’s directory is not interchangeable.

CSI
Command Set Identifier

Use LID 00h. LPA.MLPS=1 guarantees Supported Log Pages, while MLPS=0 may still provide it and does not negate all logs. Figure 338 LPA.LPEDS bit 2 describes extended offsets/length; per-LID LSUPP and IOS describe log support and index-offset support.

Worked lookup: log support versus permitted read modes

Assume one PCIe Admin interface, CC.CSS=000b, UUID Index 0, MLPS=1 and LPEDS=1. Discover Sanitize Status LID 81h, not Sanitize Namespace opcode 8Ch.

Step and source locationInformation to retrieveWhat this establishes
1 · §5.2.13.1.1/Figure 210, printed 217/PDF 243Get Log Page with LID 00h, NSID 0, NUMDL=00FFh, NUMDU=0, LPO=0, OT=0 and RAE=0.Retrieves 256 four-byte entries (1024 bytes), not a declaration that every LID is supported.
2 · Figure 210, printed 217/PDF 243LID 81h=129 selects offset 4×129=516=204h and bytes 516–519.Index by LID; an opcode or FID with the same numeric value is a different identifier.
3 · Figure 211, printed 217–218/PDF 243–244Assume entry 00000001h: LSUPP bit 0=1 and IOS bit 1=0.Sanitize Status is supported, but its index-offset mode is not. General extended-read support does not override IOS=0.
4 · Figures 206/312, printed 214,313 onward/PDF 240,339 onwardRead LID 81h with OT=0 and the correct target NSID, then decode the returned status.LSUPP establishes availability; operation progress/outcome requires the actual status. Unsupported OT=1 still requires Invalid Field despite LSUPP=1.
NSID
Namespace Identifier
FID
Feature Identifier

An unavailable directory does not establish that every LID is unsupported; use log-specific specification requirements and Identify fields. A failed query’s buffer is not valid LSUPP evidence.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.13.1.38

There are 256 four-byte entries. LID n is at byte 4n; bit 0 is LSUPP, bit 1 IOS, and LIDSP is log-specific. The host should ignore other fields when LSUPP=0.

2. Query sequence and interpretation

Select the controller and command set, read 00h, and inspect the target entry. Then apply that log’s scope, length and parameters. Rediscover capability after relevant firmware or configuration changes.

Success returns a capability directory, not the logs themselves. LSUPP=1 for 81h establishes Sanitize Status availability, not that sanitization has run or completed.

3. Handle missing or inconsistent evidence

An unsupported LID normally returns Invalid Log Page (1/09h). Using unsupported OT=1 returns Invalid Field (0/02h), even when the LID is supported. These are different failures.

Compare LSUPP, IOS and LPA against a valid request. Supported logs need not support index offsets; an invalid request does not by itself contradict LSUPP.

First establish the same interface, CSI and configuration period, then verify four-byte entry addressing.

CSI
Command Set Identifier

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.30.1.18 · 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) · Base 2.4 §5.2.13.1.38

Back to questions

Q70 What do Error Information and SMART/Health Information record?

Follow the explanation

Error Information explains individual errors; SMART/Health describes current warnings and lifetime usage. They answer different questions and are not substitutes.

1. What differs

LID 01h is controller-scoped. LID 02h may accept namespace requests, but Base 2.4 defines no namespace-specific SMART information, so controller and namespace reports contain identical information rather than independent usage totals.

Each 01h entry is 64 bytes, with ECNT, SQID, CID, status, parameter location and NSID. The 512-byte 02h page contains warnings, temperature, spare, endurance estimate and cumulative usage/error counters.

SQID
Submission Queue Identifier
CID
Command Identifier, unique among outstanding commands in one SQ

2. How to choose and verify

ELPE+1 gives the maximum Error Information entry count. The LPA SMART bit determines whether per-namespace requests are accepted; establish support before interpreting the data.

Preserve the CQE, correlate 01h to the command, then sample 02h for health context. Record times to avoid pairing an old error with an unrelated current warning.

CQE
Completion Queue Entry

A successful read does not mean an error-free device. ECNT=0 marks an invalid entry; Percentage Used=100 describes estimated endurance consumption, not necessarily device failure.

3. Conditions that shape the comparison

A specific-NSID SMART request without support returns Invalid Field (0/02h). Historical status in the log is distinct from the status of the current Get Log Page command.

The SMART Error Log Entries total is not the number of entries currently visible in 01h. Finite capacity and reset clearing can make the lifetime total larger.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.13.1.3 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

Back to questions

Q71 What do Firmware Slot, Changed Namespace and Commands Supported and Effects logs establish?

Follow the explanation

These logs identify the running firmware slot, namespaces with reported changes, and command support/effects. None is a universal operation history.

1. What differs

03h is domain or subsystem scoped; 04h describes attached-namespace changes for this controller; 05h describes its commands for the selected command set.

Read CAFS, NAFS and FRS1–7 in 03h; NSIDs and the leading FFFFFFFFh overflow marker in 04h; and CSUPP, effects, CSE/CSER and CSP in 05h.

2. How to choose and verify

Check 00h and relevant Identify capabilities. Slot count and read-only restrictions come from FRMW, not merely the number of nonzero strings in 03h.

Choose by purpose: compare 03h with Identify.FR after activation; read 04h and rediscover namespaces after notification; use 05h before a management operation and refresh affected capabilities afterward.

NAFS=2 identifies a slot awaiting an applicable CLR, not the currently running slot. NSID 7 in 04h signals change without specifying whether it was formatted or deleted.

3. Conditions that shape the comparison

Separate retrieval errors from reported state. Unsupported LIDs return 1/09h; invalid defined parameters follow 0/02h rules. Empty slots or empty change lists are not themselves retrieval failures.

Correlate the active slot with FR, changed IDs with fresh Identify, and CSUPP with valid command behavior. The three logs need not contain matching values.

Sources: Base 2.4 §5.2.13.1.4 · Base 2.4 §5.2.13.1.5 · Base 2.4 §5.2.13.1.6 · 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

Q72 When should Device Self-test, Persistent Event and Sanitize Status logs be used?

Follow the explanation

Self-test logs show progress and recent results; PEL provides supported historical events; Sanitize Status reports sanitization state and outcome. Choose the right evidence before equating acceptance with completion.

1. What differs

Self-test scope depends on capabilities such as DSTO.SDSO. PEL is subsystem-scoped; 81h uses NSID to distinguish subsystem and namespace targets. The querying controller is not necessarily the full affected scope.

For 06h read DSTOS before progress and validity-qualified results. For 0Dh establish or obtain a reporting context and traverse lengths. For 81h inspect SSTAT before SPROG and outcome fields.

2. How to choose and verify

Check self-test OACS, PEL LPA and subsystem/namespace sanitize capabilities, then the relevant LIDs. A readable status log does not establish every operation method.

Poll 81h after sanitize acceptance for background completion; inspect the newest valid 06h result after self-test; use PEL for supported historical reset or management events.

Successful Get establishes retrieval, not a passed test or successful sanitize. Missing PEL events require checking event support, logging conditions and retained history.

3. Conditions that shape the comparison

Unsupported LIDs return 1/09h; invalid PEL context sequencing can return 0/0Ch. Operation failures in returned data do not turn a successful retrieval CQE into failure.

CQE
Completion Queue Entry

Correlate target, time and latest results. An old test result or previous sanitize success is not proof of success for the current operation.

Sources: Base 2.4 §5.2.13.1.7 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §5.2.13–5.2.13.1.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

Back to questions

Q73 What do Endurance Group, Predictable Latency, Lockdown, Boot Partition and Media Unit Status logs contain?

Follow the explanation

These logs describe group endurance, predictable-latency state, prohibited operations, boot partitions and media-unit resources. They are not interchangeable health reports.

1. What differs

Establish the management object: endurance group, NVM set, lockdown selection/scope, controller-accessed boot partitions, or domain/subsystem media units.

Inspect group warnings/spare/endurance in 09h, set latency state/events in 0Ah/0Bh, prohibited opcodes/FIDs in 14h, partition identity/protection in 15h, and media-unit identity/association/state in 10h.

2. How to choose and verify

Check 00h and relevant Identify capabilities. The main LIDs are 09h, 0Ah/0Bh, 14h, 15h and 10h. LSI can mean different things for different logs.

Choose the LID by question, map resource IDs through Identify, then apply the log’s selectors and structure. Group-3 health requires ENDGID=3, not an arbitrary NSID substituted into LSI.

Results describe the selected object. One group warning does not establish identical media faults in every namespace; lockdown entries are prohibitions, not execution history.

3. Conditions that shape the comparison

Distinguish unsupported LIDs (1/09h) from invalid resource selectors governed by each log’s defined fields and specific status. Do not classify all selector failures as Invalid Namespace.

Correlate resource association, reported state and behavior. Prohibited FIDs should match lockdown policy; media-unit state must be related to namespace dependencies.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · 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

Q74 How should NSID and other selectors follow a log’s scope?

Follow the explanation

Scope identifies the kind of object described; selectors identify its instance. A common NSID field does not make every log per-namespace.

1. Select the target and information

Figure 209 lists scopes, while individual fields may define more specific ones. Read both the directory and the selected LID’s exceptions.

Check LSUPP, LPA, multi-domain support and whether CSI/UUID selection applies. Together they determine valid query combinations.

Controller/subsystem logs normally use NSID=0 or FFFFFFFFh. LSI, LSP, CSI and UIDX are separate selectors, not extensions of NSID.

2. Query sequence and interpretation

Name the target object first, then map it to the specified fields. Fill unused fields according to reserved-field rules.

A valid request returns the selected scope. Aggregate SMART and group endurance are different views; copying an aggregate does not create independent namespace statistics.

3. Handle missing or inconsistent evidence

Under the common rule, controller/subsystem logs with another NSID return Invalid Field (0/02h). Other scopes use their LID-specific and NSID rules.

Retain command selectors, Identify associations and returned data so comparisons refer to the same object.

Check the LID’s scope first; a nonzero NSID alone does not establish namespace-specific information.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.3 · Base 2.4 §8.1.31.1–8.1.31.2 · 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

Q75 How are large logs read in chunks, including offsets, lengths, overlaps and gaps?

Follow the explanation

Chunking reads a large log with bounded buffers. Both coverage and consistency matter; individually successful reads do not establish a complete coherent file.

1. Prepare the operation

Offsets locate data within the log, not host memory. OT=0 uses bytes; OT=1 uses log-defined entry indices. Do not mix their units.

Check LPA.LPEDS and per-LID IOS, then size transfers using MDTS and log-specific length rules.

NUMD=(NUMDU<<16)|NUMDL normally encodes bytes/4−1. LPOU/LPOL form the 64-bit offset; byte offsets require Dword alignment, with further log-specific constraints.

2. Sequence and completion conditions

Success covers the requested valid range. Unless otherwise specified, bytes beyond the log end are undefined and are not additional log content.

Place every chunk at its correct log offset

Example: read an 8192-byte log with OT=0 in 4096-byte transfers.

  1. Chunk 1: LPO=0, NUMD=1023

    This transfer covers log bytes 0–4095; preserve the target, response and sampling information.

  2. Chunk 2: LPO=4096, NUMD=1023

    This covers bytes 4096–8191, immediately after the first chunk with no gap.

  3. Check coverage and consistency before merging

    Overlapping bytes can be compared; if content changed between reads, do not arbitrarily overwrite one version with another.

Covering all 8192 bytes proves coverage only. Use the particular log’s generation or context mechanism to establish consistency.

3. Handle unmet conditions

An offset beyond the log or OT=1 without IOS returns 0/02h. For nonzero low two byte-offset bits, the controller may reject or operate as if those bits were zero; neither outcome is universally mandatory.

Verify total length, offsets/NUMD and generation or reporting context. Complete coverage and one coherent snapshot are separate requirements.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.8–5.2.13.1.9 · 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

Q76 What are LSI, UUID Index and Retain Asynchronous Event used for?

Follow the explanation

These fields select a resource, a data-definition context, and event retention. Their roles are independent.

1. Establish the source and scope

LSI is LID-specific; UIDX selects a UUID-list definition; RAE controls the associated event. Not every log uses all three.

Check whether LSI is defined and UUID selection supported. RAE behavior depends on the event’s acknowledgment rules.

2. Fields, units and worked interpretation

LSI is CDW11[31:16], UIDX CDW14[6:0] with zero meaning no UUID selection, and RAE CDW10[15]. UIDX is an index, not the UUID itself.

Fix the target and UUID definition, then decide whether the event should remain pending. Record RAE for each chunk and follow the selected log’s acknowledgment procedure.

Successful RAE=1 reads retain the event; successful RAE=0 reads clear it as defined. Failed reads must retain it; an attempted read is not acknowledgment.

3. Conditions that change the interpretation

Invalid UUID selection follows 0/02h rules in §8.1.31; invalid LSI follows the LID definition. Changing RAE does not fix the selected resource.

Compare the target, UUID mapping and pending-event state. Identical returned bytes with different RAE can produce different subsequent notification behavior.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §8.1.31.1–8.1.31.2 · Base 2.4 §5.2.2 · 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.13.1.14 (header, reset, hardware, Set Feature events)

Back to questions

Q77 How can a host detect inconsistent log chunks when content changes?

Follow the explanation

This prevents combining different times into an apparently complete report. Correct length and coverage do not establish a single capture.

1. Preserve the evidence first

Consistency is log-specific: Telemetry has generations, PEL reporting contexts. Other dynamic logs do not gain cross-command atomic snapshots by assumption.

Check the supported log structure/version and its generation, total length, availability or context action. Common command fields alone are insufficient.

Retain Telemetry generation and area boundaries, or PEL context/TLL/event lengths and versions, together with each chunk’s offset, length and acquisition time.

2. Work through the possible causes

Check generation/context continuity before blaming the parser.

Read the header, use the same capture/context and recheck the header where applicable. A changed generation requires reacquisition or an explicit consistency limitation, not just replacement of the header.

3. Connect observations to specification conditions

Initial TCDGN=10 and final=11 leave intervening chunks unproven even when all Gets succeed. Retain consistency evidence with the resulting report.

Content changes need not produce an error CQE. Invalid PEL context operations can produce 0/0Ch, which is distinct from a legitimate generation change.

Treat headers, chunks and query order as one evidence set. The last capability or generation value cannot retroactively validate every earlier chunk.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.8–5.2.13.1.9 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · 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

Back to questions

Q78 How are old records handled when Error Information or PEL reaches capacity?

Follow the explanation

Finite logs cannot preserve unlimited history. Distinguish cumulative counts from currently readable records; a missing old entry does not prove the event never occurred.

1. Mechanism and scope

Error Information is controller-scoped; PEL contains supported subsystem events accessed through reporting contexts. Capacity and read lifecycles differ.

Error entries are newest first with ECNT identity. PEL traversal uses EHL, EL, ET and ETR; events are not fixed 64-byte error entries.

2. Understand it through actions and results

ELPE+1 sets Error Information capacity. For PEL inspect support, report length/event count and maximum capacity; SMART totals do not size the current buffer.

Record valid entries and boundary identities, then correlate overlapping samples. Mark lost history explicitly rather than inventing missing records or their order.

When Error Information is full, the specification recommends inserting the new entry and discarding the oldest. A complete finite PEL report is not the device’s entire lifetime history.

3. Avoid a misleading conclusion

Full storage does not automatically make a valid Get fail. Inspect retention behavior; invalid parameters or contexts are separate command errors.

ECNT/SMART totals may diverge from visible entry counts. Explain the difference using capacity and retention, not an expectation of unlimited historical preservation.

Sources: Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.2

Back to questions

Q79 Which log data survives controller reset, subsystem reset or power cycling?

Follow the explanation

Separate the query command, temporary reporting state and retained history. An aborted Get does not imply erasure of all underlying data.

1. Identify the trigger and affected objects

Retention may apply to a whole log or individual fields. Establish reset coverage in multi-controller and multi-domain configurations.

Use log-specific retention text and reset rules. Figure 209’s Restore to Default Content concerns manufacturing defaults, not clearing on every reset.

2. State changes and recovery

Compare error entries, their ECNT, SMART totals, current temperature, PEL events and PEL context separately. Proximity does not imply identical retention.

Capture the same target before reset, perform the specified event, recover and read again. Record concurrent activation, format or manufacturing-default restoration as separate causes.

Error entries should clear on CLR/power cycle while ECNT persists. SMART lifetime data persists across power cycles unless a field says otherwise. Persistent PEL events do not make reporting contexts persistent.

3. Checks across reset or power loss

TriggerEffect on this operation or state
What survives or continues after Controller Reset?Controller Reset stops outstanding queries, which are reissued after Admin Queue recovery. Content retention is separate: Error Information entries should clear but Error Count persists; SMART cumulative information and PEL follow their field-specific persistence rules.
What survives or continues after NVM Subsystem Reset?After subsystem reset, recover query access on affected controllers and re-read the logs. This is not restoration of manufacturing defaults; Figure 209’s Restore to Default Content column is not an ordinary reset-retention table.
What survives or continues after a power cycle?Reissue the query after a power cycle. SMART lifetime information and PEL have persistent content; Error Information entries should clear while the cumulative Error Count persists. Reassess current temperature, active operations and reporting contexts under their own rules rather than expecting every byte to remain fixed.

4. Verify retention and recovery

Comparing values creates no status. A failed post-reset Get first requires checking readiness, selectors and context; it is not evidence of cleared data.

Compare field semantics and validity rather than requiring byte-identical buffers. Persistent counters can coexist with newly sampled current state.

First determine whether the discrepancy concerns stored content, an invalidated context or an interrupted query.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.13.1.3 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.2

Back to questions

Q80 How should advertised log/command support be checked against actual behavior?

Follow the explanation

Build a reproducible support-consistency check. Support establishes valid uses, not success for every parameter combination.

1. Preserve the evidence first

Fix interface, controller, CSI, UUID selection and configuration time. With CC.CSS=110b, a command set not enabled by the profile is treated as unsupported.

Preserve LSUPP/IOS, CSUPP, Identify capability bits and FID 19h. Log support and opcode support are different declarations.

FID
Feature Identifier

Retain all relevant selectors, length and data pointers, then decode CQE SCT/SC rather than only a tool’s error string.

SCT
Status Code Type

2. Work through the possible causes

First verify the same interface and command-set configuration on both sides of the comparison.

Construct a request meeting capability, scope and state requirements, execute, then exclude invalid fields, lockdown, namespace readiness and intervening changes before declaring a contradiction.

3. Connect observations to specification conditions

In a stable context, unsupported status for a valid advertised operation is a contradiction to investigate. A legitimate restrictive status is not equivalent to lack of support.

Unsupported LID uses 1/09h; unsupported opcode uses 0/01h; 0/02h calls for parameter review. Preserve specific exceptions and allowed choices for multiple errors.

Compare declarations, behavior and timing. After activation, rediscover support instead of imposing an old table on new firmware.

Sources: Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.6 · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.30.1.18 · 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

Q81 How does Commands Supported and Effects describe opcode support and impact?

Follow the explanation

The table describes support and possible effects on data, namespaces and controller capability. It reports overall possible effects, not effects guaranteed on every invocation.

1. Select the target and information

Admin and I/O opcodes occupy separate regions; the I/O region also requires the correct command set. CSP can name several possible scopes because parameters affect actual impact.

First check Figure 338 LPA.CSES bit 1 for LID 05h availability and fix command-set/UUID selection. CSES advertises the log, while per-opcode CSUPP advertises each command. CSP=0 means unreported scope, not no impact.

Figure 216 locates the four-byte entry: Admin uses 4×opcode and I/O uses 1024+4×opcode, in bytes. Figure 217 decodes its support/effect fields. Admin opcode 02h is Get Log Page, whereas NVM I/O opcode 02h is Read; identical numbers do not identify the same entry.

2. Query sequence and interpretation

Select the entry and coordinate work under CSE/CSER recommendations. Use a supported nonzero CSER relaxation; otherwise use CSE. Rediscover potentially changed capabilities or inventory afterward.

NIC=1 permits inventory or multi-namespace capability changes; it does not guarantee one new namespace per call. CSUPP=0 requires all other entry fields to be zero.

3. Handle missing or inconsistent evidence

Retrieval errors follow Get Log Page; operation errors follow the command. Submission recommendations do not authorize inventing a mandatory status for every violation.

Correlate effects with before/after Identify, inventory and data. Support declarations should agree; actual effects depend on this invocation’s parameters.

First establish Admin/I/O region, opcode, byte offset and query success. Log-relative position, segment-buffer position and entry bit position are distinct coordinates; confusing them can select another command or field.

Sources: Base 2.4 §5.2.13.1.6 · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.30.1.18 · 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) · Base 2.4 §3.1.3.4 (Figure 28 PCIe I/O-controller rows and O/M/P note only)

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.3.4 (Figure 28 PCIe I/O-controller rows and O/M/P note only)
    Printed pages 45–47 · PDF 71–73 · Figure 28
  • 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–5.2.13.1.1
    Printed pages 212–218 · PDF 238–244 · Figure 203–211
  • Base 2.4 · §5.2.13.1.2
    Printed pages 218–220 · PDF 244–246 · Figure 212
  • Base 2.4 · §5.2.13.1.3
    Printed pages 220–225 · PDF 246–251 · Figure 213–214
  • Base 2.4 · §5.2.13.1.4
    Printed pages 225–226 · PDF 251–252 · Figure 215
  • Base 2.4 · §5.2.13.1.5
    Printed pages 226 · PDF 252
  • Base 2.4 · §5.2.13.1.6
    Printed pages 226–229 · PDF 252–255 · Figure 216–217
  • Base 2.4 · §5.2.13.1.7
    Printed pages 229–232 · PDF 255–258 · Figure 218–219
  • Base 2.4 · §5.2.13.1.8–5.2.13.1.9
    Printed pages 232–237 · PDF 258–263 · Figure 220–223
  • 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.13.1.14–5.2.13.1.14.2.5 (exclude PCIe link/packet decoding)
    Printed pages 244–256, 258 · PDF 270–282, 284 · Figure 232–244, 246
  • Base 2.4 · §5.2.13.1.38
    Printed pages 313–320 · PDF 339–346 · Figure 312
  • Base 2.4 · §5.2.14.2.1
    Printed pages 340–387 · PDF 366–413 · Figure 338–341
  • Base 2.4 · §5.2.30.1.18
    Printed pages 478–479 · PDF 504–505 · Figure 494–495
  • Base 2.4 · §8.1.31.1–8.1.31.2
    Printed pages 737–738 · PDF 763–764 · Figure 782

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