Analyzing GPU Operational Events#
Warning
GPU Operational Events are a preview feature and remain under active development. Category values, module signatures, module event codes, severities, context payloads, and the set of published events may change before the interface is declared stable. Treat the identifiers in this document as valid for the driver release documented here, and re-validate consumers against each driver release. Legacy Xid reporting remains supported for production monitoring during the preview period. See Release Notes for compatibility changes.
Overview#
A GPU Operational Event (GOE) is a structured, machine-readable record that the NVIDIA GPU driver publishes whenever it detects a condition worth reporting to a system operator: an error, a recovery action, a resource retirement, or a notable state change. Each event carries an identity, a severity, an impact scope, and a list of typed context payloads that describe the specific occurrence.
GPU Operational Events give system software a programmatic interface for the same conditions that the driver reports as Xid messages in the kernel log. Each event carries its identity in discrete numeric fields.
Events that have a legacy Xid equivalent continue to produce NVRM: Xid (PCI:...) kernel log
lines. The structured event and the legacy Xid line describe the same occurrence. See
Release Notes for changes to individual Xid messages.
For the actions to take in response to a condition, see the Xid Errors documentation. Each event in Published Events lists its legacy Xid, which selects the corresponding entry in the Xid catalog and its recommended immediate and investigatory actions.
Availability#
This document describes GPU Operational Events in R620. NVML support is available on Linux,
on Turing and later GPUs. Structured subscriptions, retained CPER queries, and the
nvidia-smi commands below require administrative privileges (CAP_SYS_ADMIN on Linux).
Event Identity#
Event identity consists of a module signature, category, and module event code.
Field |
Type |
Description |
|---|---|---|
Module Signature |
Character array |
ASCII string naming the source module, for example |
Category |
16-bit integer |
Class of condition, from the category registry in Event Categories. Shared across all modules. |
Module Event Code |
16-bit integer |
Specific event within the reporting module. Together with the module signature and category, locates matching entries in Published Events. |
Each event additionally carries the fields below.
Field |
Description |
|---|---|
Severity |
Impact relative to the event scope. See Event Severities. |
Log Level |
Urgency of the report, orthogonal to severity. See Event Log Levels. |
Scope |
What the event affects. See Event Scopes. |
Originator |
Which driver or firmware component originated the event. |
Device UUID |
UUID of the GPU that reported the event. |
Instance ID |
Originator-scoped sequence number. |
Timestamp |
Microsecond wall clock. |
Trace ID |
Correlation identifier shared by related events that describe one incident. |
Group Cursor |
64-bit value that identifies the event group. Also maps to the CPER Error Record
Header |
Group Position |
Zero-based index within the group visible to the subscriber. |
Group Size |
Number of events in the group visible to the subscriber. |
Attributes |
Per-event flags that describe properties of the event. |
Group Attributes |
Group-level flags that describe properties of the event group. |
Attribution |
Fields for locating the event within the device. R620 does not report MIG instance IDs for GPU Operational Events. |
The trace ID correlates related events in a causal chain; the group cursor identifies one
exported group. NVML delivers one event per successful wait. Use groupCursor to associate
those records, groupIndex to order them, and groupSize to check completeness.
See GPU Operational Event Formats for how these fields appear in each published format.
Monitoring GPU Operational Events#
The driver retains recent event groups in an in-memory Operational Event log. The interfaces below expose event records for monitoring and diagnosis.
Command Line#
nvidia-smi event-log prints retained events since driver load in a human-readable form.
It reports events for every GPU visible to NVML, skipping inaccessible GPUs during enumeration.
event-log accepts -h / --help. Resolve the numeric values it prints through
Published Events. The decoder has the following limitations in this release:
Module event codes print as hexadecimal values without names.
Categories
0x0008and0x0009still print asEngine Software ErrorandEngine Hardware Error. In R620 these mean Firmware Fault and Engine Error, respectively. Use the numeric category and this release’s catalog.Contexts other than Legacy Xid print their numeric type and no payload. Legacy Xid contexts print the Xid code.
Severityreports the CPER severity of the record rather than the event’s own severity, so a GPU-fatal event appears here asRecoverable. See UEFI CPER for the mapping, and read the severity in a structured record for GPU-relative impact.
nvidia-smi cper prints retained history as Base64-encoded raw CPER records, one record per
Base64 block, for forwarding to an external collector. cper accepts -h / --help and
--no-wrap. Output wraps at 76 columns by default; --no-wrap emits each CPER record on a
single line.
NVML#
NVML exposes GPU Operational Events through two interfaces. See the NVML API Reference Guide for full function prototypes.
Structured event subscription. Register a GPU with
nvmlEventSetRegisterGpuOperationalEvents_v1, then retrieve events with
nvmlEventSetWait_v3. Records with dataType set to
NVML_EVENT_DATA_TYPE_GPU_OPERATIONAL_EVENT carry the structured event. Read attached context
payloads with nvmlEventSetGetContextCount_v1, nvmlEventSetGetContextInfo_v1, and
nvmlEventSetGetContextData_v1. Decode a legacy Xid context with
nvmlEventSetGetGpuOperationalEventContextLegacyXid_v1.
Zero-initialize nvmlGpuOperationalEventConfig_v1_t and set its uuid to the target
GPU-... UUID. This subscribes to new device-wide events after registration. Optional
minLogLevel and minSeverity thresholds filter whole groups; zero disables each filter.
These thresholds do not remove lower-level companion events from a matching group.
Read or copy contexts before the next successful nvmlEventSetWait_v3 on that event set:
the context accessors refer to the last returned event, not a caller-owned event copy.
The typed Legacy Xid accessor returns the Xid code; use the raw context for its message.
The same event set can subscribe to legacy Xid events and GPU Operational Events. When a GPU Operational Event carries a Legacy Xid context, use that Xid value as a correlation hint to the matching Xid event, kernel log line, and catalog entry.
Retained CPER history. nvmlSystemGetCPER_v1 returns retained CPER records as raw bytes.
This is the interface that both nvidia-smi commands above use. Initialize the cursor handle
to NVML_CPER_CURSOR_HANDLE_INIT and preserve it between calls. A size query uses a null
buffer and zero buffer size; NVML_ERROR_INSUFFICIENT_SIZE
returns the required size. A successful call with zero buffer size means no more records.
Kernel Log#
Events that carry a legacy Xid context emit their traditional kernel log line:
NVRM: Xid (PCI:0000:41:00): 63, Row Remapper: New row (0x00000000fbc12000) marked for remapping, reset gpu to activate.
The Xid prefix and numeric code remain available to existing log parsers. Simulated events add
[SIMULATED] to the message. Events without a legacy Xid equivalent are visible through the
structured, CPER, and out-of-band interfaces.
Linux Tracepoints#
The open kernel module exposes five tracepoints in the nvidia tracing subsystem:
nvidia_gpu_error, nvidia_gpu_warning, nvidia_gpu_notice,
nvidia_gpu_diagnostic, and nvidia_gpu_telemetry. Each event goes to the tracepoint for
its log level. They carry event identity, severity, scope, attribution, and correlation fields;
context payloads remain available through NVML and CPER.
With tracefs mounted at /sys/kernel/tracing, run as root to capture error-level events:
echo 1 > /sys/kernel/tracing/events/nvidia/nvidia_gpu_error/enable
cat /sys/kernel/tracing/trace_pipe
After stopping the capture, write 0 to the same enable file. These tracepoints are
unavailable with the proprietary kernel module.
Out-of-Band#
On platforms that support out-of-band reporting, the driver forwards rendered CPER records to the BMC. Match the CPER record ID to the structured event’s group cursor to correlate reports.
Interpreting an Event#
Determine the Reporting Module and Event Code#
Read the module signature and module event code from the structured record, or Source Module and
Module Event Code from nvidia-smi event-log. Use the category and context type to find the
matching entry in Published Events.
Determine Impact from the Category and Severity#
The category identifies the class of condition and the severity identifies impact relative to the event’s scope. Use scope to establish what the severity applies to: a fatal event at individual GPU engine scope reports that one engine is down, while a fatal event at device scope reports that the GPU is down.
Read the Context Payloads#
Contexts carry occurrence-specific data. In this release, NVML and nvidia-smi decode the
Legacy Xid code. NVML also exposes raw payloads, including the Legacy Xid message and other
typed contexts. Check the source context type, format version, and size before decoding; skip
unrecognized payloads using their size. See GPU Operational Event Formats for the context layouts.
Determine the Actions to Take#
For an event that lists a legacy Xid in Published Events, look the Xid up in the
Xid Errors catalog, which supplies the
immediate and investigatory actions for that condition. For LTS_REPAIR_PENDING and
MEMORY_CHANNEL_REPAIR_PENDING, the Xid 160 message states the action needed to activate
the repair.