€•LŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/gpu/drm-ras”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ9/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDRM RAS over Generic Netlink”h]”hŒDRM RAS over Generic Netlink”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid1”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXbThe DRM RAS (Reliability, Availability, Serviceability) interface provides a standardized way for GPU/accelerator drivers to expose error counters and other reliability nodes to user space via Generic Netlink. This allows diagnostic tools, monitoring daemons, or test infrastructure to query hardware health in a uniform way across different DRM drivers.”h]”hXbThe DRM RAS (Reliability, Availability, Serviceability) interface provides a standardized way for GPU/accelerator drivers to expose error counters and other reliability nodes to user space via Generic Netlink. This allows diagnostic tools, monitoring daemons, or test infrastructure to query hardware health in a uniform way across different DRM drivers.”…”�”}”(hháh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KhhÊh²hubhà)�”}”(hŒ Key Goals:”h]”hŒ Key Goals:”…”�”}”(hhïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K hhÊh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ€Provide a standardized RAS solution for GPU and accelerator drivers, enabling data center monitoring and reliability operations.”h]”hà)�”}”(hŒ€Provide a standardized RAS solution for GPU and accelerator drivers, enabling data center monitoring and reliability operations.”h]”hŒ€Provide a standardized RAS solution for GPU and accelerator drivers, enabling data center monitoring and reliability operations.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿh²hh³hÇh´Nubj)�”}”(hŒ›Implement a single drm-ras Generic Netlink family to meet modern Netlink YAML specifications and centralize all RAS-related communication in one namespace.”h]”hà)�”}”(hŒ›Implement a single drm-ras Generic Netlink family to meet modern Netlink YAML specifications and centralize all RAS-related communication in one namespace.”h]”hŒ›Implement a single drm-ras Generic Netlink family to meet modern Netlink YAML specifications and centralize all RAS-related communication in one namespace.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿh²hh³hÇh´Nubj)�”}”(hŒ^Support a basic error counter interface, addressing the immediate, essential monitoring needs.”h]”hà)�”}”(hŒ^Support a basic error counter interface, addressing the immediate, essential monitoring needs.”h]”hŒ^Support a basic error counter interface, addressing the immediate, essential monitoring needs.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Khj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿh²hh³hÇh´Nubj)�”}”(hŒtOffer a flexible, future-proof interface that can be extended to support additional types of RAS data in the future.”h]”hà)�”}”(hŒtOffer a flexible, future-proof interface that can be extended to support additional types of RAS data in the future.”h]”hŒtOffer a flexible, future-proof interface that can be extended to support additional types of RAS data in the future.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿh²hh³hÇh´Nubj)�”}”(hŒŸAllow multiple nodes per driver, enabling drivers to register separate nodes for different IP blocks, sub-blocks, or other logical subdivisions as applicable. ”h]”hà)�”}”(hŒžAllow multiple nodes per driver, enabling drivers to register separate nodes for different IP blocks, sub-blocks, or other logical subdivisions as applicable.”h]”hŒžAllow multiple nodes per driver, enabling drivers to register separate nodes for different IP blocks, sub-blocks, or other logical subdivisions as applicable.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Khjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1hýh³hÇh´KhhÊh²hubhŒtopic”“”)�”}”(hŒ Contents ”h]”(hÎ)�”}”(hŒContents”h]”hŒContents”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj†h³hÇh´Kubhþ)�”}”(hhh]”j)�”}”(hhh]”(hà)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒDRM RAS over Generic Netlink”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”hÞah ]”h"]”h$]”h&]”Œrefid”Œdrm-ras-over-generic-netlink”uh1j¡hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhj›ubhþ)�”}”(hhh]”(j)�”}”(hhh]”(hà)�”}”(hhh]”j¢)�”}”(hhh]”hŒNodes”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œnodes”uh1j¡hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhj»ubhþ)�”}”(hhh]”j)�”}”(hhh]”hà)�”}”(hhh]”j¢)�”}”(hhh]”hŒNode Management”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œnode-management”uh1j¡hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubj)�”}”(hhh]”(hà)�”}”(hhh]”j¢)�”}”(hhh]”hŒGeneric Netlink Usage”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œgeneric-netlink-usage”uh1j¡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhjubhþ)�”}”(hhh]”(j)�”}”(hhh]”hà)�”}”(hhh]”j¢)�”}”(hhh]”hŒYAML-based Interface”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œyaml-based-interface”uh1j¡hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”hà)�”}”(hhh]”j¢)�”}”(hhh]”hŒ Usage Notes”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œ usage-notes”uh1j¡hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj†h²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1j„h³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒNodes”h]”hŒNodes”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjÊuh1hÍhj’h²hh³hÇh´Kubhà)�”}”(hŒŽNodes are logical abstractions representing an error type or error source within the device. Currently, only error counter nodes is supported.”h]”hŒŽNodes are logical abstractions representing an error type or error source within the device. Currently, only error counter nodes is supported.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K hj’h²hubhà)�”}”(hŒ‡Drivers are responsible for registering and unregistering nodes via the `drm_ras_node_register()` and `drm_ras_node_unregister()` APIs.”h]”(hŒHDrivers are responsible for registering and unregistering nodes via the ”…”�”}”(hj±h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`drm_ras_node_register()`”h]”hŒdrm_ras_node_register()”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj±ubhŒ and ”…”�”}”(hj±h²hh³Nh´Nubjº)�”}”(hŒ`drm_ras_node_unregister()`”h]”hŒdrm_ras_node_unregister()”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj±ubhŒ APIs.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K#hj’h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒNode Management”h]”hŒNode Management”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjéuh1hÍhjåh²hh³hÇh´K'ubhà)�”}”(hXThis module provides the infrastructure to manage RAS (Reliability, Availability, and Serviceability) nodes for DRM drivers. Each DRM driver may register one or more RAS nodes, which represent logical components capable of reporting error counters and other reliability metrics.”h]”hXThis module provides the infrastructure to manage RAS (Reliability, Availability, and Serviceability) nodes for DRM drivers. Each DRM driver may register one or more RAS nodes, which represent logical components capable of reporting error counters and other reliability metrics.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´Khjåh²hubhà)�”}”(hŒ•The nodes are stored in a global xarray `drm_ras_xa` to allow efficient lookup by ID. Nodes can be registered or unregistered dynamically at runtime.”h]”(hŒ(The nodes are stored in a global xarray ”…”�”}”(hjh²hh³Nh´Nubjº)�”}”(hŒ `drm_ras_xa`”h]”hŒ drm_ras_xa”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hjubhŒa to allow efficient lookup by ID. Nodes can be registered or unregistered dynamically at runtime.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´Khjåh²hubhà)�”}”(hŒMA Generic Netlink family `drm_ras` exposes the below operations to userspace:”h]”(hŒA Generic Netlink family ”…”�”}”(hj&h²hh³Nh´Nubjº)�”}”(hŒ `drm_ras`”h]”hŒdrm_ras”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹hj&ubhŒ+ exposes the below operations to userspace:”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´Khjåh²hubhŒenumerated_list”“”)�”}”(hhh]”(j)�”}”(hŒoLIST_NODES: Dump all currently registered RAS nodes. The user receives an array of node IDs, names, and types. ”h]”hà)�”}”(hŒnLIST_NODES: Dump all currently registered RAS nodes. The user receives an array of node IDs, names, and types.”h]”hŒnLIST_NODES: Dump all currently registered RAS nodes. The user receives an array of node IDs, names, and types.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒØGET_ERROR_COUNTER: Get error counters of a given node. Userspace must provide Node ID, Error ID (Optional for specific counter). Returns all counters of a node if only Node ID is provided or specific error counters. ”h]”hà)�”}”(hŒ×GET_ERROR_COUNTER: Get error counters of a given node. Userspace must provide Node ID, Error ID (Optional for specific counter). Returns all counters of a node if only Node ID is provided or specific error counters.”h]”hŒ×GET_ERROR_COUNTER: Get error counters of a given node. Userspace must provide Node ID, Error ID (Optional for specific counter). Returns all counters of a node if only Node ID is provided or specific error counters.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K!hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒšCLEAR_ERROR_COUNTER: Clear error counter of a given node. Userspace must provide Node ID, Error ID. Clears specific error counter of a node if supported. ”h]”hà)�”}”(hŒ™CLEAR_ERROR_COUNTER: Clear error counter of a given node. Userspace must provide Node ID, Error ID. Clears specific error counter of a node if supported.”h]”hŒ™CLEAR_ERROR_COUNTER: Clear error counter of a given node. Userspace must provide Node ID, Error ID. Clears specific error counter of a node if supported.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K&hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒHERROR_REPORT: Subscribe to this multicast group to receive error events ”h]”hà)�”}”(hŒGERROR_REPORT: Subscribe to this multicast group to receive error events”h]”hŒGERROR_REPORT: Subscribe to this multicast group to receive error events”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K*hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒ�ERROR_EVENT: Report an error event to userspace. The event contains device, node and error information that triggered the event. ”h]”hà)�”}”(hŒ€ERROR_EVENT: Report an error event to userspace. The event contains device, node and error information that triggered the event.”h]”hŒ€ERROR_EVENT: Report an error event to userspace. The event contains device, node and error information that triggered the event.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K,hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒŸGET_ERROR_THRESHOLD: Query error threshold of a given counter. Userspace must provide Node ID and Error ID. Returns the error threshold of a specific counter. ”h]”hà)�”}”(hŒžGET_ERROR_THRESHOLD: Query error threshold of a given counter. Userspace must provide Node ID and Error ID. Returns the error threshold of a specific counter.”h]”hŒžGET_ERROR_THRESHOLD: Query error threshold of a given counter. Userspace must provide Node ID and Error ID. Returns the error threshold of a specific counter.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K/hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj)�”}”(hŒSET_ERROR_THRESHOLD: Set error threshold of a given counter. Userspace must provide Node ID, Error ID and threshold to be set. ”h]”hà)�”}”(hŒ~SET_ERROR_THRESHOLD: Set error threshold of a given counter. Userspace must provide Node ID, Error ID and threshold to be set.”h]”hŒ~SET_ERROR_THRESHOLD: Set error threshold of a given counter. Userspace must provide Node ID, Error ID and threshold to be set.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K3hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jGhjåh²hh³Nh´Nubhà)�”}”(hŒNode registration:”h]”hŒNode registration:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K6hjåh²hubhþ)�”}”(hhh]”(j)�”}”(hŒWdrm_ras_node_register(): Registers a new node and assigns it a unique ID in the xarray.”h]”hà)�”}”(hŒWdrm_ras_node_register(): Registers a new node and assigns it a unique ID in the xarray.”h]”hŒWdrm_ras_node_register(): Registers a new node and assigns it a unique ID in the xarray.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒQdrm_ras_node_unregister(): Removes a previously registered node from the xarray. ”h]”hà)�”}”(hŒPdrm_ras_node_unregister(): Removes a previously registered node from the xarray.”h]”hŒPdrm_ras_node_unregister(): Removes a previously registered node from the xarray.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K:hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”j‚Œ-”uh1hýh³j*h´K8hjåh²hubhà)�”}”(hŒ Node type:”h]”hŒ Node type:”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K=hjåh²hubhþ)�”}”(hhh]”j)�”}”(hX;ERROR_COUNTER: + Currently, only error counters are supported. + The driver must implement the query_error_counter() callback to provide the name and the value of the error counter. + The driver must provide a error_counter_range.last value informing the last valid error ID. + The driver can provide a error_counter_range.first value informing the first valid error ID. + The error counters in the driver doesn't need to be contiguous, but the driver must return -ENOENT to the query_error_counter as an indication that the ID should be skipped and not listed in the netlink API. + The driver can optionally implement query_error_threshold() and set_error_threshold() callbacks to facilitate getting/setting error threshold of the counter. Threshold in RAS context means the number of errors the hardware is expected to accumulate before it raises them to software. This is to have a fine grained control over error notifications that are raised by the hardware. + The driver is responsible for error threshold bounds checking. ”h]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hXERROR_COUNTER: + Currently, only error counters are supported. + The driver must implement the query_error_counter() callback to provide the name and the value of the error counter. + The driver must provide a error_counter_range.last value informing the last valid error ID. + The driver can provide a error_counter_range.first value informing the first valid error ID. + The error counters in the driver doesn't need to be contiguous, but the driver must return -ENOENT to the query_error_counter as an indication that the ID should be skipped and not listed in the netlink API. + The driver can optionally implement query_error_threshold() and set_error_threshold() callbacks to facilitate getting/setting error threshold of the counter. Threshold in RAS context means the number of errors the hardware is expected to accumulate before it raises them to software. This is to have a fine grained control over error notifications that are raised by the hardware. + The driver is responsible for error threshold bounds checking. ”h]”(hŒterm”“”)�”}”(hŒERROR_COUNTER:”h]”hŒERROR_COUNTER:”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KPhjnubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hhh]”(j)�”}”(hŒ-Currently, only error counters are supported.”h]”hà)�”}”(hj�h]”hŒ-Currently, only error counters are supported.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K@hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hŒtThe driver must implement the query_error_counter() callback to provide the name and the value of the error counter.”h]”hà)�”}”(hŒtThe driver must implement the query_error_counter() callback to provide the name and the value of the error counter.”h]”hŒtThe driver must implement the query_error_counter() callback to provide the name and the value of the error counter.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KAhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hŒ[The driver must provide a error_counter_range.last value informing the last valid error ID.”h]”hà)�”}”(hŒ[The driver must provide a error_counter_range.last value informing the last valid error ID.”h]”hŒ[The driver must provide a error_counter_range.last value informing the last valid error ID.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KChj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hŒ\The driver can provide a error_counter_range.first value informing the first valid error ID.”h]”hà)�”}”(hŒ\The driver can provide a error_counter_range.first value informing the first valid error ID.”h]”hŒ\The driver can provide a error_counter_range.first value informing the first valid error ID.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KEhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hŒÏThe error counters in the driver doesn't need to be contiguous, but the driver must return -ENOENT to the query_error_counter as an indication that the ID should be skipped and not listed in the netlink API.”h]”hà)�”}”(hŒÏThe error counters in the driver doesn't need to be contiguous, but the driver must return -ENOENT to the query_error_counter as an indication that the ID should be skipped and not listed in the netlink API.”h]”hŒÑThe error counters in the driver doesn’t need to be contiguous, but the driver must return -ENOENT to the query_error_counter as an indication that the ID should be skipped and not listed in the netlink API.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KGhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hX|The driver can optionally implement query_error_threshold() and set_error_threshold() callbacks to facilitate getting/setting error threshold of the counter. Threshold in RAS context means the number of errors the hardware is expected to accumulate before it raises them to software. This is to have a fine grained control over error notifications that are raised by the hardware.”h]”hà)�”}”(hX|The driver can optionally implement query_error_threshold() and set_error_threshold() callbacks to facilitate getting/setting error threshold of the counter. Threshold in RAS context means the number of errors the hardware is expected to accumulate before it raises them to software. This is to have a fine grained control over error notifications that are raised by the hardware.”h]”hX|The driver can optionally implement query_error_threshold() and set_error_threshold() callbacks to facilitate getting/setting error threshold of the counter. Threshold in RAS context means the number of errors the hardware is expected to accumulate before it raises them to software. This is to have a fine grained control over error notifications that are raised by the hardware.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KJhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubj)�”}”(hŒ?The driver is responsible for error threshold bounds checking. ”h]”hà)�”}”(hŒ>The driver is responsible for error threshold bounds checking.”h]”hŒ>The driver is responsible for error threshold bounds checking.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‚h´KPhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”j‚Œ+”uh1hýh³jœh´K@hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j‚h´KPhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubah}”(h]”h ]”h"]”h$]”h&]”j‚jPuh1hýh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K?hjåh²hubhà)�”}”(hŒNetlink handlers:”h]”hŒNetlink handlers:”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KRhjåh²hubhþ)�”}”(hhh]”(j)�”}”(hŒ_drm_ras_nl_list_nodes_dumpit(): Implements the LIST_NODES operation, iterating over the xarray.”h]”hà)�”}”(hŒ_drm_ras_nl_list_nodes_dumpit(): Implements the LIST_NODES operation, iterating over the xarray.”h]”hŒ_drm_ras_nl_list_nodes_dumpit(): Implements the LIST_NODES operation, iterating over the xarray.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KThjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hŒ…drm_ras_nl_get_error_counter_dumpit(): Implements the GET_ERROR_COUNTER dumpit operation, fetching all counters from a specific node.”h]”hà)�”}”(hŒ…drm_ras_nl_get_error_counter_dumpit(): Implements the GET_ERROR_COUNTER dumpit operation, fetching all counters from a specific node.”h]”hŒ…drm_ras_nl_get_error_counter_dumpit(): Implements the GET_ERROR_COUNTER dumpit operation, fetching all counters from a specific node.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KVhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hŒ„drm_ras_nl_get_error_counter_doit(): Implements the GET_ERROR_COUNTER doit operation, fetching a counter value from a specific node.”h]”hà)�”}”(hŒ„drm_ras_nl_get_error_counter_doit(): Implements the GET_ERROR_COUNTER doit operation, fetching a counter value from a specific node.”h]”hŒ„drm_ras_nl_get_error_counter_doit(): Implements the GET_ERROR_COUNTER doit operation, fetching a counter value from a specific node.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KXhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hŒˆdrm_ras_nl_clear_error_counter_doit(): Implements the CLEAR_ERROR_COUNTER doit operation, clearing a counter value from a specific node.”h]”hà)�”}”(hŒˆdrm_ras_nl_clear_error_counter_doit(): Implements the CLEAR_ERROR_COUNTER doit operation, clearing a counter value from a specific node.”h]”hŒˆdrm_ras_nl_clear_error_counter_doit(): Implements the CLEAR_ERROR_COUNTER doit operation, clearing a counter value from a specific node.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´KZhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hŒ�drm_ras_nl_get_error_threshold_doit(): Implements the GET_ERROR_THRESHOLD doit operation, fetching the error threshold of a specific counter.”h]”hà)�”}”(hŒ�drm_ras_nl_get_error_threshold_doit(): Implements the GET_ERROR_THRESHOLD doit operation, fetching the error threshold of a specific counter.”h]”hŒ�drm_ras_nl_get_error_threshold_doit(): Implements the GET_ERROR_THRESHOLD doit operation, fetching the error threshold of a specific counter.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K\hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hŒŽdrm_ras_nl_set_error_threshold_doit(): Implements the SET_ERROR_THRESHOLD doit operation, setting the error threshold of a specific counter. ”h]”hà)�”}”(hŒŒdrm_ras_nl_set_error_threshold_doit(): Implements the SET_ERROR_THRESHOLD doit operation, setting the error threshold of a specific counter.”h]”hŒŒdrm_ras_nl_set_error_threshold_doit(): Implements the SET_ERROR_THRESHOLD doit operation, setting the error threshold of a specific counter.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:41: ./drivers/gpu/drm/drm_ras.c”h´K^hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”j‚jPuh1hýh³j‚h´KThjåh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ)drm_ras_nl_list_nodes_dumpit (C function)”Œc.drm_ras_nl_list_nodes_dumpit”hNt”auh1j hjåh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒSint drm_ras_nl_list_nodes_dumpit (struct sk_buff *skb, struct netlink_callback *cb)”h]”hŒdesc_signature_line”“”)�”}”(hŒRint drm_ras_nl_list_nodes_dumpit(struct sk_buff *skb, struct netlink_callback *cb)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j.hj*h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´KoubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j@hj*h²hh³j?h´KoubhŒ desc_name”“”)�”}”(hŒdrm_ras_nl_list_nodes_dumpit”h]”hŒ desc_sig_name”“”)�”}”(hŒdrm_ras_nl_list_nodes_dumpit”h]”hŒdrm_ras_nl_list_nodes_dumpit”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jWhjSubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jQhj*h²hh³j?h´KoubhŒdesc_parameterlist”“”)�”}”(hŒ2(struct sk_buff *skb, struct netlink_callback *cb)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct sk_buff *skb”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j|hjxubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjxubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jºŒ ASTIdentifier”“”)�”}”jµj[sbŒc.drm_ras_nl_list_nodes_dumpit”†”asbuh1hhjxubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjxubhŒdesc_sig_punctuation”“”)�”}”(hjƒh]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÕhjxubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjrubjw)�”}”(hŒstruct netlink_callback *cb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjúubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjúubh)�”}”(hhh]”jX)�”}”(hŒnetlink_callback”h]”hŒnetlink_callback”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jŒmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÃŒc.drm_ras_nl_list_nodes_dumpit”†”asbuh1hhjúubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjúubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjúubjX)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjrubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphj*h²hh³j?h´Koubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j(Œsphinx_line_type”Œ declarator”hj$h²hh³j?h´Koubah}”(h]”jah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j"h³j?h´Kohjh²hubhŒ desc_content”“”)�”}”(hhh]”hà)�”}”(hŒDump all registered RAS nodes”h]”hŒDump all registered RAS nodes”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kohj†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjh²hh³j?h´Koubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”Œdomain”j³Œobjtype”j¡Œdesctype”j¡Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhjåh³Nh´NubhŒ container”“”)�”}”(hXŸ**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct netlink_callback *cb`` Callback context for multi-part dumps **Description** Iterates over all registered RAS nodes in the global xarray and appends their attributes (ID, name, type) to the given netlink message buffer. Uses **cb->ctx** to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation. **Return** 0 if all nodes fit in **skb**, number of bytes added to **skb** if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj³h]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kshj­ubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”hŒliteral”“”)�”}”(hjÔh]”hŒstruct sk_buff *skb”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´KphjÎubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jëh´Kphjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jëh´KphjËubjm)�”}”(hŒF``struct netlink_callback *cb`` Callback context for multi-part dumps ”h]”(js)�”}”(hŒ``struct netlink_callback *cb``”h]”j×)�”}”(hjh]”hŒstruct netlink_callback *cb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kqhj ubj„)�”}”(hhh]”hà)�”}”(hŒ%Callback context for multi-part dumps”h]”hŒ%Callback context for multi-part dumps”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j$h´Kqhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j$h´KqhjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj­ubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hjJh]”hŒ Description”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kshj­ubhà)�”}”(hXUIterates over all registered RAS nodes in the global xarray and appends their attributes (ID, name, type) to the given netlink message buffer. Uses **cb->ctx** to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation.”h]”(hŒ”Iterates over all registered RAS nodes in the global xarray and appends their attributes (ID, name, type) to the given netlink message buffer. Uses ”…”�”}”(hj`h²hh³Nh´Nubj¶)�”}”(hŒ **cb->ctx**”h]”hŒcb->ctx”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj`ubhŒ¶ to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Krhj­ubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hjƒh]”hŒReturn”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kxhj­ubhà)�”}”(hŒ 0 if all nodes fit in **skb**, number of bytes added to **skb** if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”h]”(hŒ0 if all nodes fit in ”…”�”}”(hj™h²hh³Nh´Nubj¶)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj™ubhŒ, number of bytes added to ”…”�”}”(hj™h²hh³Nh´Nubj¶)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj™ubhŒa if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Kyhj­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ0drm_ras_nl_get_error_counter_dumpit (C function)”Œ%c.drm_ras_nl_get_error_counter_dumpit”hNt”auh1j hjåh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒZint drm_ras_nl_get_error_counter_dumpit (struct sk_buff *skb, struct netlink_callback *cb)”h]”j))�”}”(hŒYint drm_ras_nl_get_error_counter_dumpit(struct sk_buff *skb, struct netlink_callback *cb)”h]”(j/)�”}”(hŒint”h]”hŒint”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjèh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M³ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjèh²hh³júh´M³ubjR)�”}”(hŒ#drm_ras_nl_get_error_counter_dumpit”h]”jX)�”}”(hŒ#drm_ras_nl_get_error_counter_dumpit”h]”hŒ#drm_ras_nl_get_error_counter_dumpit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj ubah}”(h]”h ]”(jkjleh"]”h$]”h&]”hÅhÆuh1jQhjèh²hh³júh´M³ubjq)�”}”(hŒ2(struct sk_buff *skb, struct netlink_callback *cb)”h]”(jw)�”}”(hŒstruct sk_buff *skb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hj% ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj% ubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjD ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jI Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÂ)�”}”jµj sbŒ%c.drm_ras_nl_get_error_counter_dumpit”†”asbuh1hhj% ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj% ubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhj% ubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj% ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj! ubjw)�”}”(hŒstruct netlink_callback *cb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hj— ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj— ubh)�”}”(hhh]”jX)�”}”(hŒnetlink_callback”h]”hŒnetlink_callback”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”j» Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jc Œ%c.drm_ras_nl_get_error_counter_dumpit”†”asbuh1hhj— ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj— ubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhj— ubjX)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj— ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj! ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphjèh²hh³júh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjvˆuh1j(jwjxhjäh²hh³júh´M³ubah}”(h]”jßah ]”(j|j}eh"]”h$]”h&]”j�ˆj‚)jƒhuh1j"h³júh´M³hjáh²hubj…)�”}”(hhh]”hà)�”}”(hŒDump all Error Counters”h]”hŒDump all Error Counters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M³hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjáh²hh³júh´M³ubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”j¥j³j¦j4 j§j4 j¨‰j©‰jª‰uh1jh²hhjåh³Nh´Nubj¬)�”}”(hX–**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct netlink_callback *cb`` Callback context for multi-part dumps **Description** Iterates over all error counters in a given Node and appends their attributes (ID, name, value) to the given netlink message buffer. Uses **cb->ctx** to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation. **Return** 0 if all errors fit in **skb**, number of bytes added to **skb** if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hj> h]”hŒ Parameters”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M·hj8 ubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”j×)�”}”(hj] h]”hŒstruct sk_buff *skb”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M´hjW ubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jr h´M´hjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jr h´M´hjT ubjm)�”}”(hŒF``struct netlink_callback *cb`` Callback context for multi-part dumps ”h]”(js)�”}”(hŒ``struct netlink_callback *cb``”h]”j×)�”}”(hj– h]”hŒstruct netlink_callback *cb”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mµhj� ubj„)�”}”(hhh]”hà)�”}”(hŒ%Callback context for multi-part dumps”h]”hŒ%Callback context for multi-part dumps”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j« h´Mµhj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j« h´MµhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj8 ubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hjÑ h]”hŒ Description”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M·hj8 ubhà)�”}”(hXKIterates over all error counters in a given Node and appends their attributes (ID, name, value) to the given netlink message buffer. Uses **cb->ctx** to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation.”h]”(hŒŠIterates over all error counters in a given Node and appends their attributes (ID, name, value) to the given netlink message buffer. Uses ”…”�”}”(hjç h²hh³Nh´Nubj¶)�”}”(hŒ **cb->ctx**”h]”hŒcb->ctx”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjç ubhŒ¶ to track progress in case the message buffer fills up, allowing multi-part dump support. On buffer overflow, updates the context to resume from the last node on the next invocation.”…”�”}”(hjç h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M¶hj8 ubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M¼hj8 ubhà)�”}”(hŒ¡0 if all errors fit in **skb**, number of bytes added to **skb** if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”h]”(hŒ0 if all errors fit in ”…”�”}”(hj h²hh³Nh´Nubj¶)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj ubhŒ, number of bytes added to ”…”�”}”(hj h²hh³Nh´Nubj¶)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj ubhŒa if the buffer filled up (requires multi-part continuation), or a negative error code on failure.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M½hj8 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ.drm_ras_nl_get_error_counter_doit (C function)”Œ#c.drm_ras_nl_get_error_counter_doit”hNt”auh1j hjåh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒSint drm_ras_nl_get_error_counter_doit (struct sk_buff *skb, struct genl_info *info)”h]”j))�”}”(hŒRint drm_ras_nl_get_error_counter_doit(struct sk_buff *skb, struct genl_info *info)”h]”(j/)�”}”(hŒint”h]”hŒint”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjo h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MúubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjo h²hh³j� h´MúubjR)�”}”(hŒ!drm_ras_nl_get_error_counter_doit”h]”jX)�”}”(hŒ!drm_ras_nl_get_error_counter_doit”h]”hŒ!drm_ras_nl_get_error_counter_doit”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj� ubah}”(h]”h ]”(jkjleh"]”h$]”h&]”hÅhÆuh1jQhjo h²hh³j� h´Múubjq)�”}”(hŒ-(struct sk_buff *skb, struct genl_info *info)”h]”(jw)�”}”(hŒstruct sk_buff *skb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hj¬ ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¬ ubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjË ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jÐ Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÂ)�”}”jµj– sbŒ#c.drm_ras_nl_get_error_counter_doit”†”asbuh1hhj¬ ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj¬ ubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhj¬ ubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj¨ ubjw)�”}”(hŒstruct genl_info *info”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj ubh)�”}”(hhh]”jX)�”}”(hŒ genl_info”h]”hŒ genl_info”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj= ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jB Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jê Œ#c.drm_ras_nl_get_error_counter_doit”†”asbuh1hhj ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hj ubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhj ubjX)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphjo h²hh³j� h´Múubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjvˆuh1j(jwjxhjk h²hh³j� h´Múubah}”(h]”jf ah ]”(j|j}eh"]”h$]”h&]”j�ˆj‚)jƒhuh1j"h³j� h´Múhjh h²hubj…)�”}”(hhh]”hà)�”}”(hŒ!Query an error counter of an node”h]”hŒ!Query an error counter of an node”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Múhj  h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjh h²hh³j� h´Múubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”j¥j³j¦j» j§j» j¨‰j©‰jª‰uh1jh²hhjåh³Nh´Nubj¬)�”}”(hX¯**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct genl_info *info`` Generic Netlink info containing attributes of the request **Description** Extracts the node ID and error ID from the netlink attributes and retrieves the current value of the corresponding error counter. Sends the result back to the requesting user via the standard Genl reply. **Return** 0 on success, or negative errno on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjÅ h]”hŒ Parameters”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mþhj¿ ubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”j×)�”}”(hjä h]”hŒstruct sk_buff *skb”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MûhjÞ ubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jù h´Mûhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jù h´MûhjÛ ubjm)�”}”(hŒU``struct genl_info *info`` Generic Netlink info containing attributes of the request ”h]”(js)�”}”(hŒ``struct genl_info *info``”h]”j×)�”}”(hj h]”hŒstruct genl_info *info”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mühj ubj„)�”}”(hhh]”hà)�”}”(hŒ9Generic Netlink info containing attributes of the request”h]”hŒ9Generic Netlink info containing attributes of the request”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j2 h´Mühj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j2 h´MühjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj¿ ubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hjX h]”hŒ Description”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mþhj¿ ubhà)�”}”(hŒËExtracts the node ID and error ID from the netlink attributes and retrieves the current value of the corresponding error counter. Sends the result back to the requesting user via the standard Genl reply.”h]”hŒËExtracts the node ID and error ID from the netlink attributes and retrieves the current value of the corresponding error counter. Sends the result back to the requesting user via the standard Genl reply.”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mýhj¿ ubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hj h]”hŒReturn”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhj¿ ubhà)�”}”(hŒ+0 on success, or negative errno on failure.”h]”hŒ+0 on success, or negative errno on failure.”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhj¿ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ0drm_ras_nl_clear_error_counter_doit (C function)”Œ%c.drm_ras_nl_clear_error_counter_doit”hNt”auh1j hjåh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒUint drm_ras_nl_clear_error_counter_doit (struct sk_buff *skb, struct genl_info *info)”h]”j))�”}”(hŒTint drm_ras_nl_clear_error_counter_doit(struct sk_buff *skb, struct genl_info *info)”h]”(j/)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjÀ h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÀ h²hh³jÒ h´MubjR)�”}”(hŒ#drm_ras_nl_clear_error_counter_doit”h]”jX)�”}”(hŒ#drm_ras_nl_clear_error_counter_doit”h]”hŒ#drm_ras_nl_clear_error_counter_doit”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjá ubah}”(h]”h ]”(jkjleh"]”h$]”h&]”hÅhÆuh1jQhjÀ h²hh³jÒ h´Mubjq)�”}”(hŒ-(struct sk_buff *skb, struct genl_info *info)”h]”(jw)�”}”(hŒstruct sk_buff *skb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjý ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjý ubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”j!Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÂ)�”}”jµjç sbŒ%c.drm_ras_nl_clear_error_counter_doit”†”asbuh1hhjý ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjý ubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjý ubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjý ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjù ubjw)�”}”(hŒstruct genl_info *info”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjoubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjoubh)�”}”(hhh]”jX)�”}”(hŒ genl_info”h]”hŒ genl_info”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”j“Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”j;Œ%c.drm_ras_nl_clear_error_counter_doit”†”asbuh1hhjoubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjoubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjoubjX)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjù ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphjÀ h²hh³jÒ h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjvˆuh1j(jwjxhj¼ h²hh³jÒ h´Mubah}”(h]”j· ah ]”(j|j}eh"]”h$]”h&]”j�ˆj‚)jƒhuh1j"h³jÒ h´Mhj¹ h²hubj…)�”}”(hhh]”hà)�”}”(hŒ Clear an error counter of a node”h]”hŒ Clear an error counter of a node”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj¹ h²hh³jÒ h´Mubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”j¥j³j¦j j§j j¨‰j©‰jª‰uh1jh²hhjåh³Nh´Nubj¬)�”}”(hX?**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct genl_info *info`` Generic Netlink info containing attributes of the request **Description** Extracts the node ID and error ID from the netlink attributes and clears the current value. **Return** 0 on success, or negative errno on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”j×)�”}”(hj5h]”hŒstruct sk_buff *skb”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhj/ubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jJh´MhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jJh´Mhj,ubjm)�”}”(hŒU``struct genl_info *info`` Generic Netlink info containing attributes of the request ”h]”(js)�”}”(hŒ``struct genl_info *info``”h]”j×)�”}”(hjnh]”hŒstruct genl_info *info”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjhubj„)�”}”(hhh]”hà)�”}”(hŒ9Generic Netlink info containing attributes of the request”h]”hŒ9Generic Netlink info containing attributes of the request”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jƒh´Mhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jƒh´Mhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hj©h]”hŒ Description”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjubhà)�”}”(hŒ[Extracts the node ID and error ID from the netlink attributes and clears the current value.”h]”hŒ[Extracts the node ID and error ID from the netlink attributes and clears the current value.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hjÐh]”hŒReturn”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjubhà)�”}”(hŒ+0 on success, or negative errno on failure.”h]”hŒ+0 on success, or negative errno on failure.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´Mhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ0drm_ras_nl_get_error_threshold_doit (C function)”Œ%c.drm_ras_nl_get_error_threshold_doit”hNt”auh1j hjåh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒUint drm_ras_nl_get_error_threshold_doit (struct sk_buff *skb, struct genl_info *info)”h]”j))�”}”(hŒTint drm_ras_nl_get_error_threshold_doit(struct sk_buff *skb, struct genl_info *info)”h]”(j/)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M8ubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjh²hh³j#h´M8ubjR)�”}”(hŒ#drm_ras_nl_get_error_threshold_doit”h]”jX)�”}”(hŒ#drm_ras_nl_get_error_threshold_doit”h]”hŒ#drm_ras_nl_get_error_threshold_doit”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj2ubah}”(h]”h ]”(jkjleh"]”h$]”h&]”hÅhÆuh1jQhjh²hh³j#h´M8ubjq)�”}”(hŒ-(struct sk_buff *skb, struct genl_info *info)”h]”(jw)�”}”(hŒstruct sk_buff *skb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjNubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjNubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jrŒmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÂ)�”}”jµj8sbŒ%c.drm_ras_nl_get_error_threshold_doit”†”asbuh1hhjNubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjNubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjNubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjJubjw)�”}”(hŒstruct genl_info *info”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjÀubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÀubh)�”}”(hhh]”jX)�”}”(hŒ genl_info”h]”hŒ genl_info”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jäŒmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jŒŒ%c.drm_ras_nl_get_error_threshold_doit”†”asbuh1hhjÀubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjÀubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjÀubjX)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhjJubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphjh²hh³j#h´M8ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjvˆuh1j(jwjxhj h²hh³j#h´M8ubah}”(h]”jah ]”(j|j}eh"]”h$]”h&]”j�ˆj‚)jƒhuh1j"h³j#h´M8hj h²hubj…)�”}”(hhh]”hà)�”}”(hŒ"Query error threshold of a counter”h]”hŒ"Query error threshold of a counter”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M8hjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj h²hh³j#h´M8ubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”j¥j³j¦j]j§j]j¨‰j©‰jª‰uh1jh²hhjåh³Nh´Nubj¬)�”}”(hX«**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct genl_info *info`` Generic Netlink info containing attributes of the request **Description** Extracts the Node ID and Error ID from the netlink attributes and retrieves the error threshold of the corresponding counter. Sends the result back to the requesting user via the standard Genl reply. **Return** 0 on success, or negative errno on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M<hjaubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”j×)�”}”(hj†h]”hŒstruct sk_buff *skb”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M9hj€ubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j›h´M9hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j›h´M9hj}ubjm)�”}”(hŒU``struct genl_info *info`` Generic Netlink info containing attributes of the request ”•.hh]”(js)�”}”(hŒ``struct genl_info *info``”h]”j×)�”}”(hj¿h]”hŒstruct genl_info *info”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M:hj¹ubj„)�”}”(hhh]”hà)�”}”(hŒ9Generic Netlink info containing attributes of the request”h]”hŒ9Generic Netlink info containing attributes of the request”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÔh´M:hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jÔh´M:hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjaubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hjúh]”hŒ Description”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M<hjaubhà)�”}”(hŒÇExtracts the Node ID and Error ID from the netlink attributes and retrieves the error threshold of the corresponding counter. Sends the result back to the requesting user via the standard Genl reply.”h]”hŒÇExtracts the Node ID and Error ID from the netlink attributes and retrieves the error threshold of the corresponding counter. Sends the result back to the requesting user via the standard Genl reply.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M;hjaubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hj!h]”hŒReturn”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M?hjaubhà)�”}”(hŒ+0 on success, or negative errno on failure.”h]”hŒ+0 on success, or negative errno on failure.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´M@hjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ0drm_ras_nl_set_error_threshold_doit (C function)”Œ%c.drm_ras_nl_set_error_threshold_doit”hNt”auh1j hjåh²hh³Nh´Nubj)�”}”(hhh]”(j#)�”}”(hŒUint drm_ras_nl_set_error_threshold_doit (struct sk_buff *skb, struct genl_info *info)”h]”j))�”}”(hŒTint drm_ras_nl_set_error_threshold_doit(struct sk_buff *skb, struct genl_info *info)”h]”(j/)�”}”(hŒint”h]”hŒint”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j;ah"]”h$]”h&]”uh1j.hjbh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MRubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjbh²hh³jth´MRubjR)�”}”(hŒ#drm_ras_nl_set_error_threshold_doit”h]”jX)�”}”(hŒ#drm_ras_nl_set_error_threshold_doit”h]”hŒ#drm_ras_nl_set_error_threshold_doit”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjƒubah}”(h]”h ]”(jkjleh"]”h$]”h&]”hÅhÆuh1jQhjbh²hh³jth´MRubjq)�”}”(hŒ-(struct sk_buff *skb, struct genl_info *info)”h]”(jw)�”}”(hŒstruct sk_buff *skb”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjŸubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŸubh)�”}”(hhh]”jX)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”jÃŒmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÂ)�”}”jµj‰sbŒ%c.drm_ras_nl_set_error_threshold_doit”†”asbuh1hhjŸubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjŸubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjŸubjX)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj›ubjw)�”}”(hŒstruct genl_info *info”h]”(j})�”}”(hj€h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‰ah"]”h$]”h&]”uh1j|hjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubh)�”}”(hhh]”jX)�”}”(hŒ genl_info”h]”hŒ genl_info”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j³Œreftype”jµŒ reftarget”j5Œmodname”NŒ classname”Nj¹j¼)�”}”j¿]”jÝŒ%c.drm_ras_nl_set_error_threshold_doit”†”asbuh1hhjubjA)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jMah"]”h$]”h&]”uh1j@hjubjÖ)�”}”(hjƒh]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jáah"]”h$]”h&]”uh1jÕhjubjX)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jdah"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jvhj›ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jphjbh²hh³jth´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjvˆuh1j(jwjxhj^h²hh³jth´MRubah}”(h]”jYah ]”(j|j}eh"]”h$]”h&]”j�ˆj‚)jƒhuh1j"h³jth´MRhj[h²hubj…)�”}”(hhh]”hà)�”}”(hŒ Set error threshold of a counter”h]”hŒ Set error threshold of a counter”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MRhj“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj[h²hh³jth´MRubeh}”(h]”h ]”(j³Œfunction”eh"]”h$]”h&]”j¥j³j¦j®j§j®j¨‰j©‰jª‰uh1jh²hhjåh³Nh´Nubj¬)�”}”(hXg**Parameters** ``struct sk_buff *skb`` Netlink message buffer ``struct genl_info *info`` Generic Netlink info containing attributes of the request **Description** Extracts the Node ID, Error ID and threshold from the netlink attributes and sets the error threshold of the corresponding counter. **Return** 0 on success, or negative errno on failure.”h]”(hà)�”}”(hŒ**Parameters**”h]”j¶)�”}”(hj¸h]”hŒ Parameters”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MVhj²ubjh)�”}”(hhh]”(jm)�”}”(hŒ/``struct sk_buff *skb`` Netlink message buffer ”h]”(js)�”}”(hŒ``struct sk_buff *skb``”h]”j×)�”}”(hj×h]”hŒstruct sk_buff *skb”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MShjÑubj„)�”}”(hhh]”hà)�”}”(hŒNetlink message buffer”h]”hŒNetlink message buffer”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jìh´MShjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jìh´MShjÎubjm)�”}”(hŒU``struct genl_info *info`` Generic Netlink info containing attributes of the request ”h]”(js)�”}”(hŒ``struct genl_info *info``”h]”j×)�”}”(hjh]”hŒstruct genl_info *info”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MThj ubj„)�”}”(hhh]”hà)�”}”(hŒ9Generic Netlink info containing attributes of the request”h]”hŒ9Generic Netlink info containing attributes of the request”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j%h´MThj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j%h´MThjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj²ubhà)�”}”(hŒ**Description**”h]”j¶)�”}”(hjKh]”hŒ Description”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MVhj²ubhà)�”}”(hŒƒExtracts the Node ID, Error ID and threshold from the netlink attributes and sets the error threshold of the corresponding counter.”h]”hŒƒExtracts the Node ID, Error ID and threshold from the netlink attributes and sets the error threshold of the corresponding counter.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MUhj²ubhà)�”}”(hŒ **Return**”h]”j¶)�”}”(hjrh]”hŒReturn”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MXhj²ubhà)�”}”(hŒ+0 on success, or negative errno on failure.”h]”hŒ+0 on success, or negative errno on failure.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒU/var/lib/git/docbuild/linux/Documentation/gpu/drm-ras:43: ./drivers/gpu/drm/drm_ras.c”h´MYhj²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j«hjåh²hh³Nh´Nubeh}”(h]”jïah ]”h"]”Œnode management”ah$]”h&]”uh1hÈhj’h²hh³hÇh´K'ubeh}”(h]”jÐah ]”h"]”Œnodes”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒGeneric Netlink Usage”h]”hŒGeneric Netlink Usage”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjuh1hÍhj¬h²hh³hÇh´K/ubhà)�”}”(hŒaThe interface is implemented as a Generic Netlink family named ``drm-ras``. User space tools can:”h]”(hŒ?The interface is implemented as a Generic Netlink family named ”…”�”}”(hj½h²hh³Nh´Nubj×)�”}”(hŒ ``drm-ras``”h]”hŒdrm-ras”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj½ubhŒ. User space tools can:”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K1hj¬h²hubhþ)�”}”(hhh]”(j)�”}”(hŒ6List registered nodes with the ``list-nodes`` command.”h]”hà)�”}”(hjâh]”(hŒList registered nodes with the ”…”�”}”(hjäh²hh³Nh´Nubj×)�”}”(hŒ``list-nodes``”h]”hŒ list-nodes”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjäubhŒ command.”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K4hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubj)�”}”(hŒjList all error counters in an node with the ``get-error-counter`` command with ``node-id`` as a parameter.”h]”hà)�”}”(hŒjList all error counters in an node with the ``get-error-counter`` command with ``node-id`` as a parameter.”h]”(hŒ,List all error counters in an node with the ”…”�”}”(hj h²hh³Nh´Nubj×)�”}”(hŒ``get-error-counter``”h]”hŒget-error-counter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubhŒ command with ”…”�”}”(hj h²hh³Nh´Nubj×)�”}”(hŒ ``node-id``”h]”hŒnode-id”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubhŒ as a parameter.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K5hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubj)�”}”(hŒ‚Query specific error counter values with the ``get-error-counter`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”hà)�”}”(hŒ‚Query specific error counter values with the ``get-error-counter`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”(hŒ-Query specific error counter values with the ”…”�”}”(hjIh²hh³Nh´Nubj×)�”}”(hŒ``get-error-counter``”h]”hŒget-error-counter”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjIubhŒ command, using both ”…”�”}”(hjIh²hh³Nh´Nubj×)�”}”(hŒ ``node-id``”h]”hŒnode-id”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjIubhŒ and ”…”�”}”(hjIh²hh³Nh´Nubj×)�”}”(hŒ ``error-id``”h]”hŒerror-id”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjIubhŒ as parameters.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K7hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubj)�”}”(hŒ~Clear specific error counters with the ``clear-error-counter`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”hà)�”}”(hŒ~Clear specific error counters with the ``clear-error-counter`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”(hŒ'Clear specific error counters with the ”…”�”}”(hj—h²hh³Nh´Nubj×)�”}”(hŒ``clear-error-counter``”h]”hŒclear-error-counter”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj—ubhŒ command, using both ”…”�”}”(hj—h²hh³Nh´Nubj×)�”}”(hŒ ``node-id``”h]”hŒnode-id”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj—ubhŒ and ”…”�”}”(hj—h²hh³Nh´Nubj×)�”}”(hŒ ``error-id``”h]”hŒerror-id”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj—ubhŒ as parameters.”…”�”}”(hj—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K9hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubj)�”}”(hŒMSubscribe to the ``error-report`` multicast group to receive ``error-event``.”h]”hà)�”}”(hjãh]”(hŒSubscribe to the ”…”�”}”(hjåh²hh³Nh´Nubj×)�”}”(hŒ``error-report``”h]”hŒ error-report”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjåubhŒ multicast group to receive ”…”�”}”(hjåh²hh³Nh´Nubj×)�”}”(hŒ``error-event``”h]”hŒ error-event”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjåubhŒ.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K;hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubj)�”}”(hŒ‡Query specific error counter threshold with the ``get-error-threshold`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”hà)�”}”(hŒ‡Query specific error counter threshold with the ``get-error-threshold`` command, using both ``node-id`` and ``error-id`` as parameters.”h]”(hŒ0Query specific error counter threshold with the ”…”�”}”(hj h²hh³Nh´Nubj×)�”}”(hŒ``get-error-threshold``”h]”hŒget-error-threshold”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubhŒ command, using both ”…”�”}”(hj h²hh³Nh´Nubj×)�”}”(hŒ ``node-id``”h]”hŒnode-id”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj×)�”}”(hŒ ``error-id``”h]”hŒerror-id”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj ubhŒ as parameters.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Khjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j‚jƒuh1hýh³hÇh´K4hj¬h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒYAML-based Interface”h]”hŒYAML-based Interface”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj6uh1hÍhjÐh²hh³hÇh´KBubhà)�”}”(hŒ_The interface is described in a YAML specification ``Documentation/netlink/specs/drm_ras.yaml``”h]”(hŒ3The interface is described in a YAML specification ”…”�”}”(hjáh²hh³Nh´Nubj×)�”}”(hŒ,``Documentation/netlink/specs/drm_ras.yaml``”h]”hŒ(Documentation/netlink/specs/drm_ras.yaml”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KDhjÐh²hubhà)�”}”(hŒŸThis YAML is used to auto-generate user space bindings via ``tools/net/ynl/pyynl/ynl_gen_c.py``, and drives the structure of netlink attributes and operations.”h]”(hŒ;This YAML is used to auto-generate user space bindings via ”…”�”}”(hjýh²hh³Nh´Nubj×)�”}”(hŒ$``tools/net/ynl/pyynl/ynl_gen_c.py``”h]”hŒ tools/net/ynl/pyynl/ynl_gen_c.py”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhjýubhŒ@, and drives the structure of netlink attributes and operations.”…”�”}”(hjýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KFhjÐh²hubeh}”(h]”j<ah ]”h"]”Œyaml-based interface”ah$]”h&]”uh1hÈhj¬h²hh³hÇh´KBubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Usage Notes”h]”hŒ Usage Notes”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjXuh1hÍhj$h²hh³hÇh´KKubhþ)�”}”(hhh]”(j)�”}”(hŒ:User space must first enumerate nodes to obtain their IDs.”h]”hà)�”}”(hj:h]”hŒ:User space must first enumerate nodes to obtain their IDs.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KMhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5h²hh³hÇh´Nubj)�”}”(hŒSNode IDs or Node names can be used for all further queries, such as error counters.”h]”hà)�”}”(hjQh]”hŒSNode IDs or Node names can be used for all further queries, such as error counters.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KNhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5h²hh³hÇh´Nubj)�”}”(hŒCError counters can be queried by either the Error ID or Error name.”h]”hà)�”}”(hjhh]”hŒCError counters can be queried by either the Error ID or Error name.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KOhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5h²hh³hÇh´Nubj)�”}”(hŒZQuery Parameters should be defined as part of the uAPI to ensure user interface stability.”h]”hà)�”}”(hjh]”hŒZQuery Parameters should be defined as part of the uAPI to ensure user interface stability.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KPhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5h²hh³hÇh´Nubj)�”}”(hŒ\The interface supports future extension by adding new node types and additional attributes. ”h]”hà)�”}”(hŒ[The interface supports future extension by adding new node types and additional attributes.”h]”hŒ[The interface supports future extension by adding new node types and additional attributes.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KQhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j‚jƒuh1hýh³hÇh´KMhj$h²hubhà)�”}”(hŒExample: List nodes using ynl”h]”hŒExample: List nodes using ynl”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KThj$h²hubhŒ literal_block”“”)�”}”(hXsudo ynl --family drm_ras --dump list-nodes [{'device-name': '0000:03:00.0', 'node-id': 0, 'node-name': 'correctable-errors', 'node-type': 'error-counter'}, {'device-name': '0000:03:00.0', 'node-id': 1, 'node-name': 'uncorrectable-errors', 'node-type': 'error-counter'}]”h]”hXsudo ynl --family drm_ras --dump list-nodes [{'device-name': '0000:03:00.0', 'node-id': 0, 'node-name': 'correctable-errors', 'node-type': 'error-counter'}, {'device-name': '0000:03:00.0', 'node-id': 1, 'node-name': 'uncorrectable-errors', 'node-type': 'error-counter'}]”…”�”}”hjÂsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œbash”Œhighlight_args”}”uh1jÀh³hÇh´KVhj$h²hubhà)�”}”(hŒ*Example: List all error counters using ynl”h]”hŒ*Example: List all error counters using ynl”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Kbhj$h²hubjÁ)�”}”(hŒÊsudo ynl --family drm_ras --dump get-error-counter --json '{"node-id":0}' [{'error-id': 1, 'error-name': 'error_name1', 'error-value': 0}, {'error-id': 2, 'error-name': 'error_name2', 'error-value': 0}]”h]”hŒÊsudo ynl --family drm_ras --dump get-error-counter --json '{"node-id":0}' [{'error-id': 1, 'error-name': 'error_name1', 'error-value': 0}, {'error-id': 2, 'error-name': 'error_name2', 'error-value': 0}]”…”�”}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´Kdhj$h²hubhà)�”}”(hŒ0Example: Query an error counter for a given node”h]”hŒ0Example: Query an error counter for a given node”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Kjhj$h²hubjÁ)�”}”(hŒ”sudo ynl --family drm_ras --do get-error-counter --json '{"node-id":0, "error-id":1}' {'error-id': 1, 'error-name': 'error_name1', 'error-value': 0}”h]”hŒ”sudo ynl --family drm_ras --do get-error-counter --json '{"node-id":0, "error-id":1}' {'error-id': 1, 'error-name': 'error_name1', 'error-value': 0}”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´Klhj$h²hubhà)�”}”(hŒ0Example: Clear an error counter for a given node”h]”hŒ0Example: Clear an error counter for a given node”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Kqhj$h²hubjÁ)�”}”(hŒ\sudo ynl --family drm_ras --do clear-error-counter --json '{"node-id":0, "error-id":1}' None”h]”hŒ\sudo ynl --family drm_ras --do clear-error-counter --json '{"node-id":0, "error-id":1}' None”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´Kshj$h²hubhà)�”}”(hŒ6Example: Subscribe to ``error-report`` multicast group”h]”(hŒExample: Subscribe to ”…”�”}”(hj/h²hh³Nh´Nubj×)�”}”(hŒ``error-report``”h]”hŒ error-report”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhj/ubhŒ multicast group”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´Kxhj$h²hubjÁ)�”}”(hŒ@sudo ynl --family drm_ras --output-json --subscribe error-report”h]”hŒ@sudo ynl --family drm_ras --output-json --subscribe error-report”…”�”}”hjOsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´Kzhj$h²hubjÁ)�”}”(hŒð{ "name": "error-event", "msg": { "device-name": "0000:03:00.0", "node-id": 1, "node-name": "uncorrectable-errors", "error-id": 1, "error-name": "error_name1", "error-value": 1 } }”h]”hŒð{ "name": "error-event", "msg": { "device-name": "0000:03:00.0", "node-id": 1, "node-name": "uncorrectable-errors", "error-id": 1, "error-name": "error_name1", "error-value": 1 } }”…”�”}”hj_sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒjson”jÓ}”uh1jÀh³hÇh´K~hj$h²hubhà)�”}”(hŒ1Example: Query error threshold of a given counter”h]”hŒ1Example: Query error threshold of a given counter”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´KŒhj$h²hubjÁ)�”}”(hŒ›sudo ynl --family drm_ras --do get-error-threshold --json '{"node-id":0, "error-id":1}' {'error-id': 1, 'error-name': 'error_name1', 'error-threshold': 16}”h]”hŒ›sudo ynl --family drm_ras --do get-error-threshold --json '{"node-id":0, "error-id":1}' {'error-id': 1, 'error-name': 'error_name1', 'error-threshold': 16}”…”�”}”hj}sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´KŽhj$h²hubhà)�”}”(hŒ/Example: Set error threshold of a given counter”h]”hŒ/Example: Set error threshold of a given counter”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÇh´K“hj$h²hubjÁ)�”}”(hŒqsudo ynl --family drm_ras --do set-error-threshold --json '{"node-id":0, "error-id":1, "error-threshold":8}' None”h]”hŒqsudo ynl --family drm_ras --do set-error-threshold --json '{"node-id":0, "error-id":1, "error-threshold":8}' None”…”�”}”hj›sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjЉjÑŒbash”jÓ}”uh1jÀh³hÇh´K•hj$h²hubeh}”(h]”j^ah ]”h"]”Œ usage notes”ah$]”h&]”uh1hÈhj¬h²hh³hÇh´KKubeh}”(h]”jah ]”h"]”Œgeneric netlink usage”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K/ubeh}”(h]”j±ah ]”h"]”Œdrm ras over generic netlink”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jãŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j½j±j�j‹j©jÐj¢jïj¶jj!j<j¯j^uŒ nametypes”}”(j½‰j�‰j©‰j¢‰j¶‰j!‰j¯‰uh}”(j±hÊj‹j†jÐj’jïjåjj$jßjäjf jk j· j¼ jj jYj^jj¬j<jÐj^j$hÞj£jÊjÁjéjàjjj6j-jXjOuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jñKs…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.