{
  "slug": "nvme-persistent-event-log",
  "term": "NVMe Persistent Event Log",
  "aliases": [
    "Persistent Event Log",
    "NVMe log page 0Dh"
  ],
  "definition": "The NVMe Persistent Event Log records supported significant subsystem events in log page 0Dh, retaining information across power cycles and resets.",
  "note": "Support is optional; inspect Identify Controller LPA bit 4 (PES) and the Supported Events Bitmap. Firmware commits, power-on/reset events and SMART snapshots are distinct event types. The log is global to the NVM subsystem. [base23-pel] [nvme14-changes]\n\nPersistence is not complete history. Repeated events may be suppressed above an implementation-specific frequency; capacity limits can cause selected events to be deleted. Sanitize may alter or remove records, and the specification recommends minimizing event loss on power failure rather than guaranteeing zero loss. [base23-pel]\n\nA reporting context selects the events returned during a retrieval. Supported events remain subject to logging and suppression rules; events logged after context creation are excluded from that existing view. Context lifetime is separate from stored-event persistence. For a multi-command read, compare Generation Number before and after the body; a mismatch calls for rereading because the context may have been lost. [base23-pel]\n\nIn Base 2.3, action 0 reads an existing context, 1 establishes one and reads, 2 releases it, and 3 creates a context if needed and returns a 512-byte header with prior-context status. Release is not an erase operation. Total Log Length includes the header and describes available bytes; Identify Controller PELS describes maximum size in 64 KiB units. [base23-pel]\n\nAction 3 and Generation Number support are indicated by ECRH, bit 0 of the PEL-specific parameter in Supported Log Pages. A controller supporting PEL and compliant with Base 2.0 or later must set ECRH; PEL support alone on older devices does not establish these extensions. [base23-pel]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "A missing event does not establish that the corresponding real-world incident never occurred.",
      "citationIds": [
        "base23-pel"
      ]
    }
  ],
  "related": [
    "nvme-smart-log",
    "nvme-error-information-log",
    "nvme-error-information-log-entries",
    "drive-firmware-revision",
    "sanitize-nvme"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "base23-pel",
      "title": "NVM Express Base 2.3, section 5.2.12.1.14, Figures 229-232 and 328: retention, context, ECRH and PELS",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-Revision-2.3-2025.08.01-Ratified.pdf",
      "accessed": "2026-10-19"
    },
    {
      "id": "nvme14-changes",
      "title": "NVM Express: changes in NVMe 1.4, optional Persistent Event Log",
      "url": "https://nvmexpress.org/changes-in-nvme-revision-1-4/",
      "accessed": "2026-10-19"
    }
  ],
  "updated": "2026-10-19",
  "provenance": [
    "Protocol semantics follow NVM Express Base 2.3; capability and decoder support must be checked for the actual device and software."
  ]
}
