DRM RAS NODE MANAGEMENT(9)
π DRM RAS NODE MANAGEMENT π
okay so this is from the Kernel API Manual, section 9 β and bestie, it's literally all about managing RAS nodes for DRM drivers. RAS = Reliability, Availability, and Serviceability, iykyk. let's get into it π«Ά
β¨ DRM RAS NODE MANAGEMENT β¨
This module hands you the whole infrastructure to manage RAS (Reliability, Availability, and Serviceability) nodes for DRM drivers. fr fr, that's the whole vibe. Every DRM driver can register one or more RAS nodes, and each node is like a little logical component that's capable of reporting error counters and other reliability metrics. main character energy per node π
The nodes live in a global xarray called drm_ras_xa so lookups by ID are fast and cute. and yes, nodes can be registered or unregistered dynamically at runtime β no restart needed, we love that for us β¨
So there's this Generic Netlink family called drm_ras that exposes the below operations to userspace:
LIST_NODES: Dump all currently registered RAS nodes. the user gets back an array of node IDs, names, and types. basically the whole roster πGET_ERROR_COUNTER: Get error counters of a given node. userspace must provide Node ID, and Error ID (Optional for specific counter). it returns all counters of a node if only Node ID is provided, or specific error counters if you asked for one. slay, flexible πCLEAR_ERROR_COUNTER: Clear error counter of a given node. userspace must provide Node ID and Error ID. it clears a specific error counter of a node if supported β key detail, don't forget the "if supported" π
πΈ Node registration πΈ
drm_ras_node_registerβ registers a new node and assigns it a unique ID in the xarray. iconic.drm_ras_node_unregisterβ removes a previously registered node from the xarray. bye bestie π
π¦ Node type π¦
ERROR_COUNTER:- Currently, only error counters are supported.
- The driver must implement the
query_error_countercallback to provide the name and the value of the error counter. - The driver must provide a
error_counter_range.lastvalue informing the last valid error ID. - The driver can provide a
error_counter_range.firstvalue informing the first valid error ID. - The error counters in the driver doesn't need to be contiguous, but the driver must return
-ENOENTto thequery_error_counteras an indication that the ID should be skipped and not listed in the netlink API. so like,-ENOENT= "not me, skip me" π
β Netlink handlers β
drm_ras_nl_list_nodes_dumpitβ implements theLIST_NODESoperation, iterating over the xarray. it's giving tour guide through the node list πdrm_ras_nl_get_error_counter_dumpitβ implements theGET_ERROR_COUNTERdumpit operation, fetching all counters from a specific node.drm_ras_nl_get_error_counter_doitβ implements theGET_ERROR_COUNTERdoit operation, fetching a counter value from a specific node.drm_ras_nl_clear_error_counter_doitβ implements theCLEAR_ERROR_COUNTERdoit operation, clearing a counter value from a specific node. poof, gone β¨
π SEE ALSO π
Kernel file ./drivers/gpu/drm/drm_ras.c, plus these absolute legends:
drm_ras_nl_list_nodes_dumpit(9)drm_ras_nl_get_error_counter_dumpit(9)drm_ras_nl_get_error_counter_doit(9)drm_ras_nl_clear_error_counter_doit(9)drm_ras_node_register(9)drm_ras_node_unregister(9)
okay that's the whole page, no cap π this came out of ./drivers/gpu/drm in October 2026 β drink water, read your xarrays, and go slay some error counters for me ππ¦π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms